来自网络聊天的未经授权的机器人服务

Unauthorized Bot Service from Web Chat

我使用 Microsoft Bot Framework 创建了一个聊天机器人,并且能够使用本地模拟器测试该机器人。机器人服务还处理 LUIS,一切再次正常。我的机器人服务在 web.config.

中有 MicrosoftAppIdMicrosoftAppPassword

我将服务部署到 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. 在网络聊天中测试 windows 给出同样的错误。

我也尝试通过删除 MicrosoftAppIdMicrosoftAppPassword 来部署 Bot 服务,但没有任何变化。

这对我来说都是全新的。有人可以帮我弄清楚这个问题吗?也可以公开放弃我的 Microsoft App ID 吗?

编辑 1

在浏览器中实现网络聊天控件。

  1. 创建了 ASP.Net 空网站并有一个 HTML 页面 (index.html)。
  2. 以下代码写在index.html页。

<!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. 微软应用程序 ID = f0f7297e-7a95-4a8f-afc1-eb3d19906cd0
  2. 通过我的代码呈现的屏幕如下所示。当我发送消息时,它说无法发送。在应用服务的 Azure 诊断中,我看到错误为未经授权。

401 (Unauthorized)

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

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

  2. 请检查您是否在 Settings blade.

    上为机器人指定了正确的消息端点

    注意您也可以尝试管理您的MicrosoftApp 为该应用程序生成新密码,并在应用程序设置blade中使用新生成的密码指定MicrosoftAppPassword并检查它是否适用于新密码。

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

此外,如果你设置正确配置后仍然不能正常工作,你可以尝试create support request举报。

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