При отправке набора текста в боте Teams происходит сбой - BadGateway - PullRequest
3 голосов
/ 27 марта 2020

Я уверен, что это вызвано тем, что инженеры Команды снова что-то напортачили, но, возможно, стоит попробовать ...

Использование Microsoft.Bot.Builder 4.8.0

Я довольно простая проблема на самом деле. При вызове из Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken),
следующий код:

await turnContext.SendActivityAsync(typing).ConfigureAwait(false);

вызывает следующее исключение:

Operation returned an invalid status code 'BadGateway'

со следующей трассировкой стека:

at Microsoft.Bot.Connector.Conversations.<ReplyToActivityWithHttpMessagesAsync>d__10.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Bot.Connector.ConversationsExtensions.<ReplyToActivityAsync>d__17.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at Microsoft.Bot.Builder.BotFrameworkAdapter.<SendActivitiesAsync>d__34.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.TurnContext.<>c__DisplayClass25_0.<<SendActivitiesAsync>g__SendActivitiesThroughAdapter|1>d.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Bot.Builder.TurnContext.<SendActivityAsync>d__24.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Blabla.<OnMessageActivityAsync>d__4.MoveNext() in path\to\blabla.cs:line xx

Ответ с помощью текстовых сообщений работает нормально.

О, и на всякий случай, если вам интересно, пытался ли я использовать ShowTypingMiddleware для отображения индикатора "ввода текста", конечно, пробовал тоже, но индикатор никогда не показывается. Я сделал это, добавив Use(new ShowTypingMiddleware(1000)); к моему конструктору BotFrameworkHttpAdapter, который зарегистрирован в контейнере DI как синглтон. Просто он ничего не делает.

1 Ответ

3 голосов
/ 27 марта 2020

Загляните в Microsoft Teams: Блог разработчиков; Отключение API: боты, публикующие индикаторы ввода, могут получить 502 с .

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

В настоящее время рекомендации в сообщение выше:

Как разработчик бота, вы можете либо изменить свой код, чтобы пока не использовать индикаторы набора, либо игнорировать ошибки, возникшие при отправке индикаторов набора.

...