首页 > 解决方案 > 通过使用 Microsoft Bot Framework 将 Cortana 作为通道添加到我的机器人而出现错误

问题描述

Cortana 尝试对我的机器人进行身份验证时出错

我正在尝试使用带有 Azure Bot 服务的 MS Bot Framework 将 Cortana 连接到我的 QnA Bot。

在我说出调用短语时在 Windows 10 桌面上进行测试时 - Cortana 尝试对我进行身份验证,但出现以下错误。请让我知道我做错了什么?

错误图像

Cortana 设置

标签: c#botframeworkcortana

解决方案


我最近实施了一项 Cortana 技能,但在进行身份验证时遇到了一些挑战。但是,我发现您的配置存在一些问题:

  • User.Read.All需要管理员同意。这真的是您想要的还是您正在寻找User.ReadBasic.All。根据您的设置,这将阻止身份验证。有关详细信息,请参阅Microsoft Graph 文档
  • 在客户端授权方案下的 Cortana 通道配置中,确保您在请求正文中选择了凭据。我无法从您的屏幕截图中看到这一点,但我相信值得检查一下。

此外,以下是我的最佳实践,应该可以让您的方案发挥作用:

  • 不要使用机器人的服务主体(应用程序注册)进行 Cortana 身份验证。
  • 而是在您的租户上创建一个专用的应用程序注册(例如,使用品牌名称Your Bot for Cortana)并在您的 Cortana 通道配置(appId / 客户端密码)上配置这个
  • 确保您不仅在机器人的 Cortana 通道配置上配置所需的范围,而且在您的应用注册上也配置所需的范围(转到 AAD - 应用注册(预览版)- API 权限)。请记住,Cortana 通道配置上的范围可以是应用注册上配置的范围的子集。这就是为什么我建议为您的机器人和 Cortana 进行专用应用程序注册的原因之一。
  • 确保 Cortana 通道配置上的范围顺序是openid offline_access profile User.Read User.ReadBasic.All(出于某种原因,顺序很重要 - 至少在我的经验中)。

推荐阅读