微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如果被叫方拒绝,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也可以复制该问题。

解决方法

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

Example

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。