如何在Twilio上传递原始呼叫者ID? (Sip域语音URL配置)

时间:2019-04-11 13:01:41

标签: php twilio asterisk sip twilio-php

简而言之,我有一个Twilio弹性SIP中继,并配置了PBX(星号)以通过Twilio上的SIP域进行出站呼叫。登录Twilio时,我可以选择配置SIP域的语音配置URL,以便在拨出呼叫时,脚本会将呼叫传递到目的地。

无论出于何种原因,当我转接呼叫时,它都会传递该人的原始呼叫者ID,但现在它一直用我的办公室号码覆盖该呼叫者ID;当呼叫转移出去时,实质上是掩盖了原始呼叫者的呼叫者ID;这很烦人,我正在尝试找出解决问题的最佳方法。

我的目标是解决拨出电话的拨号问题,这样当外部转移呼叫时,应该显示个人的呼叫者ID,而不是我办公室的电话号码;

我的SIP域的语音URI的Twiml配置看起来像这样:

<?php
echo header('content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
$to=$_REQUEST['To'];
$callerId=$_REQUEST["callerId"];
/** Extracting user name **/
$pos1 = strpos($to,":");
$pos2 = strpos($to,"@");
$tosip=substr($to,$pos1+1,$pos2-$pos1-1);
if(strlen($tosip) == 3)
{
/**Extracting sip endpoint**/
    $pos2 = strpos($to,":",strpos($to,":")+1);
    $tosip=substr($to,$pos1+1,$pos2-$pos1-1);

    ?>
    <Response>
        <Dial>
            <Sip>
                <?php echo $tosip; ?>
            </Sip>
        </Dial>
    </Response>
    <?php } else { if(substr($tosip,0,2)=="00") $tosip=substr($tosip,2,strlen($tosip)-1); if(substr($tosip,0,3)=="011") $tosip=substr($tosip,3,strlen($tosip)-1); ?>
    <Response>
        <Dial callerId="<?php echo $callerId; ?>" >
            <?php echo $tosip; ?>
        </Dial>
    </Response>
    <?php } ?>

要成功转接电话,我必须将CallerId的$ GET参数设为我的办公室号码;但这会覆盖原始的呼叫者ID;过去我可以简单地称谓动词,而原来的呼叫者ID就会出现;但现在看来并非如此。

任何建议或指向正确方向的人都表示赞赏!

1 个答案:

答案 0 :(得分:0)

这将是一个问题。可编程语音SIP域在拨出公共交换电话网(PSTN)时,要求您的帐户中的CallerID为verified Caller ID或Twilio电话号码。

将入站CallerID转发到出站目的地的功能仅在呼叫转发上下文中有效(例如,呼叫从PSTN进入Twilio,然后使用Dial动词将其转发到PSTN)。

“当您在响应Twilio的入站呼叫请求时,被叫方会将入站呼叫者的号码视为caller ID。”