В файле 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
– реакция на истекшее время ожидания выбора. Если их не описать то при
истечении таймаута или при неправильно нажатой кнопке произойдет обрыв
соединения.
Комментариев нет:
Отправить комментарий