c# - AAD 阻止机器人
问题描述
我正在 Microsoft BotFramework 中实现一个简单的机器人。我已将其部署在 Azure 上。出于多种原因,我希望让托管机器人的应用程序服务使用 AAD 身份验证。但是,这样做我似乎使机器人无法使用。
这是我的上下文:
我有 bot - 我们称之为ChatBot。我有我的应用服务;聊天机器人。
该应用程序使用 Build and Release 通过 Visual Studio Teams Services Git 成功部署。
我使用以下脚本修改了“default.htm”文件以在网页上显示我的机器人:
<span class="skype-button bubble" data-bot-id="MyBotID" data-color="#ffffff"></span>
<span class="skype-chat" data-bot-id="MyBotID" data-color-message="#ffffff" data-show-header="true" data-can-upload-file="false"></span>
这取自Skype for Developers,修改了 BotID。
如果没有为聊天机器人服务启用 AAD,我可以按预期与 Azure 网站上的嵌入式聊天机器人进行通信。但是,当我启用 AAD 时,系统会要求我登录(如我所料)。网站加载后,机器人会正常显示。然后聊天窗口加载我在 Azure 上分配给机器人的图标,并在聊天窗口标题中显示机器人的名称。但是,当我与机器人聊天时,它显示“机器人正在响应”消息,然后没有收到任何消息。
这很奇怪,因为图标+标题的加载似乎意味着建立了连接,但无法接收用户的消息(或者可能能够接收,但无法发送?)。当我再次为应用服务禁用 AAD 时,我能够很好地获得机器人响应。因此,与 AAD 相关的是禁止部分通信。
很抱歉,如果很明显,但我错过了什么吗?为应用服务启用 AAD 是否对嵌入式脚本或启用与消息传递端点的通信有影响?
提前致谢。
编辑:我想澄清一下,在测试之后,我可以确认我无法发送消息:Azure 中的“网络聊天测试”选项给了我一个“错误 - 重试?” 当我尝试发送消息时,我的频道的“最近的问题”报告了一个数字错误,上面写着:
将此消息发送到您的机器人时出错:HTTP 状态代码未经授权
我显然得到了 401,因为 AAD 没有为机器人进行身份验证,尽管应用程序服务明确进行了身份验证。为什么是这样?
解决方案
推荐阅读
- javascript - 谷歌应用 json 数据从 code.gs 到 html 下拉列表
- php - 如何通过 ajax 或任何 http 请求获取 $_GET url 中的参数?
- npm - 我不知道发生了什么事
- c++ - 为什么在这种情况下不调用 move ctor?
- c# - ASP.NET Core 上传多文件 Web API 模型
- c++ - 凸多边形内的最大圆
- amazon-web-services - 来自 AWS ECS 集群的自定义指标
- tensorflow - NLP 中训练和测试数据文件的名称(BioBERT GitHub 存储库)
- java - 信号量、互斥对象和监视器
- r - 使用 purrr 帮助转换大型数据文件