Эта статья описывает принцип работы исходящей маршрутизации, шаблонах и правилах набора номера, расскажет что такое префикс и приставка в FreePBX Distro (дистрибутив Линукса с предустановленным Астериском и FreePBX), но как и прежде по аналогии можно будет настроить и другие дистрибутивы с Астериском которые используют FreePBX, например Elastix или Trixbox.
Итак, для того что бы астериск мог совершить звонок вне нашей IP-АТС он должен знать какой номер (в каком формате) по какому транку передать. Для этого предназначен раздел Исходящая маршрутизация (Outbound Routes), в нём мы можем создать несколько маршрутов в каждом маршруте может быть использовать несколько транков. Маршруты астериск перебирает по порядку сверху вниз, как только находит совпадение в шаблоне номера использует транки в маршруте, перебирает их так же сверху вниз, если первый маршрут по какой-то причине не сработал (например занят, не работает, какой-то иной сбой) используется второй и так далее по списку.
Учитывая то что маршруты перебираются сверху вниз, первыми по списку лучше пускать более детальные маршруты, например с кодом города, после них пускать маршруты с более общей маской например мобильники, затем уже страну, потому что если сделать наоборот то сработает маршрут страны, но не сработают остальные, впрочем остановимся более подробно на шаблонах (Шаблоны номеров, используемые на этом маршруте \ Dial Patterns that will use this Route).
В шаблоне есть поля: приставка(prepend), префикс (prefix) и совпадение шаблона (match pattern), раньше были не поля, в какой-то момент времени использовалась запись как в конфиг файлах астериска
prepend+prefix|match_pattern
т.е. после приставки идёт плюс (+), за префиксом идёт |
Приставка
Приставка это любые цифры которые Астериск подставит перед номером, префикс это цифры которые астериск уберёт из номера, шаблон это шаблон. В шаблоне мы можем использовать следующие обозначения: X — одна цифра от 0 до 9, Z — одна цифра от 1 до 9, N — одна цифра от 2 до 9, ну и конечно мы можем использовать и сами цифры.
Например, если нам нужен шаблон для номеров от 100 до 199 мы можем использовать 1XX.
Если абонент (пользователь) набирает номер 101 то он попадает под шаблон 1ХХ, что ещё можно сделать. Например у вас в городе используется 7-мизначная нумерация, а транк провайдера пропускает номера только вместе с кодом города, пусть код города будет 861, а номер надо набирать в международном формате, т.е. нам надо что бы абонент набрал номер 2999831, а астериск бы позвонил по номеру 78612999831, для этого будем использовать приставку (prepend) в шаблоне. итак приставка будет 7861, а шаблон XXXXXXX. Тут приложу картинку что бы было понятно.
это же в формате конфиг файла
7861+XXXXXXX
Префикс
Так работает приставка, зачем же тогда нужен префикс? Ну давайте рассмотрим пример с нелюбимой для меня 9кой, раньше на старых аналоговых АТС для того что бы выйти на городскую линию надо было дополнительно набирать 9ку перед номером, в IP-АТС Asterisk такой ерунды делать не надо, но многие по привычке (пользователей) добавляют этот архаизм. Итак, пример такой, абонент набирает 92999831, а нам на выходе надо получить 78612999831. В качестве приставки (prepend) мы используем код города и код страны 7861, в качестве префикса (prefix) используем 9, а шаблон номера будет 7 любых цифр — XXXXXXX, для наглядности снова картинка.
7861+9|XXXXXXX
Теперь представим что у вас выход в город не через IP провайдера, а через голосовой шлюз, а значит нам в город надо выпускать номер в 7мизначном формате и без 9ки, представим на минуту, что некоторые наши абоненты уже привыкли набирать просто 7 цифр без 9ки для звонков в город, а другая часть до сих пор рефлекторно 9ку добавляет, в одном маршруте, как я уже писал, можно использовать несколько шаблонов, для добавления шаблона в маршруте используем кнопку Добавить ещё поля (Add More Dial Pattern Fields). Итак наш абонент набирается номер 2999831 или 92999831, а астериск должен отправить на шлюз 2999831, выглядеть такой маршрут будет примерно так:
9|XXXXXXX XXXXXXX
Совет
Махинации с префиксами и приставками можно делать не только в исходящей маршрутизации, но так же и в самом транке. Но если в исходящей маршрутизации шаблон используется для определения в какой транк запустить вызов, то в самом транке это уже на шаблон, а маска, т.е. если астериск передаёт номер в транк который не соответствует маске, то вызов совершён не будет, если не задавать маску в транке, то и проверки никакой проводится не будет, астериск пропустит все номера. Если вы только начинаете изучать FreePBX, то лучше не использовать Правила для манипуляции набранными номерами (Dialed Number Manipulation Rules) пока не сумеете совершить хотя бы один звонок без правил.
В дальнейшем поскольку использовать префикс и приставку как я уже писал можно и в транке и в исходящей маршрутизации, лучше делать так, в исходящей маршрутизации все номера приводить в международный формат (код страны — код города — номер телефона, 78612999831 для примера), а уже в самом транке приводить в нужный вам формат.
Пример
Рассмотрим такой пример:
У нас есть 4 транка:
Gateway — голосовой шлюз, который подключён через обычные телефонные линии в городскую сеть (ТФоП), используется 7мизначная нумерация, код выхода на межгород 8. Выгодно использовать для звонков внутри города, но абсолютно не выгодно использовать для всех остальных направлений.
Trunk L — провайдер, использует международный набор номера (т.е. через 7), его выгодно использовать для звонков в Москву и вполне можно использовать для звонков в город, если голосовой шлюз занят или не работает, также будем использовать как резервный для звонков на мобильники.
Trunk M — провайдер, использует международный набор номера (т.е. через 7), его выгодно использовать для звонков на мобильные телефоны и для звонков по России.
Trunk T — провайдер, использует наш местный формат набора номера (т.е. через 8), его можно использовать как резервный для звонков в Москву и по России.
В рассматриваемом примере можно выделить 4 направления, т.е. будем использовать 4 маршрута — это город, мобильники, Москва и Россия. В примере в маршрутах я буду приводить формат набора номера к международному, а в самом транке выворачивать в формат который требует сам транк. Первыми настраиваются транки, затем исходящие маршруты.
Информацию о том как создать транк и настроить его Вы можете прочитать в статье по настройке мультифона для FreePBX Distro. Я же сосредоточу внимание только на шаблонах и правилах.
Транки
Итак транк Gateway:
Тут всё просто. Преобразуем номер из международного в местный, больше ничего не пропускаем, 9 будем убирать в маршруте.
Trunk L:
Тут всё просто, никаких манипуляций нам делать не нужно, но мы хотим пропустить через этот транк только звонки в Москву и звонки в город.
Trunk M:
Опять таки, никаких манипуляций, но разрешаем звонить через этот транк в любую точку России. Поскольку маска в транке определяет не направление звонков, а только разрешение на прохождение определённых номеров то добавлять маску мобильников (79XXXXXXXXX) нет смысла, ибо она входит в маску России.
Trunk T:
Как и в предыдущем случае задаём маску которая разрешает звонить по всем направления в России. Мы не добавляем маску мобильников и Москвы, маска этих направлений уже перекрывается маской России. Исключение составляет только то что мы убираем 7ку и добавляем 8ку, поскольку наш провайдер пропускает номера так как это привычно делать с обычного телефона — через 8ку, 8 код города, номер телефона.
Маршруты
Переходим к маршрутам, маршруты надо составлять по принципу чем уже шаблон тем он выше. Самые узкие шаблоны у нас город и Москвы. Друг друга они не перекрывают поэтому нет разницы в каком порядке их размещать, начнём с города. Чтобы добавить новый маршрут выбираем раздел Подключения (Connectivity) — Исходящая маршрутизация (Outbound Routes) и там жмём кнопку Добавить маршрут (Add Route).
Задаём название маршрута
Задаём шаблон номера, помним что абоненты будут набирать либо просто 7 знаков либо 7знаков с 9кой. Врядли будут набирать номер с кодом города, но мы будем приводить номер в международный формат.
Следующим шагом выбираем транки через которые будет звонить Астер по этому маршруту. В случае с городом буде транк Gateway и Trunk L. И жмём кнопку Сохранить изменения (Submit Changes).
Этот маршрут готов, переходим к Москве. Помним что абоненты скорее всего будут набирать по привычке код Москвы через 8ку, а может быть даже через 9-8.
Задаём транки, выше я писал что для этого направления будем использоваться Trunk L и Trunk T. Не забываем сохраняться.
Остаются ещё два маршрута Россия и мобильники. Россия имеет более широкую маску чем мобильники, поэтому сначала добавляем маршрут на мобильники, иначе маршрут Россия перекроет маршрут для мобильников.
Для этого направления мы договорились использовать Trunk M и Trunk L
Последний маршрут — Россия.
Ну вот и всё. Не забываем применить настройки (большая красная кнопка). Должно получиться примерно как-то так:
Если остались вопросы, а может быть пожелания, замечания итп — высказывайтесь в комментариях, рад буду ответить.