通过 Twilio SIP 域传递自定义 CNAM



我配置了一个Twilio电话号码,用于将入站呼叫定向到PHP webhook。webhook 使用一些插件信息来尝试查找有用的调用者名称。我也在使用Twilio的内置CNAM查找,但它们在加拿大不起作用(我总是得到呼叫者的号码作为他们的名字(。

webhook 旨在首先将呼叫转发到 Twilio SIP 域,我希望我将在那里接听大部分呼叫。其他呼叫(如果被视为紧急呼叫(将通过 PSTN 转接。

我已经到了可以提取相关名称的地步,但是我很难尝试将该信息转发到我的FXS (HT802(。根据设备的文档:

http://www.grandstream.com/sites/default/files/Resources/ht80x_administration_guide.pdf

自动

:设置为"自动"时,HT801/HT802 将在传入 SIP 邀请中按 P 断言身份标头、远程方 ID 标头和发件人标头的顺序查找主叫方 ID

我无法找到通过 TwiML 中的 SIP 名词传递这些标头的方法。根据 Twilio 的文档:

https://www.twilio.com/docs/voice/twiml/sip#custom-headers

UUI(用户到用户信息(标头可以在不预置 x- 的情况下发送

https://www.twilio.com/docs/voice/api/sending-sip#sip-x-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 TwilioTwiml;
$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翻译:)

不幸的是,这在Twilio SIP域中是不可能的。目前,无法通过 TwiML 设置来电者姓名。

最新更新