如果被叫方拒绝,Twilio呼出电话自动拨号两次

时间:2020-10-04 17:57:47

标签: twilio

我遇到的一个问题是,每当我从软拨号器(浏览器应用程序)发出出站呼叫并且被呼叫者(移动电话)拒绝呼叫时,twilio就会再次自动拨号到同一被呼叫者。但是,当被叫方拒绝twilio自动生成的第二个呼叫时,不会发生这种情况。

与Javascript相关的twilio代码:

const makeOutboundCall = () => {
let outboundCall = device.connect({        
    To: TO_NUMBER
});

outboundCall.on("ringing", (hasEarlyMedia) => {
    console.log("The call has started and the other phone is ringing.");
});

outboundCall.on("accept", (connection) => {
    console.log("The other person answered the phone!");
});

outboundCall.on("disconnect", () => {
  console.log("The other person hung up.");
});

}

服务器端Java webhook如下所示:

public String callByBrowserToMobile(@RequestParam String ApplicationSid, @RequestParam String ApiVersion, @RequestParam String Called, @RequestParam String Caller, @RequestParam String CallStatus, @RequestParam String To, @RequestParam String From, @RequestParam String CallSid,@RequestParam String Direction, @RequestParam String AccountSid) 

{

  Number number = new Number.Builder(To).build();
  Dial dial = new Dial.Builder().answerOnBridge(true).number(number).callerId(myTwilioNumber).build();
  VoiceResponse response = new VoiceResponse.Builder().dial(dial).build();
  logger.info(response.toXml());              
  return response.toXml();    

}

answerOnBridge(true)用于跟踪振铃并在UI端接受出站呼叫的状态。 使用github.com/TwilioDevEd/client-quickstart-js也可以复制该问题。

1 个答案:

答案 0 :(得分:0)

打开support ticket可能是最好的方法。终止服务提供商可能返回错误的SIP响应代码,这导致Twilio尝试跨另一提供商进行传递(因此是第二次呼叫),因为该响应代码表明运营商无法终止该呼叫。

Example

如果返回以下任何SIP状态代码(“ 2xx”,“ 400”, “ 404”,“ 405”,“ 410”,“ 416”,“ 482”,“ 484”,“ 486”,“ 6xx”),Twilio will 不会故障转移到下一个原始SIP URI。

相关问题