我正在使用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的愚蠢行为吗,还是我错过了什么?
答案 0 :(得分:1)
我花了一段时间,但我认为我理解您的问题。在“对象属性”部分下“ API对象”部分的文档中:
在访问受让人属性时,Zenpy首先尝试 在用户缓存中找到相关的用户,如果找不到 将生成并执行API调用以检索,实例化,缓存 并返回对象。
我错误地认为这意味着我可以设置受理人属性的值,而zenpy会查找该值,然后将其id放入Assignee_id字段中。这是一个错误的解释。引用表示如果您设置了assignee_id,然后尝试访问assignee属性,它将查找并返回它。但是必须有一个ID。
从文档的下一部分开始:
重要的是要注意,大多数财产设定者会抛弃所有 ID以外的信息。这是因为Zendesk只期望 id,因此不会保留对该对象所做的任何修改 自动。
因此,当您设置没有ID的受让人或请求者时,电子邮件地址将被丢弃,并且相应的ID将被设置为None。
关于设置请求者ID的原因,可能将其设置为用于认证请求的用户,而不是您指定的用户。