botframework - 初始对话时出现 Microsoft Bot Framework v4 随机“未经授权”错误
问题描述
我们在最新的 Bot SDK 中为客户构建了一个机器人,但在对话开始时我们会随机收到“未经授权”错误。
请参阅下面的错误,这很奇怪,因为:
- 它不经常发生
- 并且错误是从机器人发送的,因此 DirectLine API 已经与机器人通信,但机器人无法将任何内容发送回 DirectLine。(这是我们假设的,但很难调试)
我们仍在使用 MemoryStorage,但不要认为这与它有任何关系。
框架版本:
- .net 核心 2.2
- bot.builder = 4.1.5
任何人都可以解决这个问题
Microsoft.Bot.Schema.ErrorResponseException: Operation returned an invalid status code 'Unauthorized'
at Microsoft.Bot.Connector.Conversations.ReplyToActivityWithHttpMessagesAsync(String conversationId, String activityId, Activity activity, Dictionary`2 customHeaders, CancellationToken cancellationToken)
at Microsoft.Bot.Connector.ConversationsExtensions.ReplyToActivityAsync(IConversations operations, String conversationId, String activityId, Activity activity, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.BotFrameworkAdapter.SendActivitiesAsync(ITurnContext turnContext, Activity[] activities, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.TurnContext.<>c__DisplayClass22_0.<<SendActivitiesAsync>g__SendActivitiesThroughAdapter|1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.Bot.Builder.TurnContext.SendActivityAsync(IActivity activity, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.TurnContext.SendActivityAsync(String textReplyToSend, String speak, String inputHint, CancellationToken cancellationToken)
at Louise.Chatbot.DialogSteps.GreetingDialogSteps.GreetUserAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) in C:\Users\.......\GreetingDialogSteps.cs:line 26
at Microsoft.Bot.Builder.Dialogs.WaterfallDialog.OnStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.Dialogs.WaterfallDialog.RunStepAsync(DialogContext dc, Int32 index, DialogReason reason, Object result, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.Dialogs.WaterfallDialog.BeginDialogAsync(DialogContext dc, Object options, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.Dialogs.DialogContext.BeginDialogAsync(String dialogId, Object options, CancellationToken cancellationToken)
at Louise.Chatbot.Louise.OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken) in C:\Users\.......\Louise.cs:line 154
at Microsoft.Bot.Builder.MiddlewareSet.ReceiveActivityWithStatusAsync(ITurnContext turnContext, BotCallbackHandler callback, CancellationToken cancellationToken)
at Microsoft.Bot.Builder.BotAdapter.RunPipelineAsync(ITurnContext turnContext, BotCallbackHandler callback, CancellationToken cancellationToken)
解决方案
根据 [ https://github.com/Microsoft/botbuilder-dotnet/issues/1251][1]
“这里可能的原因是 v4 SDK 中的令牌缓存错误。在上一个版本中,在 V3 C# SDK 中,我们放弃了自定义代码,转而使用 AAD 团队提供的交钥匙解决方案。到目前为止,这似乎已经一直工作得很好,我们对这个解决方案很满意。作为这项工作的一个很好的副作用,在非常高的负载下的性能也好一点。
目前这项工作正在 v4 C# SDK 中进行,并计划在 2 月中旬发布 4.3 版本。”
推荐阅读
- javascript - 如何使随机报价生成器不重复报价
- python - ImportError: dlopen failed: site-packages/grpc/_cython 在为 Android 打包时是 64 位而不是 32 位
- python - 泛化 Flask 表的列
- python - UnboundLocalError:在全局赋值之前引用的局部变量
- sqlite - SQLite 如果我有两个或更多相同的数据,我如何专门更新?
- visual-studio - 我可以解决“无法连接到 Web 服务器 'IIS Express'”,但它会在几天后返回。这是为什么?
- algorithm - 对于给定的中序和前序遍历,如何推导出这个公式的证明,以便为二叉树获得正确的孩子?
- amazon-web-services - AWS EKS 节点组“创建失败”:实例未能加入 kubernetes 集群
- android - 我想为某些滚动空间触发 OnScrollChangeListener
- javascript - 选择第一个复选框后选择所有复选框