Twilio Media Streams握手错误31920排查求助
排查Twilio错误码31920的方向建议
针对你遇到的Twilio返回错误码31920、播报提示语后随即挂断的问题,结合你已经确认服务器支持TLS1.2的前提,给你以下具体排查方向:
验证Direct Line WebSocket URL的有效性
- 首先确认返回给Twilio的wss链接是否未过期:Direct Line令牌默认有30分钟有效期,若生成后间隔过久再使用可能失效。可以用
wscat -w 5 "你的完整wss地址"命令测试连接(需提前安装wscat工具),查看能否成功建立WebSocket连接并正常交互。 - 检查生成令牌所用的Direct Line密钥是否正确:确保用的是对应环境的密钥(生产/测试密钥不要混用),且关联的Bot服务处于正常运行状态,无限流、暂停等情况。
- 首先确认返回给Twilio的wss链接是否未过期:Direct Line令牌默认有30分钟有效期,若生成后间隔过久再使用可能失效。可以用
检查Twilio Stream标签的参数与格式
- 确认
<Stream>标签的name属性符合规范:尽量使用字母、数字和下划线组合,避免特殊字符(Twilio对该属性虽无强制限制,但异常字符可能引发解析问题)。 - 核实WebSocket URL的完整性:检查令牌
t=后的内容是否被截断,XML响应中是否存在换行、空格导致URL拆分的情况。可以通过查看Web应用返回给Twilio的原始响应,确认整个wss地址是完整无缺的。
- 确认
确保XML响应格式完全合规
- Twilio对TwiML格式要求严格,需确认:
- XML声明
<?xml version="1.0" encoding="UTF-8"?>位于响应最开头,无任何前置空格或换行; - 所有标签闭合正确,且大小写无误(Twilio标签区分大小写,
<Response>、<Start>等标签需严格按首字母大写的格式书写); - 可以用本地工具如
xmlstarlet val -e your_response.xml验证XML语法是否合法。
- XML声明
- Twilio对TwiML格式要求严格,需确认:
排查Bot服务与WebSocket连接的交互逻辑
- 查看Bot服务的日志,确认是否接收到Twilio通过Direct Line WebSocket发送的连接请求:若Bot无相关日志,说明WebSocket连接未成功建立,问题大概率出在URL或权限环节。
- 确认Bot支持Twilio的音频格式:Twilio Stream发送的音频为PCMU(8kHz、单声道),需确保你的Bot已正确配置Direct Line Speech,流式端点正常开启且能处理该格式的音频输入。
利用Twilio调试工具定位细节
- 登录Twilio控制台的Debugger模块,查看该错误对应的详细日志:里面会包含具体的失败原因(如握手失败、令牌无效、连接超时等),这是定位问题最直接的依据。
- 确认Webhook响应的及时性:Web应用需在收到Twilio请求后立即返回200 OK响应,若处理耗时过长,Twilio会因超时断开连接引发错误。
内容的提问来源于stack exchange,提问作者JIB
相关产品推荐
相关产品推荐

