Bot Framework Тестовое соединение с вашим ботом завершается неудачно с кодом состояния Запрещено

Мой бот работает, получает и отправляет сообщения нормально в Slack, Skype и эмуляторе.

Однако, когда я нажимаю синюю кнопку "Тест" на портале ботов ( https://dev.botframework.com/), появляется сообщение об ошибке "Авторизация для идентификатора приложения Microsoft my_id_is_replacedhere с кодом состояния Forbidden"

Полная ошибка ниже.

Я также получаю ту же ошибку при отправке запланированного сообщения в Slack с использованием конечной точки https://slack.botframework.com/ и метода Conversations.SendToConversation(). Раньше это работало, а кнопка Тест использовалась для успеха.

Почему я получаю это сообщение? Есть ли обновление NuGet pkg, которое сломало его? Я прошел руководство по устранению неполадок, но все остальное, кажется, работает.

Спасибо

InternalServerError { "message": "Произошла ошибка.", "CeptionMessage": " Сбой авторизации для идентификатора приложения Microsoft my_id_is_replacedhere с кодом состояния Запрещено ", "exceptionType": "System.UnauthorizedAccessException", "stackTrace": " в Microsoft.Bot.Connector.JwtTokenRefresher.d__2.MoveNext()\r\n--- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача-задача) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(задача задачи) \ r \ n на сайте Microsoft.Bot.Cond.8.MoveNext()\r\n--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача задачи) \ r \ n в системе. Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) \ r \ n в Microsoft.Bot.Connector.ConversationsExtensions.d__19.MoveNext()\r\n--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\r\n в Grasp.MessagesController.d__0 \ in.Cove: в коде: Relegraph_Git\GraspThree\Grasp\Controllers\MessagesController.cs: строка 55\r\n--- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача задачи) \ r \ n в System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext()\r\n--- Конец трассировка стека из предыдущего места, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача) \ r \ n в Sy stem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) \ r \ n в System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n--- Конец стека трассировки из предыдущего местоположения, где была исключение конца стека из предыдущего расположения брошено --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) \ r \ n в System.Web.H.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- \ r \ n в System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача) \ r \ n в System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext()\r\n--- Конец st подтвердить трассировку из предыдущего местоположения, в котором было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) \ n в System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()\r\n--- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices. TaskAwaiter.ThrowForNonSuccess (Задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача задачи) \ r \ n в System.Web.Http.Dispatcher.HttpControllerDispatcher.d__M.

2 ответа

Решение

Я разобрался, что вызвало ошибку. Видимо кнопка "Тест" на портале ботов отправляет боту сообщение "Ping". В своем коде MessagesController я пытался ответить на каждое сообщение примерно так:

                        ConnectorClient connector = new ConnectorClient(new Uri(Act.ServiceUrl), appcred);
                        Activity reply = Act.CreateReply(replymsg);
                        connector.Conversations.ReplyToActivity(reply);

Однако, когда я делаю это для типа активности Ping (Activity.Type=ActivityTypes.Ping), я получаю вышеуказанную ошибку. Когда я просто игнорирую сообщение Ping, тогда кнопка Test работает.

У меня все еще была проблема, когда я получал ту же ошибку при отправке сообщений в Slack по расписанию (нет входящих сообщений для ответа). Я работал над этой проблемой, используя Slack WebAPI:

https://slack.com/api/chat.postMessage?token={0} & channel = {1} & text = {2} & as_user = {3}

Попробуй использовать

MicrosoftAppCredentials.TrustServiceUrl(notify.ServiceUrl, DateTime.MaxValue);

до

connector.Conversations.SendToConversationAsync(...)
Другие вопросы по тегам