Как установить права на тикет в клиентской библиотеке 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 ожидает только идентификатор, поэтому любые изменения, внесенные в объект, не будут сохраняться автоматически.

Поэтому, когда вы устанавливаете цессионария или запросчика без идентификатора, адрес электронной почты выбрасывается, а соответствующий идентификатор устанавливается на Нет.

Что касается того, почему установлен идентификатор запрашивающей стороны, то, вероятно, он установлен на пользователя, которого вы используете для аутентификации запроса, а не на тот, который вы укажете.

Другие вопросы по тегам