【问题标题】:Chat BoT Exception: OnTurnAsync exception-- Operation returned an invalid status code 'BadRequest'聊天机器人异常:OnTurnAsync 异常--操作返回无效状态代码“BadRequest”
【发布时间】:2019-06-22 03:45:11
【问题描述】:

只有在我将机器人部署到 azure Web 应用程序并尝试在 azure 门户 Web Chat 中进行测试后,我才会收到此错误。但是我的机器人在我的本地机器上的机器人模拟器中按预期工作。

我不确定这是否是由于分配给我的 azure 角色。我分配的角色显示为“有限贡献者”。我能够创建任何资源并将我的聊天机器人部署到 azure。所以不确定这是否与我的“有限贡献者”角色有关。

这是抛出异常的代码行(以红色标记):

  Exception OnTurnAsync  exception inner ex.Message:
 Operation returned an invalid status code 'BadRequest'  ex:
 Microsoft.Bot.Schema.ErrorResponseException: Operation returned an invalid status code 'BadRequest'
   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 AbcChatBot.Bots.AbcsBot.OnMessageActivityAsync(ITurnContext`1 turnContext, CancellationToken cancellationToken)

任何解决或确定我为什么收到“BadRequest”的建议都将不胜感激。

【问题讨论】:

    标签: c# azure .net-core botframework chatbot


    【解决方案1】:

    这通常是因为 MicrosoftAppId/MicrosoftAppPassword 在您的应用服务配置中或在您的代码中配置(取决于您的配置方式)。请确保它们已在那里配置,然后重试。

    我的猜测是这与你的角色无关。此外,我不认为角色 '' 是标准的。我确实看到了Limited Administrator,但没有看到Limited Contributor

    https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles

    【讨论】:

    • 我在 appsettings 中有正确的 appId 和密码。如果我删除它们,它就不会连接。
    • 当用户通过输入任何内容开始初始对话时,我的机器人只会发送一条欢迎消息,然后是一张显示技能集列表的自适应卡片,甚至在用户回复机器人之前,机器人就会抛出错误。
    • 我遇到了同样的问题,但仅限于 Teams。有什么合乎逻辑的解决方案吗?现在我使用了适合我的答案标记技巧。
    【解决方案2】:

    这个错误的根本原因是

    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
                {
        var reply = new Activity(); //this line caused the error
        ……..
    
        }
    

    所以我从

    更改了我的代码

    var reply = new Activity();

    var reply = turnContext.Activity.AsMessageActivity();

    错误消失了。

    我仍然不知道为什么 onTurnAsync 会抛出异常,而实际问题在 OnMessageActivityAsync

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多