Как установить права на тикет в клиентской библиотеке Zenpy Python
Я интегрирую Zendesk ITSM API в свою библиотеку python с помощью клиента Zenpy.
Для создания заявки с использованием клиента zenpy я могу установить репортера заявки по идентификатору электронной почты, но для уполномоченного я не могу назначить уполномоченного по идентификатору электронной почты.
Это код, который я пробовал до сих пор.
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)
Полученный мной ответный билет имеет установленный репортер, но правопреемник - Нет.
Если я передам идентификатор вместе с письмом как
ticket_payload.assignee = User(id= 354876354,email="assignee1@gmail.com")
тогда это работает, и я вижу, что цессионарий настроен на тикет. Но это не обязательно для репортера.
Это неправильное поведение zenpy, или я что-то упустил?
1 ответ
Это заняло у меня некоторое время, но я думаю, что понимаю вашу проблему. Из документа в разделе Объекты API в разделе Свойства объекта:
При обращении к атрибуту assignee Zenpy сначала пытается найти соответствующего пользователя в кэше пользователя и, если он не может быть найден, сгенерирует и выполнит вызов API для извлечения, создания экземпляра, кэширования и возврата объекта.
Я ошибочно предположил, что это означает, что я могу установить значение атрибута assignee, и zenpy будет искать его, а затем помещать идентификатор в поле assignee_id. Это неверное толкование. Кавычка означает, что если вы установите assignee_id, а затем попытаетесь получить доступ к атрибуту assignee, он найдет его и вернет. Но там должен быть идентификатор.
Из следующего раздела документов:
Важно отметить, что большинство установщиков свойств отбрасывают всю информацию, кроме идентификатора. Это связано с тем, что Zendesk ожидает только идентификатор, поэтому любые изменения, внесенные в объект, не будут сохраняться автоматически.
Поэтому, когда вы устанавливаете цессионария или запросчика без идентификатора, адрес электронной почты выбрасывается, а соответствующий идентификатор устанавливается на Нет.
Что касается того, почему установлен идентификатор запрашивающей стороны, то, вероятно, он установлен на пользователя, которого вы используете для аутентификации запроса, а не на тот, который вы укажете.