通过Twilio SIP域传递自定义CNAM

问题描述 投票:0回答:1

我配置了一个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-Asserted身份标头,远程方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 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:[email protected];transport=tls');
echo $response;

长话短说

:如何使用TwiML和Twilio SIP域将自定义呼叫者名称传递给SIP设备?我不想覆盖数字,只是名字。并且仅在对注册到我的Twilio SIP域的设备的入站呼叫上。

以防万一:如果您不是您的专业,请不要担心翻译成PHP;我可以从TwiML翻译:)

我配置了一个Twilio电话号码,以将入站呼叫定向到PHP Webhook。 Webhook使用一些附加信息来尝试查找有用的呼叫者名称。我也在使用Twilio的内置...

twilio twilio-api twilio-php twilio-twiml
1个回答
0
投票

[不幸的是,这对于Twilio SIP域是不可能的。当前,无法通过TwiML设置呼叫者姓名。

© www.soinside.com 2019 - 2024. All rights reserved.