Установка Asterisk. Урок 6. Dialplan. Extension.conf и первый звонок

Ну вот мы и добрались до сердца Asterisk! Dialplan — это движок Asterisk, где происходит вся магия Asterisk. Он находится в файле extension.conf. И здесь настраивается что набирать, как набирать и кому набирать.

Мы уже зарегистрировали два софтфона, а теперь давайте наладим между ними связь.

Dialplan это скриптовый язык программирования Asterisk. А значит у него есть свой синтаксис, как и у любого другого языка. Рассмотрим его. Итак, сторона A набирает сторону B.

exten — оператор набора Asterisk. 99% программистов Asterisk используют только его. Потому что в большинстве случаев этого достаточно.

Что набираем — по сути, это набор клавиш на телефоне

Номер действия — приоритет наших действия, которые будут происходить с вызовом. Чаще всего вам достаточно будет только 1-го приоритета.

Dial — оператор вызова. Ставится перед скобками.

Что вызывается — это устройство, которое будет вызываться. Его берут из файла sip.conf в папке asterisk

Таймаут — время в секундах, которое будет совершаться вызов, пока сторона B не возьмет трубку, или сторона A не устанет ждать и не повесит свою трубку. В данном пример таймаут стоит 20 секунд, а значит, если соединения не произошло, то через 20 секунд вызов просто оборвется. Если значение оставить пустым, вызов будет продолжаться 136 лет!

Приоритет вызова в Asterisk

Если нужно помимо просто звонка направить вызов дальше по истечению таймаута, применятся последовательность приоритетов.

exten => 1001,1,Dial()

exten => 1001,2,делаем что-то

exten => 1001,3,делаем что-то ещё

exten => 1001,4,сделаем ещё одну вещь

exten => 1001,5,Hangup()

Hangup() — оператор завершения вызова Asterisk. Можно упросить эту запись:

exten => 1001,1,Dial()

same => n,делаем что-то

same => n,делаем что-то ещё

same => n,сделаем ещё одну вещь

same => n,Hangup()

same — это по сути «тоже самое», то есть строка, которая относится к первой строке, как продолжение приоритетов.

n — порядковый номер приоритета. Берется из номера строки, следующей после основной или ниже.

Это удобная запись в Asterisk, так как она экономит время. А еще можно вставить новую строку в любое место и не переписывать наши приоритеты.

Какие еще бывают операторы вызова в dialplan кроме Dial и Hangup?

Dial – вызов

Wait – ожидание

Answer – ответ (был вместо Dial, но сейчас почти не используется)

Playback – проиграть звуковой файл

Voicemail – голосовая почта

Background – голосовое меню IVR

Goto – переход по цифре в IVR

Directory – вызов каталога

Hangup – закончить вызов

А теперь задание для вас. Опишите последовательность следующего вызова:

exten => 1001,1,Dial(SIP/1001,15)

same => n,Playback(vm-nobody)

same => n,Hangup()

Догадались? Правильно! Вызывается номер 1001. Если абонент в течение 15 секунд не взял трубку, вызов направляется на звуковой файл (извините, не могу ответить), а потом прерывается.

Чаще всего бывает так, что у вас в офисе большинство или даже все абоненты Asterisk не нуждаются в особых настройках и работают по одному шаблону. Давайте создадим этот шаблон:

exten => _10XX,1,Dial(SIP/${EXTEN},20)

Нижнее подчеркивание — крайне важная деталь шаблона dialplan. Именно она говорит, что далее будет шаблон.

X — маска, любые цифры от 0 до 9.

${EXTEN} — это место назначения вызова, соответствующее набору. То есть, то что набираем, туда и отправляем.

Контекст в dialplan Asterisk

Наш dialplan делится на контексты. Для исходящих вызовов контекст один, для входящих другой, для особых — третий, и так далее. Синтаксис контекста такой:

[general]

[from-internal]

Заключен в квадратные скобки и берется из файла sip.conf, мы о нем говорили, когда задавали настройки абонента. Вот тут:

 

Контекст [general] задается всегда и самым первым.

Итак, давайте позвоним в сам Asterisk! Заинтриговал?

[general]

[from-internal]

exten => 999, 1,playback(hello-world)

При наборе 999 (тут может поставить любое число) мы услышим первые слова нашего Asterisk: «Привет Мир!»

Ну а теперь пришло время наладить связь между нашими абонентами. Добавим туда еще 2 строки:

[general]

[from-internal]

exten => 999, 1,playback(hello-world)

exten => 1001,1,Dial(SIP/1001,20)

exten => 1002,1,Dial(SIP/1002,20)

или так:

[general]

[from-internal]

exten => 999, 1,playback(hello-world)

exten => _10XX,1,Dial(SIP/${EXTEN},20)

Смело звоните и смотрите в ваш CLI-интерфейс:

Лицезрите свой Первый Вызов!

Получилось? Поздравляю! Вы приобщились к когорте избранных! Можно и отпраздновать! )

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

В следующим уроке мы подключим транк — городскую линию с номером!

Коллеги, Экспертиза АТС предлагает вам пройти 2-хдневный дистанционный курс обучения Asterisk всего за 25 000 рублей. Подробности можно узнать по кнопке.

Комментарии

Комментариев пока нет. Почему бы ’Вам не начать обсуждение?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *