Кирилл Золотавин
12.04.2020
2546

Определение региона и оператора связи с помощью NumCAP

Описание: При организации колл-центра на базе Asterisk периодически возникает необходимость знать из какого региона именно поступил входящий звонок, например если в компании несколько филиалов по стране и требуется распределение входящих звонков в зависимости от региона на определенный филиал, или когда требуется оптимизировать расходы на исходящую связи в зависимости от оператора на номер которого осуществляется звонок. В данной […]

Описание:

При организации колл-центра на базе Asterisk периодически возникает необходимость знать из какого региона именно поступил входящий звонок, например если в компании несколько филиалов по стране и требуется распределение входящих звонков в зависимости от региона на определенный филиал, или когда требуется оптимизировать расходы на исходящую связи в зависимости от оператора на номер которого осуществляется звонок.

В данной статье мы рассмотрим разработку NumCAP, написанную на NodeJS

Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 7 + Asterisk 13 + FreePBX 14.

В статье использовались файлы:
numcap-default.zip
исходники NumCAP, а так же сконвертированная база плана нумерация Россвязи и примеры использования приложения NodeJS.

Инструкция:

1. Выполним подключение по SSH к серверу IP АТС Asterisk. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.

2. Подключим Epel репозиторий:

# yum install epel-release

Подключение Epel репозитория
Подключение Epel репозитория

3. Подключим репозиторий NodeJS v8:

# curl —silent —location https://rpm.nodesource.com/setup_8.x | bash —

Подключение NodeJS репозитория
Подключение NodeJS репозитория

4. После успешного подключения репозиториев выполним установку Node.js v8 LTS и npm:

# yum install nodejs

NumCAP_Asterisk_3. Установка NodeJS и npm

Установка NodeJS и npm
Установка NodeJS и npm

5. Приступим к установке дополнительного ряда зависимостей и скачиваю приложения NumCAP:

# cd /opt/

# git clone https://github.com/antirek/numcap.git

# cd /opt/numcap

# rm -rf package.json

# npm init —yes

# npm install request —save

# npm install numcap —save

Скачивания приложения NumCAP с GitHub
Скачивания приложения NumCAP с GitHub
Командой «nmp init» создаем package.json, который определяет настройки проекта, зависимости, скрипты, название и прочее.
Командой «nmp init» создаем package.json, который определяет настройки проекта, зависимости, скрипты, название и прочее.
Установка зависимости request и установка приложения NumCAP
Установка зависимости request и установка приложения NumCAP

6. Выполним обновление базы плана нумерации Россвязи:

# rm -rf /opt/numcap/data/*

# cd /opt/numcap/download

# wget https://rossvyaz.ru/data/ABC-3xx.csv —no-check-certificate

# wget https://rossvyaz.ru/data/ABC-4xx.csv —no-check-certificate

# wget https://rossvyaz.ru/data/ABC-8xx.csv —no-check-certificate

# wget https://rossvyaz.ru/data/DEF-9xx.csv —no-check-certificate

# cd ..

# node ncli.js —csv2json

Скачивание актуального плана нумерации
Скачивание актуального плана нумерации
 Конвертирование csv в json для NumCAP
Конвертирование csv в json для NumCAP

7. Создадим приложение js которое будет обращаться к NumCAP и возвращать регион звонящего на основе номера звонящего:

# nano /opt/numcap/region.js

И приведем данный скрипт к виду:

//Присваиваемой переменной phone значение номера звонящего

let phone = process.argv[2];

var numcap = require(‘numcap’);

var finder = new numcap();

//Выполняем обращение к NumCAP и возвращаем из массива data регион звонящего

finder.getData(phone, function (err, data) {

    console.log(data[«region»]);

});

 Скрипт region.js
Скрипт region.js
Тестовое выполнение скрипта командой «node /opt/numcap/region.js 84959898533»
Тестовое выполнение скрипта командой «node /opt/numcap/region.js 84959898533»

8. Перейдем к настройке Asterisk, для этого перейдём в WEB панель управления FreePBX через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида: http://IP_адрес_сервера_Asterisk/ В примере ссылка имеет вид: http://192.168.170.163/

 Главная страница FreePBX
Главная страница FreePBX

9. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»

 Авторизация во FreePBX
Авторизация во FreePBX

10. Перейдем в меню Admin → CallerID Lookup Sources → Add CIDLookup Source и создадим CIDLookup для правки имени звонившего(заполняемые данные не имеют значения, т.к. В последующем данный CIDLookup подвергнется кастомизации):

 Переход в меню CIDLookup Source
Переход в меню CIDLookup Source
 Создание  CIDLookup
Создание  CIDLookup

11. Добавим вызов CIDLookup во входящий маршрут, чтобы при поступлении входящего вызова к номеру звонящего в параметр имени подставлялся регион, для этого перейдем в меню Connectivity → Inbound Routes  Редактирование входящего маршрута и на вкладке «Other» в параметре «CID Lookup Source» выберем созданный ранее CIDLookup — region.

 Переход в меню входящих маршрутов
Переход в меню входящих маршрутов
Добавление во входящий маршрут вызова CIDLookup
Добавление во входящий маршрут вызова CIDLookup

12. Вернемся к консоли SSH и выполним кастомизацию созданного CIDLookup:

# nano /etc/asterisk/extensions_override_freepbx.conf

И приведем данный файл к виду:

[cidlookup]

include => cidlookup-custom

exten => cidlookup_1,1,Noop(NumCAP)

exten => cidlookup_1,n,Set(CALLERID(name)=${SHELL(node /opt/numcap/region.js ${CALLERID(num)})})

exten => cidlookup_1,n,Set(CALLERID(ANI-num)=${SHELL(node /opt/numcap/region.js ${CALLERID(num)})})

exten => cidlookup_1,n,Return()

Кастомизация CIDLookup
Кастомизация CIDLookup
Пример поступления входящего звонка
Пример поступления входящего звонка
Из массива data так же можно получить наименование оператора связи и использовать данную информацию для кастомизации исходящих звонков, к примеру если в компании используется GSM шлюз, то в зависимости от получаемого значения оператора набираемого мобильного номера клиента направлять звонок через соответствующие SIM карты операторов связи для оптимизации расходов на исходящую связь.
Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

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

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

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

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.