Bot Framework Composer聊天机器人接入WhatsApp Business遇阻:DirectLine通道Postman测试授权失败求助
解决Azure Bot Framework Composer + DirectLine通道Postman未授权问题
听起来你卡在DirectLine的授权环节了,我之前帮几个开发者解决过类似的问题,咱们一步步来排查:
1. 先确认DirectLine密钥的正确性
别把Bot的Microsoft App ID/密码和DirectLine的密钥搞混了!在Azure Portal的Bot资源里:
- 进入左侧菜单的「Channels」,找到DirectLine通道点击「Edit」
- 这里的
Primary Key和Secondary Key才是你要用来请求DirectLine API的密钥,检查密钥是否过期(过期的话点击「Regenerate」重新生成)
2. 检查Postman获取Token的请求格式
获取DirectLine Token的第一步必须正确,否则后续所有请求都会报错:
- 请求URL:
https://directline.botframework.com/v3/directline/tokens/generate - 请求方法:POST
- Headers里必须添加:
Authorization: Bearer <你的DirectLine密钥>注意:Bearer后面要跟一个空格,然后直接粘贴密钥,不要加引号或者多余字符
如果这一步返回401,90%是密钥错误或者格式不对,再仔细核对一遍
3. 确认机器人本身是否正常运行
先排除机器人部署的问题:
- 回到Azure Bot资源的「Test in Web Chat」页面,发送一条消息看看机器人是否能正常回复
- 如果Web Chat也没反应,那可能是Composer发布时的参数配置错误(比如Microsoft App ID/密码和Azure里的不一致),或者App Service没正常启动(去App Service的「Overview」看状态是否是Running)
4. 后续会话请求要使用生成的Token,不是原始密钥
很多人在这里踩坑:拿到Token之后,创建会话、发送消息的请求,Headers里的Authorization要换成生成的Token,而不是DirectLine的原始密钥:
- 创建会话的URL:
https://directline.botframework.com/v3/directline/conversations - Headers:
Authorization: Bearer <刚才获取到的Token>
5. 排查网络/防火墙限制
如果以上都没问题,看看是不是IP被限制了:
- 进入Bot所在的App Service,左侧菜单「Networking」->「Access restrictions」
- 检查是否设置了IP白名单,如果有,暂时移除或者把Postman的IP加进去测试
另外,关于你最终对接WhatsApp的需求:等DirectLine测试通了之后,你可以用Twilio作为中间层——Twilio接收WhatsApp的消息,然后调用DirectLine API和机器人交互,再把机器人的回复转发回WhatsApp,这个流程是可行的,先把当前的授权问题解决就好。
内容的提问来源于stack exchange,提问作者Jose Leon
相关产品推荐
相关产品推荐

