Режим создания надстроек Outlook: изменение + отправка сценария - PullRequest
0 голосов
/ 13 декабря 2018

Проблема, которую мы решаем

В течение многих месяцев мы использовали 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}">&zwnj;</a>.Сделав это, мы смогли проверить, что черновик, который мы получили через API, синхронизируется с точкой, где пользователь нажал командную кнопку.К сожалению, наши 45 минут для повторных попыток кажутся недостаточными для синхронизации. неудачные попытки проверки sync_id

Вещи, которые мы хотим понять и получить некоторую помощь:

  1. Есть ли лучший способ узнать, что электронная почта в правильном состоянии прибэкэнд?
  2. Правда ли, что Microsoft Graph API и Outlook REST API синхронизируются одновременно?Другими словами - есть ли смысл в использовании обоих API?
  3. Существуют ли настройки рабочего стола Windows Outlook, которые могут помочь в более быстрой синхронизации черновиков?(кроме отключения режима кэширования)
  4. Какое ожидаемое время наихудшего случая ожидания, прежде чем мы сможем получить черновик на бэкэнде?
  5. Любые другие комментарии / мысли по этому вопросу
...