网络聊天中未经授权的Bot服务

时间:2018-03-19 11:02:22

标签: botframework bots azure-bot-service web-chat

使用Microsoft Bot Framework,我创建了一个Chat Bot,我可以使用本地模拟器测试Bot。机器人服务也处理LUIS,一切都很好。我的机器人服务在MicrosoftAppId中有MicrosoftAppPasswordweb.config

我将服务部署到Azure。然后在浏览器中嵌入了一个网络聊天(Github),但它不起作用。错误说

Buffer="{
  "message": "An error has occurred.",
  "exceptionMessage": "Unauthorized",
  "exceptionType": "Microsoft.Bot.Connector.MicrosoftAppCredentials+OAuthException",
  "stackTrace": "   at Microsoft.Bot.Sample.LuisBot.MessagesController.<Post>d__0.MoveNext()

......

    "innerException": {
        "message": "An error has occurred.",
        "exceptionMessage": "Response status code does not indicate success: 401 (Unauthorized).",
        "exceptionType": "System.Net.Http.HttpRequestException",
        "stackTrace": "   at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()\r\n   at Microsoft.Bot.Connector.MicrosoftAppCredentials.<RefreshTokenAsync>d__26.MoveNext()"

我相信当我通过我的网络聊天密钥(我也尝试传递生成的令牌但没有运气)时,它应该被授权(自App IdPassword)。不是吗?

  1. 浏览器嵌入式网络聊天提供了未经授权的错误。
  2. 在Web聊天窗口中测试会出现同样的错误。
  3. 我还尝试通过删除MicrosoftAppIdMicrosoftAppPassword来部署Bot服务,但没有任何变化。

    这对我来说都很新鲜。有人可以帮我澄清一下这个问题吗?也可以公开赠送我的Microsoft App Id吗?

    修改1

    在浏览器中实现Web Chat控件。

    1. 创建了ASP.Net空网站,并有一个HTML页面(index.html)。
    2. 以下代码是在index.html页面中编写的。
    3. <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8" />
          <title></title>
      </head>
      <body>
      
          <div id="bot" />
          <hr />
      
          <iframe width="400" height="300" src='https://webchat.botframework.com/embed/#Web_App_Bot_Name#?s=Web_Chat_Secret_Key'></iframe>
      </body>
      </html>

      1. Microsoft App Id = f0f7297e-7a95-4a8f-afc1-eb3d19906cd0
      2. 通过我的代码呈现的屏幕看起来像这样。当我发送消息时,它说无法发送。在Azure诊断for App Service中,我将错误视为未授权。 enter image description here

2 个答案:

答案 0 :(得分:1)

  

401(未经授权)

您可以尝试以下步骤来解决问题:

  1. 请检查您是否在应用程序设置刀片上为您的机器人指定了正确的posts.findMicrosoftAppID

    enter image description here

  2. 请检查您是否在 Settings 刀片上为机器人指定了正确的消息端点。

    enter image description here

    注意 您还可以尝试管理您的MicrosoftApp和生成新密码应用程序,并在应用程序设置刀片上使用新生成的密码指定MicrosoftAppPassword,并检查它是否适用于新密码。

  3. 请尝试在Azure门户上创建新的僵尸程序,并将您的僵尸程序应用程序发布到您指定为消息传递端点的相应Web应用程序,并检查新机器人是否正常工作。

  4. 此外,如果即使您设置了正确的配置它仍然无法按预期工作,您可以尝试create support request进行报告。

答案 1 :(得分:0)

在尝试从漫游器模拟器访问Azure中部署的漫游器时,我还遇到此错误“ 错误:未经授权。无效的AppId通过令牌传递”。解决方案是转到Bot注册>访问控制>我将自己添加为该机器人的所有者。它开始在模拟器中为我工作。我给了http:// localhost:port,但没有在仿真器中提供MicrosoftAppId和MicrosoftAppPassword,所以我能够在本地调试机器人。