Как я уже писал в статье Asterisk добавляем SIP клиентов.,
основной файл настроек, отвечающий за маршрутизацию звонков называется
extentions.conf. Разделение маршрутов для разных источников и клиентов
можно разграничивать с помощью контекстов, так называются секции
диалплана.
Например если вы хотите, что бы одним
пользователям был закрыт выход допустим на межгород, то просто не
включаете в тот контекст в котором зарегистрирован пользователь
соответствующий маршрут.
Как указывается контекст для пользователей SIP я уже рассказывал, точно так же можно указать и для любого другого типа каналов.
А теперь перейдем к работе с маршрутами.
К примеру укажем, что все звонки маршрутизируем по SIP на провайдера:
[dialout] exten => _.,1,Dial(SIP/provider)
В этом примере exten – с него обязательно начинается описание маршрута.
_. – это регулярное выражение описывает все маршруты.
1 – описываем порядок прохождения по маршруту.
Dial – команда на осуществление исходящего звонка в скобках описывается
соответственно тип канала и на какой канал маршрутизировать звонок.
Прохождение звонка может проходить через несколько строк, если необходимо выполнить несколько действий.
Это осуществляется так:
Здесь при поступлении звонка попавшего под наш маршрут первым делом
выполнится команда NoOp, в соответствии с заданной ей цифре 1, затем
выполнится перемаршрутизация звонка с помощью Dial и 3-м вызовет Hangup.
Так же есть возможность задать несколько маршрутов в одном
контексте. К примеру для выхода через одного провайдера использовать 8
в начале и через 9-ку для звонков через альтернативного провайдера
телефонии. Выглядит это так:
То при попытке совершить звонок локальному пользователю по 333 или
444, звонок уйдет по первому маршруту, попав под _. и уйдет на
провайдера.
Правильно описывать контекст так:
Вообще правило _. нужно использовать очень аккуратно. И желательно использовать более строгие правила.
В правилах можно использовать X – цифры от 0 до 9, Z – цифры от 1 до 9,
N – цифры от 2 до 9 или последовательности цифр в квадратных скобках. К
примеру для маршрутизации на номер начинающийся на 80 и состоящий из 11
цифр подойдет такое правило:
exten => _80XXXXXXXXX,1,Dial(SIP/provider1)
Подчеркивание в начале правила означает, что правило представляет изх себя регулярное выражение.
Или правило которое говорит маршрутизировать звонки из 7 цифр:
exten => XXXXXXX,1,Dial(SIP/provider1)
В общем тут может быть множество разных вариантов. В зависимости от необходимости.
Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/