Определение региона вызывающего абонента в IP-АТС Asterisk

Дмитрий Аверин
5 июля 2020
access_time3 минуты
remove_red_eye1135
Компания «Ланкрафт»
Компания «Ланкрафт»

Всегда полезно знать, откуда именно поступает звонок, не правда ли? Имея на руках такие данные, можно настроить маршрутизацию для клиента в зависимости от его региона.

К примеру, консультант 1 отвечает за столичный регион, консультант 2 – за Владивосток, и так далее. Определив регион, из которого поступает звонок, можно проиграть клиенту голосовое приветствие, специфичное для данного региона. Пример: «Добрый день! Вы звоните в компанию NAME. В Казани сегодня +15, сейчас вас соединят с консультантом». Здорово, не так ли?

К слову, подготовить подобные приветствия не составляет особого труда. Для этого существуют развернутые мануалы, объясняющие все по пунктам.

Поддерживать и регулярно обновлять базу данных, содержащую префиксы телефонов, довольно сложно. Как справиться с этой задачей? Здесь можно рекомендовать к использованию внешний API. Лучший вариант – если мы сможем применить его бесплатно. И мы таким располагаем.

NUMVERIFY.COM

Сервис numverify.com идеально подходит для выявления географической принадлежности телефонного номера. Он обладает понятным API, с которым легко работать. При этом сервисом можно пользоваться бесплатно. Правда, денег авторы не попросят только в том случае, если не выходить за пределы ограничения в 250 запросов к API в месяц (в среднем 12–13 штук в сутки).

Для использования сервиса необходимо пройти регистрацию на сайте.

Заходим на сайт numverify.com, жмем Sign Up на выбранном бесплатном тарифе, указываем контактные данные и получаем API-ключ.

Выполняем копирование ключа API и переходим к конфигурированию скрипта в Asterisk.

Телеграм-БОТ

Перед тем, как углубиться в параметры, создадим Telegram-бота.. Мы получим API-токен и ID чата.

СКРИПТ AGI

Переходя на этот этап, мы уже должны располагать API-токеном от Telegram-бота и ID группового чата. Далее загрузим и выполним AGI–скрипт Dial-плана Asterisk для обработки случае входящего вызова и пересылки сведений в Telegram.

СКАЧАТЬ СКРИПТ

После скачивания следует поменять расширение файла с .txt на .php.

Отлично! Не забудем сохранить скрипт как numverify.php, после чего загрузим его в папку /var/lib/asterisk/agi-bin. Для этого можно использовать, к примеру, WinSCP. Затем, подключившись посредством SSH к Asterisk, в консоли выполним следующие команды:

dos2unix /var/lib/asterisk/agi-bin/numverify.php

chown asterisk:asterisk /var/lib/asterisk/agi-bin/numverify.php

chmod 775 /var/lib/asterisk/agi-bin/numverify.php

Отредактируем диалплан, добавив строку вызова скрипта в контекст, обрабатывающий внешние входящие вызовы:

exten => _.,n,AGI(numverify.php)

Перезагрузим диалплан с помощью соответствующей команды:

dialplan reload

Проверим настройки и узнаем, что же у нас вышло. Звоним с номера 4996491825.

Тип линии landline – номер принадлежит городу. Mobile – номер мобильного оператора. И так дальше. Подробная информация по вопросу представлена в документации numverify.

Итак, все функционирует как надо, правда? А если нам поступит звонок из Владивостока? Для этих целей скрипт возвращает переменные, которые могут быть использованы далее в диалплане.

К примеру, для столицы можно делать возвращение в диалплан переменной со значением 1, для Казани – 2, для Владивостока – 3, для Челябинска – 4. С учетом этого значения и производится маршрутизация звонка.

С учетом того, в каком населенном пункте находится звонящий, мы можем выполнять индивидуальную маршрутизацию вызова.