artem
30.12.2016
2660

Маршрутизация вызовов через GSM-шлюз в соответствии с оператором связи вызываемого номера

Довольно часто компании в целях снижения расходов на исходящую связь используют симкарты операторов сотовой связи подключая их через GSM-шлюз. И в такой ситуации возникает вопрос — а каким образом использовать резервы наиболее оптимально? 

Например, маршрутизировать вызовы в соответствии с оператором вызываемого абонента, ведь сейчас ситуация такова, что внутри сети каждого оператора, связь достаточна дешева, по сравнению с межоператорскими вызовами. Необходимо каким-то образом настроить маршрутизацию, казалось бы самый очевидный вариант расписать шаблоны, но даже в рамках одного региона таких шаблонов будет довольно много, а если брать в рамках всей страны, то времени на заведение будет очень много. Поэтому самым оптимальным вариантом будет использование базы номерных диапазонов, которая находится в публичном доступе на сайте Россвязи
Для решения нашей задачи данные номера необходимо внести в таблицу базы данных.
С указанного сайта базу номеров можно выгрузить в формате csv и подгрузить в ранее созданную таблицу базы данных.
Общий вид выписки в csv имеет нижеуказанные столбцы:

Выписка csv

ABC/DEF — код оператора (префикс)
От — начало диапазона
До — конец диапазона
Емкость — количество номеров (для наших целей ненужно — так что можно удалить)
Оператор — оператор связи, которому принадлежит номер
Регион — регион нахождения номера (в рамках данной задачи тоже необязателен)
В БД (если у вас уже есть asteriskcdrdb можно использовать ее) необходимо создать таблицу reestr, состоящую из 4 столбцов: code, from, to, operator.
Далее настраивается транк в GSM-шлюз и маршрутизация по префиксам в порты шлюза (на стороне шлюза надо определить префиксы), например, используется три SIM-карты (МТС, Мегафон, Билайн). Префиксы разделены следующим образом:
01 — Мегафон
02 — МТС
03 — Билайн
Главное условие подобной настройки иметь постоянную привязку оператора к порту, так как маршрутизация по префиксам в GSM-шлюзе работает по портам шлюза.

Далее необходимо настроить подключение Астериска, к базе данных через ODBC.
И составить запрос на определение оператора, записав его в файл func_odbc.conf.
Примерный вид запроса:

[OPERATOR]
dsn=asteriskcdrdb
readsql=select concat(‘operator’) from ‘reestr’ where code = substr(‘${EXTEN}’, 2, 3) and length(substr(‘${EXTEN}’, 5, 7)) = length(‘to’) and ((substr(‘${EXTEN}’, 5, 7) >= ‘from’ and substr(‘${EXTEN}’, 5, 7) <= ‘to’ ) OR (substr(‘${EXTEN}’, 5, 7) = ‘from’ AND substr(‘${EXTEN}’, 5, 7) = ‘to’))

Далее необходимо создать контекст, выбора маршрута. Приведен примерный вид:

[for-mobiles-out]
exten => _89XXXXXXXXX,1,NoOp(${CDR(recordingfile)})
same => n,Set(mobopoperator=${ODBC_OPERATOR(${EXTEN})})
same => n,NoOp(${mobopoperator})
same => n,Set(DIALSTATUS=)
same => n,GotoIf(${REGEX(“МегаФон” ${mobop})}?:mark1)
same => n,Dial(SIP/GSM-trunk/01${EXTEN},90)
same => n,NoOp(dialstatus01: ${DIALSTATUS})
same => n,Hangup
same => n(mark1),GotoIf(${REGEX(“Мобильные ТелеСистемы” ${mobop})}?:mark2)
same => n,Dial(SIP/GSM-trunk/02${EXTEN},90)
same => n,NoOp(dialstatus02: ${DIALSTATUS})
same => n,Hangup
same => n(mark2),GotoIf(${REGEX(“Вымпел-Коммуникации” ${mobop})}?:mark3)
same => n,Dial(SIP/GSM-trunk/03${EXTEN},90)
same => n,NoOp(dialstatus03: ${DIALSTATUS})
same => n,Hangup
same => n(mark3),Goto(outbound-route, normal) ;если оператор не соответствует ни одному из приведенных вызов перекидывается в контекст стандартных исходящих маршрутов.
На этом настройка маршрутизации по операторам завершена.

 
avatar
  Подписаться  
Уведомление о

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

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

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

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

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices