среда, 7 мая 2014 г.

Заметки по диалплану(extensions.conf)

В файле extensions.conf имя екстеншена является шаблоном, если оно начинается с символа подчеркивания (_).
В именах шаблонных екстеншенов, следующие символы имеют специальное значение и трактуются особым образом:
X соответствует любому числу от 0 до 9
Z соответствует любому числу от 1 до 9
N соответствует любому числу от 2 до 9
[1237-9] соответствует любому числу или диапазону чисел, которые заключены в квадратные скобки (в данном случае: 1,2,3,7,8,9)
. специальный символ, соответствует одному или более символов (не только цифрам)
! специальный символ, соответствует отсутствию, одному или более символов (не только цифрам)

В Asterisk существуют глобальные и специфичные для каналов переменные, используемые в качестве аргументов для команд. Переменные записываются в диалплане в виде ${foo}, где 'foo' это имя переменной. Имена должны начинаться с буквы и могут состоять из любых цифр и букв, но существуют предопределенные имена, вот некоторые из них:
${CONTEXT} Текущий контекст. 
${EXTEN} Текущий екстеншен. 
${EXTEN:x} Текущий екстеншен с удалением первых цифр(где х кол-во удаляемых цифр) 
${PRIORITY} Текущий приоритет 
${CALLERID} Текущий CallerID (имя и номер) 
${CALLERIDNUM} Текущий номер Caller ID 
${CALLERIDNAME} Текущее имя Caller ID 
${RDNIS} перенаправление DNIS 

В правилах можно использовать X – цифры от 0 до 9, Z – цифры от 1 до 9, N – цифры от 2 до 9 или последовательности цифр в квадратных скобках. 
К примеру для маршрутизации на номер начинающийся на 80 и состоящий из 11 цифр подойдет такое правило:
exten => _80XXXXXXXXX,1,Dial(SIP/provider1)
Подчеркивание в начале правила означает, что правило представляет изх себя регулярное выражение.
Правило которое говорит маршрутизировать звонки из 7 цифр:
exten => XXXXXXX,1,Dial(SIP/provider1)
 [sip-in]
exten => 444,1,Goto(menu,s,1) 
[menu] 
exten => s,1,Set(home="/home/menu") 
exten => s,2,Wait(1)
exten => s,3,Playback(${home}/welcome)
exten => s,4,Playback(${home}/menu)
exten => s,5,WaitExten()
exten => 1,1,Playback(${home}/tariff)
exten => 1,2,Goto(s,1)
exten => 2,1,Dial(SIP/operator)
exten => t,1,Playback(make_choice)
exten => t,2,Goto(s,1)
exten => i,1,Playback(wrong_choice)

exten => i,2,Goto(s,1)
Goto – функция безусловного перехода. Если в качестве параметров ей передается 3 аргумента, это контекст, екстеншен и метка на которую нужно перейти. Если всего 2 аргумента, то подразумевается, что контекст текущий. Так же появились екстеншены i – это реакция на неправильно нажатую кнопку, Invalid input и t – реакция на истекшее время ожидания выбора. Если их не описать то при истечении таймаута или при неправильно нажатой кнопке произойдет обрыв соединения.

Комментариев нет:

Отправить комментарий