Надстройка Outlook возвращает ошибку 5001 при попытке получить значения «кому»

#javascript #office-js #outlook-web-addins

#javascript #office-js #outlook-web-addins

Вопрос:

С четверга, 8 октября 2020 года, у нас возникли проблемы с получением значений «кому» в нашей надстройке Outlook. Все происходит в представлении компоновки.

Во-первых, мы проверяем каждые 500 миллисекунд, чтобы узнать, изменился ли адрес электронной почты, чтобы мы могли обновить представление:

 return item['to'].getAsync((asyncResult) => {
  console.log('res', asyncResult)
  if (asyncResult.status !== Office.AsyncResultStatus.Succeeded) {
    return failure(Error(asyncResult.error.message))
  }

  return success(asyncResult.value)
})
  

Этот метод возвращает в начале возвращает правильные значения.

После этого у нас открывается диалоговое окно для создания события, и мы пытаемся получить значения почты, такие как тело, кому, от, тема и т.д. Для получения значений subject , from и to используется тот же метод, что и упомянутый выше. Но когда я пытаюсь получить значения там, я получаю код ошибки: 5001, и проверка, упомянутая выше, с этого момента завершится неудачей, и я не смогу получить значения «кому».

Я мог бы воспроизвести это в клиенте macOS, но мы видели в Sentry, что и у наших пользователей клиентов Windows возникает такая же проблема.

Это полностью останавливает использование нашего программного обеспечения большинством наших клиентов.

Комментарии:

1. Этот сценарий должен быть выполнен с помощью события RecipientsChanged и AddHandlerAsync: learn.microsoft.com/en-us/javascript/api/office/… Я не уверен, почему возникает ошибка 5001. Но слишком частый вызов этого API может привести к ошибкам, если поток FG заблокирован. На какой версии сборки и клиенте вы работаете? (macOS, Win32, OWA?)

2. Кстати, было бы здорово узнать, почему вы не используете событие recipientsChanged для этого сценария. Спасибо!

3. Я попробую это прямо сейчас! @JuanBalmori Недавно я перешел к коду, и мне не хватило ума быстрее найти событие.

4. Я могу подтвердить, что теперь все работает после использования упомянутого события. Еще раз спасибо за вашу помощь, по-прежнему странно, что с 8 октября он начал давать сбои, а до этого работал идеально, но это решение намного лучше.

5. @NinetyHH, я добавляю наш комментарий к ответу, поскольку он сработал для вас.

Ответ №1:

Это должно быть выполнено с помощью события RecipientsChanged . Подпишитесь на событие с помощью Office.context.mailbox.item.addHandlerAsync . Слишком частый вызов API может привести к ограничению вызовов, поэтому рекомендуется использовать механизм событий вместо опроса.