我有一个配置为将入站呼叫定向到PHP Webhook的Twilio电话号码。 Webhook使用一些附加信息来尝试查找有用的呼叫者名称。我也在使用Twilio的内置CNAM查找,但是它们在加拿大不起作用(我总是以呼叫者的电话号码作为其名字)。
该Webhook旨在将呼叫首先转发到Twilio SIP域,我希望在那里可以应答大多数呼叫。如果认为紧急,其他呼叫将通过PSTN转发。
我已经可以提取相关名称了,但是我很难将这些信息转发给我的FXS(HT802)。根据设备的文档:
自动:设置为“自动”时,HT801 / HT802将按传入SIP邀请中的P声明身份标头,远程方ID标头和发件人头的顺序查找呼叫者ID。
我找不到在TwiML中通过SIP名词传递这些标头的方法。根据Twilio的文档:
http://www.grandstream.com/sites/default/files/Resources/ht80x_administration_guide.pdf
无需发送x-
即可发送UUI(用户对用户信息)标头
https://www.twilio.com/docs/voice/twiml/sip#custom-headers
如果发送不带X-前缀的标头,则Twilio将不会读取标头。结果,标题将不会在输出中传递。
对于上下文,这是到目前为止我正在使用的PHP代码的简化片段。注意:我实际上还没有使用$ callerName值做任何事情。
<?php
// Simple "starting value", in case we can't resolve the name.
// (will also resolve the numbers used for unknown/blocked IDs)
$callerName = FriendlyFormatPhoneNumber($_POST['From']);
use Twilio\Twiml;
$addOns = null;
if (array_key_exists('CallerName', $_POST)) {
$callerName = $_POST['CallerName'];
} elseif (array_key_exists('AddOns', $_POST)) {
$addOns = json_decode($_POST['AddOns']);
$teloName = $addOns->results->telo_opencnam->result->name;
// If we pulled a telo name, and it doesn't seem to be a phone number
// (in case that could happen), use the telo name.
if (isset($teloName) && preg_match('/.*[0-9]{4,}, $teloName') == 0) {
$callerName = $teloName;
}
}
$response = new TwiML;
$dialParams = array(,
'timeout' => 20,
'hangupOnStar' => false,
'answerOnBridge' => true,
'action' => API_BASE_URL . '/dial-callback.php'
);
$dialer = $response->dial($dialParams);
$dialer->sip('sip:101@mytwiliodomain.sip.us1.twilio.com;transport=tls');
echo $response;
长话短说:如何使用TwiML和Twilio SIP域将自定义的呼叫者姓名传递给SIP设备?我不想覆盖数字,只是名字。而且仅在对注册到我的Twilio SIP域的设备的入站呼叫上。
以防万一:如果您不是您的专业,请不要担心转换为PHP;我可以从TwiML翻译:)
答案 0 :(得分:0)
不幸的是,这对于Twilio SIP域是不可能的。当前,无法通过TwiML设置呼叫者姓名。