Похоже, это 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 для этого , что привело к некоторым обновленным документам