IP-PBX своими руками. Часть 3 – маршрутизация звонков

Asterisk LogoПродолжаем наши эксперименты с Asterisk – сегодня расскажу немного о настройке маршрутизации исходящих звонком. После чего, попробуем объединить наш Asterisk с Oktell 🙂
Для чего нужна маршрутизация? Если мы захотим ограничить пользователей – кому можно выходить в город, а кому нет… И не только! В предыдущей статье мы разрешили пользователям осуществлять звонки друг-дружке…

Теперь о выходе через провайдера:

[dialout]
exten => _.,1,NoOp("Out Dial")
exten => _.,2,Dial(SIP/provider)
exten => _.,3,Hangup()

При поступлении звонка попавшего под наш маршрут первым делом выполнится команда NoOp под цифрой 1, затем маршрутизация звонка с помощью Dial и 3-м вызовет Hangup. Если мы хотим через код 81 на одного провайдера, а через 82 на другого, тогда это будет так:

exten => _81.,1,NoOp("Dial out provider 1")
exten => _81.,2,Dial(SIP/provider1)
exten => _81.,3,Hangup)
exten => _82.,1,NoOp("Dial out provider 2")
exten => _82.,2,Dial(SIP/provider2)
exten => _82.,3,Hangup()

Важный момент! Последовательность команд читается системой сверху-вниз. Помните об этом, когда будете создавать шаблоны для маршрутизации звонков.

В правилах Вы можете использовать строгие шаблоны. К примеру, для всех звонков, которые начинаются с “0” и содержат 10 символов, будет так:

exten => _0XXXXXXXXX,1,Dial(SIP/provider1)

Еще один пример, когда я набираю 811 – перемаршрутизировать звонок на SIP1 провайдера и убирать префикс 811:

exten => _811.,1,Dial(SIP/${EXTEN:3}@sip1-provider,30,r)

Конструкция ${EXTEN:3} извлекает все содержимое переменной, за исключением первых 3 цифры. Почитайте более детально о переменных Asterisk.

Пробуйте, экспериментируйте с вариантами! Успехов!

Leave a Reply

Your email address will not be published. Required fields are marked *