问题:
错误:POST 到“ https://CortanaBFChannelWestUS.azurewebsites.net/v3/conversations/../activities/6TZfwIQ7Fqv ”失败:[500] Request._callback 的内部服务器错误(D:\home\site\wwwroot\node_modules\ botbuilder\lib\bots\ChatConnector.js:675:46) 在 Request.self.callback (D:\home\site\wwwroot\node_modules\request\request.js:185:22) 在 emitTwo (events.js:106 :13) 在 Request.emit (events.js:191:7) 在 Request. (D:\home\site\wwwroot\node_modules\request\request.js:1161:10) 在emitOne (events.js:96:13) 在Request.emit (events.js:188:7) 在IncomingMessage。(D:\home\site\wwwroot\node_modules\request\request.js:1083:12) 在 IncomingMessage.g (events.js:291:16) 在 emitNone (events.js:91:20)
架构: Aure Web-Bot:NodeJS SDKv3 Microsoft App Dev Luis 渠道:Web/Cortana/Skype OAuth
场景: 根据话语命中意图后,应用程序成功向用户显示“登录”卡片并要求用户登录
之后,用户能够使用使用 OAuth 进行身份验证的凭据成功登录以访问 Office 365
TestCase: Channel Skype: 成功显示和登录 Channel Web: 成功显示和登录 Channel Cortana: Fail (没有显示“签到”卡)
频道 Cortana:失败(不显示“登录”卡)现在我在 iphone 上使用 Cortana 应用程序,对于相同的 utterance-intent-action 这就是发生的情况
而控制台上出现的错误如上图
笔记:
在 Web-Bot 框架内 当它是 Skype 或 Web 作为通道时,OAuth 的回调被映射到
server.get('/api/OAuthCallback',
passport.authenticate('azuread-openidconnect', { failureRedirect: '/'}),
(req, res) => {
const address = JSON.parse(req.query.state);
const messageData = { accessToken: req.user.accessToken, refreshToken: req.user.refreshToken, userId: address.user.id, name: req.user.displayName};
var continueMsg = new builder.Message().address(address).text(JSON.stringify(messageData));
bot.receive(continueMsg.toMessage());
res.send('Welcome ' + req.user.displayName + '. Login successful. You can close this browser window')
});
实现的 OAuth 的基本思想是 URl 映射到 Web-App-Platform 中定义的回调。
但是 Cortana 确实说Cortana MSA 身份验证并且没有用
- 一方面,URL 映射到https://www.bing.com/agents/oauth,而不是在 web-app-bot-url/api/OAuthCallback 中定义的回调
- 鉴于他们指定的拱门,有人可以解释身份验证如何为 Cortana 工作
任何人都可以阐明我所知道的问题到底是什么,就理解而言,我遗漏了一些重要的东西。
谢谢