简而言之,我有一个Twilio Elastic SIP中继,并将我的PBX(Asterisk)配置为通过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;但现在似乎并非如此。
任何建议或指向正确方向的建议表示赞赏!
这将是一个问题。可编程语音 SIP 域要求呼叫者 ID 是经过验证的呼叫者 ID 或帐户中的 Twilio 电话号码,当呼叫公共交换电话网 (PSTN) 时。
将入站 CallerID 转发到出站目标的功能只能从呼叫转接上下文中工作(呼叫从 PSTN 进入 Twilio,然后使用拨号谓词将其转接到 PSTN 作为示例)。
"当您在响应 Twilio 的入站呼叫请求时使用时,被叫方会将入站呼叫者的号码视为呼叫者 ID。">