2

使用 Microsoft Bot Framework,我创建了一个聊天机器人,并且我能够使用本地模拟器测试该机器人。Bot 服务还处理 LUIS,一切正常。我的 Bot 服务具有MicrosoftAppIdMicrosoftAppPasswordweb.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. 网络聊天窗口中的测试给出了同样的错误。

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

这一切对我来说都很新鲜。有人可以帮我弄清楚这个问题吗?公开赠送我的 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 诊断中,我看到错误为未经授权。 在此处输入图像描述
4

2 回答 2

2

401(未经授权)

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

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

    在此处输入图像描述

  2. 请检查您是否在设置边栏选项卡上为机器人指定了正确的消息端点。

    在此处输入图像描述

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

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

此外,如果即使您设置了正确的配置仍然无法正常工作,您可以尝试创建支持请求来报告它。

于 2018-03-20T06:51:40.707 回答
1

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

于 2020-08-11T14:28:56.537 回答