通过使用Microsoft Bot Framework将Cortana作为通道添加到我的机器人来获取错误

时间:2019-03-23 15:09:14

标签: c# botframework cortana

Cortana尝试验证我的Bot时出错

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

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

Error Image

Cortana Settings

2 个答案:

答案 0 :(得分:1)

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

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

此外,以下是我的最佳做法,可以使您的方案发挥作用:

  • 请勿将您的机器人的服务主体(应用程序注册)用于Cortana身份验证。
  • 相反在租户上创建专用的应用程序注册(例如,商标名称为 Cortana的您的Bot ),然后在您的Cortana频道配置(appId /客户端密钥)上进行配置)
  • 确保您不仅在机器人的Cortana通道配置上配置了范围,而且还需要在应用程序注册上进行配置(转到AAD-应用程序注册(预览)-API权限) 。请记住,Cortana通道配置上的作用域可以是应用程序注册上配置的作用域的子集。这就是为什么我建议为您的bot和Cortana专门注册应用程序的原因之一。
  • 确保在Cortana通道配置上的作用域顺序为 openid offline_access配置文件User.Read User.ReadBasic.All (出于某种原因,顺序很重要-至少以我的经验而言)。

答案 1 :(得分:0)

如果您遵循此指南...

希望您了解了范围。如果没有,请提交github评论以进行澄清。

需要User.Read来访问AAD IAM的配置文件。除非您要针对MS图进行配置文件调用,否则不需要它。

如果您只是针对AAD IAM登录,则需要openid范围。

如果您希望返回JWT令牌中的电子邮件地址,请添加电子邮件范围。

如果要在JWT令牌中使用用户个人资料数据(名称),则添加个人资料范围。

如果您希望Cortana为您处理刷新令牌(即每两小时不重新登录),请添加offline_access范围。

添加应用程序注册时,需要将所有这些范围授予Web应用程序,并添加cortana的重定向URI。如前所述,某些范围需要管理员授予(如果您使用的是AAD帐户)。

您的cortana频道配置必须(完全)请求这些作用域。

那么您将不会获得权限错误。

您可以通过对其进行解码来查看已授予JWT令牌哪些范围。