FreePBX CallerID Lookup или подстановка имени абонента из внешнего источника.
Функционал модуля CallerID Lookup Sources позволяет устанавливать некие источники для преобразования номерных идентификаторов входящих вызовов CID (caller ID) в имена.
А теперь самое интересное, получение информации от Yandex.
Так ваглядит страница Yandex.
Из блока Определитель номера в приложении «Яндекс» будем получать данные.
Создаем PHP скрипт на сервере FREEPBX и подключаем его согласно статье CallerID Lookup Sources
ya_callerid.php
<?php
$tel = $_GET['tel'];
$ch = curl_init('https://yandex.ru/search/?text='.$tel.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36');
$html = curl_exec($ch);
curl_close($ch);
if (preg_match('|<div class="fact-answer typo typo_text_l typo_line_m fact__answer"><b>*?>(.*?)</div>|sei', $html, $arr)) $CallerID = $arr[1];
else $CallerID='No CallerID#';
if (preg_match('|«(.*?)»|sei', $CallerID, $arr)) $CallerID = $arr[1];
$CallerID = mb_substr($CallerID , 0, -1);
echo $CallerID;
?>
Вызов данного скрипта
http://ВАШ_FREEPBX/script/ya_callerid.php?tel=74953694700
Покажет название компании в данном случае Экспо-Парк
Или её отсутствие в базе Yandex - No CallerID
No CallerID так же отображаеться при частых вызовах скрипта, так как Yandex блокирует данную возможность
Или добавить в extensions_custom.conf
[from-pstn-custom]
exten => s,n,Set(CALLERID(name)=${CURL(http://ВАШ_FREEPBX/script/ya_callerid.php?tel=${CALLERID(number)})})