В статье настроим определитель номера с помощью Яндекс .Справочника. На трубке пользователя будет показываться Название фирмы, которые мы получим напрямую из яндекса. Для работы определителя требуется подключение к сети Интернет, в противном случае будет показываться просто номер.
В каталоге, где размещается fusionPBX (/www/fusionpbx) создаем файл обработки запросов yandex_cid.php.
В него помещаем следующий код:
<?php
$tel = $_GET['tel'];
$homepage = file_get_contents('https://yandex.ru/search/?text='.$tel.'');//Запрос
file_put_contents('/var/www/fusionpbx/cid'.$tel.'.txt', $homepage);
$html=file_get_contents('/var/www/fusionpbx/cid'.$tel.'.txt');
if (preg_match('|<div class="fact-answer typo typo_text_fact typo_line_m fact__answer"><b>*?>(.*?)<$
else $CallerID=$tel;
$len_f=$CallerID;
if (preg_match('|«(.*?)»|sei', $CallerID, $arr)) {
$CallerID = $arr[1];
$len_s = strlen($CallerID);
if ( $len_s == 0 ) {
$CallerID=$tel;
}
} else {
$CallerID=$tel;
}
$CallerID = mb_substr($CallerID , 0);
unlink('/var/www/fusionpbx/cid'.$tel.'.txt');
echo $CallerID;
?>
Данный код получает в переменной tel номер телефона без всяких знаков, одно строкой. Затем производиться поиск в яндексе, очистка от лишних вещей и выдается либо название фирмы, если яндекс о ней знает, либо просто номер телефона.
Именно такая реализация запроса выбрана, чтобы не встречать капчу, которую яндекс выдает при работе напрямую, поскольку он не любит ботов.
Для передачи в FusionPBX используется модуль cidlookup. Его необходимо включить в настройках: Advanced -Modules — CID Lookup — Default Enabled (true), Enabled(true). Затем нажать в разделе Action — Start.
Далее идем в файловую систему, ищем файл cidlookup.conf.xml (он находиться в /etc/freeswitch/auto_load.conf/) и в этом файле добавить следующие строки:
<param name="url" value="https://localhost/yandex_cid.php?&tel=${caller_id_number}"/>
После этого, нужно вернуться в FusionPBX и и разделе Inbound Routers добавить в dialplan следующие строчки:
action – set – effective_caller_id_name=${cidlookup(${caller_id_number})}
Поставить данное правило следует предпоследним или перед входом в IVR.
Теперь на телефонах абонентов будет высвечиваться имя компании, если она есть в Яндекс.Справочнике. Если ее нет, то будет показан номер. В Записях разговоров также будет показана компания.
Так же это решение можно использовать и во FreeSWITCH.
Tags: Freeswitch, FusionPBX, Ip-pbx