ServiceUrl "https://smba.trafficmanager.net/apac/" не работает - PullRequest
0 голосов
/ 26 мая 2019

У меня есть бот MS Teams.Я установил бота для нескольких пользователей в арендаторе.Теперь, когда я начинаю разговор, для немногих пользователей он отвечает, а для немногих - нет.

Я провел дальнейшее расследование и выяснил, что для пользователей, которые получают ответ от бота, serviceurl имеет значение "https://smba.trafficmanager.net/in/".

Для пользователей, которые не получают ответа от бота, serviceurl имеет вид "https://smba.trafficmanager.net/apac/".

Сообщение об исключении : Операция вернула недопустимый код состояния" NotFound "

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
     var activity = await result as Activity;
     var reply = activity.CreateReply();
     reply.Text = "Hi there";
     await context.PostAsync(reply);
}

1 Ответ

0 голосов
/ 27 мая 2019

Похоже, это TrustServiceUrl Issue (несмотря на сообщение об ошибке 500 против 401).

Вы можете исправить это, добавив все свои ServiceUrls в список доверенных URL:

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
     var activity = await result as Activity;
     var serviceUrl = activity.ServiceUrl;
     MicrosoftAppCredentials.TrustServiceUrl(serviceUrl);
     var reply = activity.CreateReply();
     reply.Text = "Hi there";
     await context.PostAsync(reply);
}

Это должно гарантировать, что ваш бот "доверяет" ServiceUrl любого полученного сообщения.

Дайте мне знать, как это происходит. Я на 90% уверен, что это проблема, но это не так.


Вот ссылка на библиотеку, если это поможет. В противном случае просмотр этих проблем должен помочь.

Примечание для других:

Эта «проблема URL службы доверия» не относится только к командам. Это происходит для многих других URL-адресов при попытке использовать Проактивные сообщения. Просто замените serviceUrl тем, что подходит для вашего случая использования. И да, если вы используете несколько каналов, вы можете добавить несколько URL-адресов при использовании MicrosoftAppCredentials.TrustServiceUrl(), вызывая его несколько раз.

Вот определение метода . Примечание: для этого вы также можете добавить срок действия.

Я отправил PR для этого , что привело к некоторым обновленным документам

...