Рекомендации по синхронизации состояния почтового ящика, Deltas и подписки - PullRequest
1 голос
/ 18 июня 2019

Я создаю CRM, которая обрабатывает обмен электронной почтой в приложении, обрабатывая электронные письма, отправляемые на учетные записи пользователей Office365 с помощью Microsoft Graph API.Как лучше отслеживать электронные письма в реальном почтовом ящике?Должен ли я использовать дельты или подписки?

Из того, что я могу сказать, дельты - это URL-адреса, которые предоставляют данные о текущем состоянии почтового ящика, но дельты должны запускаться на регулярной основе (я бы использовал CRONработа), но тогда я бы запустил процесс намного больше, чем нужно, потому что пользователи не получают столько электронных писем в день.

В качестве альтернативы, если я использую подписки, которые сообщат мне, когда новое письмо будетполучил, и я могу обработать, используя webhook в моем приложении.

Из документации Microsoft Graph кажется, что дельты - это способ отслеживать изменения, но я чувствую, что все, что мне нужнознать, когда получено новое электронное письмо, чтобы его можно было соответствующим образом обработать, в некотором смысле дельта была бы излишней.

1 Ответ

1 голос
/ 18 июня 2019

Вы используете комбинацию из двух.

Webhook сообщает вам, что почтовый ящик изменился, дельта сообщает, что изменилось в почтовом ящике. Когда вы получаете уведомление, вы тянете дельту, чтобы получить изменения в почтовый ящик.

Есть много причин для этого, но основная из них заключается в том, что id сообщения электронной почты может измениться. Это связано с тем, что идентификаторы сообщений являются составным значением, включающим папку, в которой оно хранится. Поэтому, если сообщение будет перемещено, идентификатор, полученный в уведомлении, будет недействительным. Исторически это было довольно редкое состояние гонки, но с появлением интерактивных мобильных уведомлений теперь стало обычным делом приходить по электронной почте и мгновенно «архивироваться». Полагаясь на веб-хуки для уведомлений и дельты для контента, вы избегаете задания CRON, одновременно снижая изменение идентификатора, прежде чем сможете обработать сообщение.

...