在 microsoft bot 框架上使用 webchat 获取 403 Forbidden

Posted

技术标签:

【中文标题】在 microsoft bot 框架上使用 webchat 获取 403 Forbidden【英文标题】:Getting 403 Forbidden with webchat on microsoft bot framework 【发布时间】:2017-05-28 15:40:02 【问题描述】:

我在这里遵循了选项#4: https://github.com/Microsoft/BotFramework-WebChat/blob/speech/samples/speech/index.html 并使用了我的 COGNITIVE_SPEECH_API_KEY。但是,即使代码似乎按照 docs 的预期在请求中的 Authorization 标头中传递,我仍然收到 403 禁止。

这是我从 Chrome 开发者工具中捕获的请求和响应:

请求

网址: wss://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?format=simple&language=en-US&Authorization=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..kK1bx_kWllytyDvdqSZlb0_HUwaLX-V6OGJGeJ3fI2 =9B408F2612DE4902A2D37EEACC8FB350

请求方法:GET

状态码:403禁止

响应标头

内容长度:0

日期:2017 年 5 月 28 日星期日 15:10:31 GMT

服务器:Microsoft-IIS/10.0

X-MSEdge-Ref:参考 A:B1DBE1CCBEEA44A6B0213CB1CF8B8CA6 参考 B:DEN02EDGE0314 参考 C:2017 年 5 月 28 日星期日 08:10:31 PST

请求标头

接受编码:gzip、deflate、sdch、br

接受语言:en-US,en;q=0.8

缓存控制:无缓存

连接:升级

Cookie:_IFAV=A=422B5EB35D6227B47A899A55FFFFFFFF&COUNT=0&SEEALL=2&VRSN=2; SRCHD=AF=NOFORM; SRCHUSR=DOB=20160521; MSFPC=ID=a0c448564466a044a98c006abcccbaf0&CS=3&LV=201608&V=1; _RwBf=s=10&o=0&A=422B5EB35D6227B47A899A55FFFFFFFF; MUID=2350DC04198E61F62654DA0E1D8E6287; _U=1Y4QobYDPj3fzheUKiZ5uMdlvmGHvPLxng61hD9XLEWEhcPAfnXyj4UgFgyOMlw6jiTZJaP9wfqB4D6B2UYIV7_jbXnm5WTRM0ycCG-1F5YbfcPhiTR4SdgSkfPadkYRd; WLID=qgIk0rgVNCI8HNV2Z4g8xFSkWTapYBjrDBYC04Zh/6JNzAhx2KtSiq+zTmKuyODQY3+IA3XDFhKybijk6ArfNlzdJ448JV1JBNO/mmbbcGQ=; 匿名=A=422B5EB35D6227B47A899A55FFFFFFFF&E=13d0&W=1; NAP=V=1.9&E=1376&C=GKfvIsAF38G7JJpiBtQFE1j-85HTsObRYo50Mrr-fkR1HpimpRoSRA&W=1; ULC=T=CCC1|4:3; SRCHHPGUSR=CW=1329&CH=716&DPR=2&UTC=-360

主持人:speech.platform.bing.com

来源:https://ignitiontestbotweb.azurewebsites.net

编译指示:no-cache

Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits

Sec-WebSocket-Key:+oV+WOyiaN3VFOIYmX1t3w==

Sec-WebSocket-Version:13

升级:websocket

用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36


bing Speech API 似乎随机接受调用。十分之一的连接尝试通过 101 Switch Protocols 状态代码成功。对于相同的请求。

成功

请求 URL:wss://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?format=detailed&language=en-US&Ocp-Apim-Subscription-Key=0825dc93563445aca227aa125404c299&X -ConnectionId=2679C505D3D742A5809D1F08A1934E08

请求方法:GET

状态码:101 切换协议


失败(对于相同的请求)

请求网址:wss://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?format=simple&language=en-US&Ocp-Apim-Subscription-Key=0825dc93563445aca227aa125404c299&X -ConnectionId=2A47A79398D941ACB3F67A9580B908E3

请求方法:GET

状态码:403禁止

【问题讨论】:

这个演示对你有用吗?您只需粘贴您的 API 密钥。 htmlpreview.github.io/?https://github.com/Azure-Samples/… 好吧,我也一样,但请不要将凭据 API 密钥放在这里。您确定您的密钥对应于“Bing Speech API”吗?您可以在 Azure 门户中查看。 它不是 Bing Speech API ......它用于自定义语音 API。但根据文档,它看起来使用的是相同的 API。 不,这是两种不同的服务,我认为密钥不能互换 尝试使用此代码github.com/Microsoft/BotFramework-WebChat/tree/speech 实现WebChat bot,内部使用github.com/Azure-Samples/SpeechToText-WebSockets-javascript/…。您是否知道从 WebChat 而不是常规的 Bing Speech API 调用自定义语音 API 的方法?你是对的...我查看了docs.microsoft.com/en-us/azure/cognitive-services/…,并在注释框中说不支持 WebSockets。 【参考方案1】:

如 cmets 中所述,您尝试使用的密钥对应于 Custom Speech Service API,而您尝试运行的示例 needs 对应于 Bing Speech API 密钥。 Bing Speech 是提供 Speech to Text 功能的服务。

【讨论】:

以上是关于在 microsoft bot 框架上使用 webchat 获取 403 Forbidden的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft bot 框架获取用户时区

使用 Team 的附件按钮将文件上传到 bot 应用程序时,Microsoft Teams 返回错误

Nodejs 和 microsoft bot 框架

具有多个 BOT 集成的 Microsoft Chat BOT

我的 microsoft bot 框架在数字海洋中不起作用

Microsoft bot 框架 - Bot 频道注册。无法将录制的视频从 Skype 保存到 Azure 存储帐户