我配置了一个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值执行任何操作。
:如何使用TwiML和Twilio SIP域将自定义呼叫者名称传递给SIP设备?我不想覆盖数字,只是名字。并且仅在对注册到我的Twilio SIP域的设备的入站呼叫上。<?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;
长话短说
以防万一:如果您不是您的专业,请不要担心翻译成PHP;我可以从TwiML翻译:)
我配置了一个Twilio电话号码,以将入站呼叫定向到PHP Webhook。 Webhook使用一些附加信息来尝试查找有用的呼叫者名称。我也在使用Twilio的内置...
[不幸的是,这对于Twilio SIP域是不可能的。当前,无法通过TwiML设置呼叫者姓名。