【问题标题】:Unauthorized Bot Service from Web Chat来自网络聊天的未经授权的机器人服务
【发布时间】:2018-08-27 22:06:49
【问题描述】:

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

我将服务部署到 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 Id 和 Password)。不是吗?

  1. 浏览器嵌入式网络聊天出现未经授权的错误。
  2. 在网络聊天窗口中测试会出现同样的错误。

我还尝试通过删除 MicrosoftAppId 和 MicrosoftAppPassword 来部署 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. Microsoft 应用 ID = f0f7297e-7a95-4a8f-afc1-eb3d19906cd0
  2. 通过我的代码呈现的屏幕如下所示。当我发送消息时,它说无法发送。在应用服务的 Azure 诊断中,我看到错误为未经授权。

【问题讨论】:

  • 也是一个旁注。在我的办公室笔记本电脑中,由于安全问题,IT 团队不允许我安装 ngrok。因此我无法在本地调试我的服务。
  • 是的,您可以毫无顾虑地公开分享您的 Microsoft 应用 ID(只是不要分享任何机密或 Microsoft 应用密码)。请提供您用于嵌入网络聊天控件的代码(不含密码)。另外,请提供您的 Microsoft 应用 ID。

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


【解决方案1】:

401(未经授权)

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

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

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

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

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

另外,如果设置正确后仍然无法正常工作,可以尝试create support request举报。

【讨论】:

  • Worked Worked Worked....当我重新生成它时,我忘记在网络聊天中更改 MIcrosoftAppPassword。非常感谢老兄!!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多