Twilio Device注册连接TWiML应用正常,但无法接听来电和拨打自定义号码
Twilio浏览器软电话问题解决方案
问题1:Device已注册但收不到来电通知、无法接听来电
原因
你当前绑定Twilio号码的TwiML应用,来电响应逻辑为固定呼出到+11111111111,未将来电路由到你注册的软电话客户端。
解决步骤
- 修改TwiML应用的来电处理接口逻辑,收到来电请求时返回如下格式TwiML:
<Response> <Dial> <Client>SG</Client> </Dial> </Response>
其中SG必须和你生成token时填写的identity参数完全一致,Twilio才会将来电推送给对应身份的已注册Device。
- 补充客户端接听逻辑,你当前代码仅打印来电日志,未执行接听操作,修改后示例:
device.on("incoming", call => { echo('Incoming call to device') // 可根据需求加用户确认逻辑,确认后调用accept即可接听 call.accept() })
问题2:调用device.connect传自定义号码无法呼出
原因
你当前的TwiML应用返回固定拨打+11111111111的内容,未读取客户端传递的To参数动态生成拨号规则。
解决步骤
- 你通过
device.connect传递的参数,会被Twilio以表单参数形式发送到TwiML应用的服务端接口,你需要在该接口读取To参数,动态生成TwiML,nodejs示例如下:
// TwiML生成接口示例(express框架) app.post('/你的TwiML接口路径', (req, res) => { // 读取客户端传的To参数,无参数时默认拨原来的+11111111111 const targetNumber = req.body.To || '+11111111111' const twiml = new Twilio.twiml.VoiceResponse() const dial = twiml.dial() dial.number(targetNumber) // 返回xml格式的TwiML res.type('text/xml') res.send(twiml.toString()) })
- 额外检查两项配置:
- 确认Twilio账号开启了目标号码所属地区的呼出权限
- 确认传递的号码为E.164标准格式(带
+前缀加国家码)
内容的提问来源于stack exchange,提问作者SamGoody
相关产品推荐
相关产品推荐

