Проблема, которую мы решаем
В течение многих месяцев мы использовали makeEwsRequestAsync
для обновления и отправки черновиков прямо из контекста надстройки.Этот подход сталкивается с ограничениями режима кэширования в Outlook и вынуждает нас повторять запросы EWS в течение неизвестного периода времени, прежде чем мы сможем завершить процесс.Учитывая, что реальные клиенты жалуются на время обработки, мы изменили поток и перенесли обработку черновиков на серверную часть.
Вот схематическое представление того, что мы пытаемся сделать - черновой поток обработки сообщений
Что пошло не так?
После отправки этого изменения в производство мы столкнулись с двумя основными проблемами, которые мы пытаемся исследовать и решить сейчас.Вот некоторый контекст:
- у нас есть маркеры доступа Microsoft Graph, хранящиеся на нашей стороне для доступа к API
- мы делаем 12 повторных попыток в течение 45 минут до отправки сообщения об ошибке на адрес электронной почты.клиент
- частота ошибок составляет около 5%
Проблемы
1.Черновик не найден в API
Существует несколько черновиков, которые никогда не сохраняются на бэкэнде: неудачные поиски черновиков при повторных попытках .Увеличение числа NotFounds, начиная с 6 повторов, показывает нам, что задание обработки смогло получить электронное письмо некоторое время, но оно было отправлено клиентом вручную.
2.Черновик не имеет sync_id в теле
Мы пытались использовать EWS на бэкэнде год назад для обработки электронных писем на бэкенде, нам пришлось вернуться, поскольку некоторые из отправленных нами писем не соответствовали ожиданиям клиентов: случайныечасти тела письма отсутствовали.Предполагая, что синхронизация API может занять некоторое время, мы начали вставлять пустую ссылку в тело письма, используя office-js
body.prependAsync
.Это выглядит так: <a href="#sync-${syncId}">‌</a>
.Сделав это, мы смогли проверить, что черновик, который мы получили через API, синхронизируется с точкой, где пользователь нажал командную кнопку.К сожалению, наши 45 минут для повторных попыток кажутся недостаточными для синхронизации. неудачные попытки проверки sync_id
Вещи, которые мы хотим понять и получить некоторую помощь:
- Есть ли лучший способ узнать, что электронная почта в правильном состоянии прибэкэнд?
- Правда ли, что Microsoft Graph API и Outlook REST API синхронизируются одновременно?Другими словами - есть ли смысл в использовании обоих API?
- Существуют ли настройки рабочего стола Windows Outlook, которые могут помочь в более быстрой синхронизации черновиков?(кроме отключения режима кэширования)
- Какое ожидаемое время наихудшего случая ожидания, прежде чем мы сможем получить черновик на бэкэнде?
- Любые другие комментарии / мысли по этому вопросу