Node.js中使用Twilio发起直拨电话遇异常问题求助
问题原因
你的代码逻辑重复触发了两次呼叫:
- 调用
client.calls.create时,to参数指定了目标号码,Twilio会先从from号码向该目标号码发起第一次呼叫。 - 对方接听后,Twilio执行你传入的
twiml内容,而你在Twiml中使用<Dial>指令再次呼叫同一个目标号码,这会触发第二次呼叫——这次Twilio会分配一个随机可用号码(即你看到的陌生号码)。
解决方案
根据直拨需求,选择以下两种正确写法之一:
写法一:直接建立两端通话(无需自定义Twiml)
去掉twiml参数,仅保留to、from和一个基础url(用于返回简单语音响应,确保通话正常建立):
client.calls .create({ to: '+122*********', from: '+144444*******', url: 'https://example.com/basic-twiml' // 该地址需返回类似 <Response><Say>Connected</Say></Response> 的Twiml })
写法二:用Twiml控制通话逻辑
如果需要通过Twiml自定义通话行为,不要同时将to参数设为目标号码,而是让Twilio先呼叫一个中间端点(比如你的from号码),再通过<Dial>连接目标号码:
client.calls .create({ twiml: '<Response><Dial>+122*********</Dial></Response>', from: '+144444*******', to: '+144444*******' // 填写发起呼叫的端点,接听后会自动Dial目标号码 })
如果你的需求只是简单从+144444*******直拨+122*********,写法一最直接,可彻底避免重复呼叫问题。
内容的提问来源于stack exchange,提问作者Yusuf
相关产品推荐
相关产品推荐

