使用Microsoft Bot Framework,我创建了一个Chat Bot,我可以使用本地模拟器测试Bot。机器人服务也处理LUIS,一切都很好。我的机器人服务在MicrosoftAppId
中有MicrosoftAppPassword
和web.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 Id
和Password
)。不是吗?
我还尝试通过删除MicrosoftAppId
和MicrosoftAppPassword
来部署Bot服务,但没有任何变化。
这对我来说都很新鲜。有人可以帮我澄清一下这个问题吗?也可以公开赠送我的Microsoft App Id吗?
修改1
在浏览器中实现Web Chat控件。
<!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>
答案 0 :(得分:1)
401(未经授权)
您可以尝试以下步骤来解决问题:
请检查您是否在应用程序设置刀片上为您的机器人指定了正确的posts.find
和MicrosoftAppID
。
请检查您是否在 Settings 刀片上为机器人指定了正确的消息端点。
注意 :您还可以尝试管理您的MicrosoftApp和生成新密码应用程序,并在应用程序设置刀片上使用新生成的密码指定MicrosoftAppPassword
,并检查它是否适用于新密码。
请尝试在Azure门户上创建新的僵尸程序,并将您的僵尸程序应用程序发布到您指定为消息传递端点的相应Web应用程序,并检查新机器人是否正常工作。
此外,如果即使您设置了正确的配置它仍然无法按预期工作,您可以尝试create support request进行报告。
答案 1 :(得分:0)
在尝试从漫游器模拟器访问Azure中部署的漫游器时,我还遇到此错误“ 错误:未经授权。无效的AppId通过令牌传递”。解决方案是转到Bot注册>访问控制>我将自己添加为该机器人的所有者。它开始在模拟器中为我工作。我给了http:// localhost:port,但没有在仿真器中提供MicrosoftAppId和MicrosoftAppPassword,所以我能够在本地调试机器人。