#microsoft-graph-api
#microsoft-graph-api
Вопрос:
Мы создали подписку для всех папок почтового ящика как
users/email@email.email/messages?$filter=isDraft eq false
При создании подписки указывается заголовок Prefer: IdType = «ImmutableId».
Проблема в том, что для всех папок через webhook мы успешно получаем уведомление с неизменяемым идентификатором и получаем по этому идентификатору электронное письмо с использованием Graph messages API, но в случае электронных писем, отправленных из Outlook, webhook сначала получает идентификатор, который вызывает ошибку при получении сообщения:
Status Code: NotFound Microsoft.Graph.ServiceException: Code: ErrorItemNotFound Message: The specified object was not found in the store., Item not found.
После этого появляется второй веб-узел, связанный с папкой отправленных элементов. Я не знаю, с чем связан первый webhook, возможно, с папкой исходящих. Как это можно преодолеть?
Комментарии:
1. Я вижу, что вы подписались на все папки почтового ящика. Скажем, когда вы создаете новое сообщение, отправляете его, тогда подписка получит вам идентификатор, после чего это сообщение будет перемещено в Черновики, а затем в Исходящие, прежде чем оно переместится в Отправленные элементы. Следовательно, я подозреваю, что вы видите эту ошибку — поскольку она сообщает, что элемент не найден в хранилище (поскольку он был перемещен из одной папки в другую).
2. Для дальнейшей отладки вы можете использовать такой инструмент, как ngrok, чтобы посмотреть, что происходит 🙂
3. В отладке я вижу, что получаю этот идентификатор и исключение при получении сообщения. В объекте уведомления webhook нет других полезных данных, таких как идентификатор папки. Скорее всего, это исходящие. Единственное решение, которое я вижу сейчас, — указать фильтр по этой папке при регистрации подписки. Но это действительно пахнет костылем.
4. Как я обновил выше, из-за потока вы видите это поведение. Возможно, вы захотите обработать ошибку с вашей стороны и пропустить ее, если у нее тот же идентификатор.
5. Мы не контролируем отправку электронных писем. Они отправляются вручную, извне. Все идентификаторы для нас являются новыми. И первый идентификатор, связанный с исходящими, отличается от идентификатора, связанного с отправленными элементами. Мы можем только перехватывать все такие исключения и пропускать все случаи.