Azure 机器人本地与REST API测试正常 新增通道无法连接且Web Chat报未授权错误
通道访问失败的根本原因
- 本地Bot Emulator、Postman请求能成功,是因为测试场景下要么你关闭了身份校验,要么你主动生成了符合要求的身份令牌调用接口;而Azure官方通道(Web Chat、Skype等)向你的机器人发请求时,会自动携带微软官方签发的JWT身份令牌,你的机器人服务未正确完成该令牌的校验,就会返回401状态码。
- Skype无报错提示是因为通道的错误处理逻辑为静默失败,本质和Web Chat的401错误是同一个根因。
- 首先核对身份配置一致性:进入Azure门户对应Bot资源的「配置」页,复制页面显示的
Microsoft App ID,和你部署的机器人服务的环境变量/配置文件中的MICROSOFT_APP_ID、MICROSOFT_APP_PASSWORD值做对比,必须完全一致。如果遗忘App密码,可以进入对应应用注册页重新生成新的客户端密钥,两边同步更新即可。 - 检查身份校验逻辑:
- 如果你使用Bot Framework官方SDK开发,不需要手动写校验逻辑,只要确保身份配置正确,SDK会自动完成令牌校验。
- 如果你自行实现REST接口对接Bot Framework,必须严格按照要求完成JWT校验,校验规则必须包含:令牌签发方为Bot Framework官方地址、令牌受众为你的App ID、令牌未过期、签名合法。
- 定位具体错误点:可以在机器人服务的消息接口入口处添加日志,打印请求头的
Authorization字段,以及401错误的具体触发位置,快速定位校验逻辑的错误点。 - 修复完成后,先在Azure Bot资源的「Web Chat测试」页直接发消息验证,正常响应后再测试Skype通道即可。
内容的提问来源于stack exchange,提问作者kpg
相关产品推荐
相关产品推荐

