简而言之,我有一个Twilio Elastic SIP Trunk并配置我的PBX(Asterisk)通过Twilio上的SIP域进行出站呼叫;登录Twilio时,我可以选择配置SIP域的语音配置URL,这样当拨打电话时,脚本会将呼叫传递到目的地。
无论出于何种原因,它都会在我转发呼叫时传递该人的原始来电显示,但现在它会用我办公室的号码覆盖来电显示;当呼叫被转出时,基本上掩盖原始呼叫者的呼叫者ID;这很烦人,我正试图找出解决它的最佳方法。
我的目标是修复出站拨号,这样当外部转接呼叫时,应显示个人的来电显示,而不是我办公室的号码;
我的SIP Domain的语音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参数;但这会覆盖原来的来电显示;过去我可以简单地调用动词,原始的来电显示会出现;但现在似乎并非如此。
任何正确方向的建议或观点值得赞赏!