1

我正在使用 Zenpy 客户端将 Zendesk ITSM API 集成到我的 python 库中。

对于使用 zenpy 客户端创建票证,我可以通过电子邮件 ID 设置票证报告人,但对于受让人我无法通过电子邮件 ID 设置受让人。

这是我到目前为止尝试过的代码。

ticket_payload = Ticket(
    description="some description",
    type="task",
    priority="high",
    status="open"
    )

ticket_payload.requester = User(email="requester1@gmail.com"])
ticket_payload.assignee = User(email="assignee1@gmail.com")

response = self.zenpy_client.tickets.create(ticket_payload)

我得到的响应票设置了记者,但受理人是无。

如果我将 id 与电子邮件一起传递为

ticket_payload.assignee = User(id= 354876354,email="assignee1@gmail.com")

然后它可以工作,我可以看到受让人已设置为票。但这对记者来说不是必需的。

这是 zenpy 的默认行为,还是我错过了什么?

4

1 回答 1

1

我花了一段时间,但我想我理解你的问题。从对象属性部分下的 API 对象部分中的文档:

访问assignee 属性时,Zenpy 首先尝试在 User 缓存中定位相关的 User,如果找不到,将生成并执行 API 调用来检索、实例化、缓存并返回对象。

我错误地认为这意味着我可以设置 assignee 属性的值,zenpy 会查找它,然后将 id 放在 assignee_id 字段中。这是一个不正确的解释。引号意味着如果您设置了assignee_id,然后尝试访问assignee 属性,它将查找并返回它。但必须有一个id。

从文档的下一部分:

需要注意的是,大多数属性设置器会丢弃除 id 之外的所有信息。这是因为 Zendesk 只需要 id,因此对对象所做的任何修改都不会自动持久化。

因此,当您设置没有 id 的受理人或请求者时,电子邮件地址将被丢弃,相应的 id 设置为 None。

至于为什么设置请求者 ID,它可能设置为您用来验证请求的用户,而不是您指定的用户。

于 2018-08-06T12:10:37.950 回答