Будьте в курсе всех новостей про IP-телефонию и Asterisk.

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

Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

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

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

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

База знаний Настройка Asterisk
Довольно часто компании в целях снижения расходов на исходящую связь используют симкарты операторов сотовой связи подключая их через 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) ;если оператор не соответствует ни одному из приведенных вызов перекидывается в контекст стандартных исходящих маршрутов.
На этом настройка маршрутизации по операторам завершена.

GSM-шлюз, sip, настройка, шлюз, Подключение, outbound, ODBC, определение номера, GSM, GSM шлюз, оператор связи