В статье настроим определитель номера с помощью Яндекс .Справочника. На трубке пользователя будет показываться Название фирмы, которые мы получим напрямую из яндекса. Для работы определителя требуется подключение к сети Интернет, в противном случае будет показываться просто номер.

В каталоге, где размещается 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: , ,