Bot Framework测试与您的机器人的连接失败,状态代码为Forbidden

时间:2016-12-21 05:26:41

标签: botframework botconnector

我的机器人工作在Slack,Skype和模拟器中接收和发送信息。

然而,当我点击机器人门户网站(https://dev.botframework.com/)中的蓝色“测试”按钮时,它会向我显示错误消息" Microsoft App ID的授权my_id_is_replacedhere失败,状态代码为Forbidden"

完整错误如下。

当我使用端点https://slack.botframework.com/和Conversations.SendToConversation()方法向Slack发送预定消息时,我也得到了相同的错误。这用来工作,测试按钮用于成功。

为什么我收到此消息?是否有一个破坏它的NuGet pkg更新? 我查看了故障排除指南,但其他一切似乎都有效。

谢谢

  

InternalServerError {" message":"发生了错误。",   " exceptionMessage":" Microsoft App ID的授权   my_id_is_replacedhere失败,状态码为Forbidden",   " exceptionType":" System.UnauthorizedAccessException"," stackTrace":"   在   Microsoft.Bot.Connector.JwtTokenRefresher.d__2.MoveNext(个)\ r \ n ---   从抛出异常的先前位置开始的堆栈跟踪结束   --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务)\ r \ n   在   Microsoft.Bot.Connector.Conversations.d__8.MoveNext(个)\ r \ n ---   从抛出异常的先前位置开始的堆栈跟踪结束   --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   Microsoft.Bot.Connector.ConversationsExtensions.d__19.MoveNext(个)\ r \ n ---   从抛出异常的先前位置开始的堆栈跟踪结束   --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\ r \ n at   Grasp.MessagesController.d__0.MoveNext()in   C:\代码\ Relegraph_Git \ GraspThree \抓住\ \控制器MessagesController.cs:行   55 \ r \ n ---来自先前位置的堆栈跟踪结束异常   被扔了--- \ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext(个)\ r \ n ---   从抛出异常的先前位置开始的堆栈跟踪结束   --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext(个)\ r \ n ---   从抛出异常的先前位置开始的堆栈跟踪结束   --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Web.Http.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 at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext(个)\ r \ n ---   从抛出异常的先前位置开始的堆栈跟踪结束   --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(个)\ r \ n ---   从抛出异常的先前位置开始的堆栈跟踪结束   --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()"   }

2 个答案:

答案 0 :(得分:2)

尝试使用

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

之前

connector.Conversations.SendToConversationAsync(...)

答案 1 :(得分:1)

我弄清楚导致错误的原因。显然,机器人门户网站中的“测试”按钮会向机器人发送“Ping”消息。在我的MessagesController代码中,我试图回复每条消息,如下所示:

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

然而 - 当我为Ping类型的Activity(Activity.Type = ActivityTypes.Ping)执行此操作时,我得到上述错误。当我忽略Ping消息时,Test按钮会起作用。

当我按照计划向Slack发送消息时收到相同的错误(没有要回复的传入消息)时,我仍然遇到了问题。我使用Slack的WebAPI解决了这个问题:

  

https://slack.com/api/chat.postMessage?token= {0}&安培;信道= {1}&安培;文本= {2}&安培; as_user = {3}