Переменные
Добавление переменных в диалплан
Теперь, ознакомившись с переменными, применим их в нашем диалплане. Добавим глобальные переменные для двух людей, Джона и Джейн:
[incoming] |
exten => 123,1,Answer |
exten => 123,n,Background(enter-ext-of-person) |
exten => 123,n,WaitExten |
exten => 1,n,Playback(vm-nobodyavail) |
exten => 1,n,Hangup |
exten => 2,n,Playback(vm-nobodyavail) |
exten => 2,n,Hangup |
exten => i,1,Playback(pbx-invalid) |
exten => i,n,Goto(incoming,123,1) |
exten => t,1,Playback(vm-goodbye) |
exten => t,n,Hangup |
[employees] |
Сопоставление с шаблонами
Если мы хотим предоставить людям возможность осуществлять звонки
Синтаксис сопоставления с шаблонами
Используемые в шаблонах буквы и символы представляют определенные группы символов. Шаблоны всегда начинаются с символа подчеркивания (_). Он указывает Asterisk, что выполняется сопоставление с шаблоном, а не с явно заданным добавочным номером. (Безусловно, это означает, что имена добавочных номеров нельзя начинать с символа подчеркивания.)
Если не поставить символ подчеркивания в начале шаблона, Asterisk посчитает, что это просто именованный добавочный номер, и не будет выполнять сопоставления с шаблоном. Это одна из самых распространенных ошибок среди новичков в Asterisk.
После подчерка может использоваться один или более символов из перечисленных ниже.
X
Соответствует любому одиночному числу от 0 до 9.
Z
Соответствует любому одиночному числу от 1 до 9.
N
Соответствует любому одиночному числу от 2 до 9.
[15-7]
Соответствует любому однозначному числу из заданного диапазона. В данном случае шаблон соответствует одиночной цифре 1, 5, 6 или 7.
. (точка)
Универсальное соответствие; соответствует
1 Если не быть осторожным, сопоставления с групповым символом могут привести к тому, что диалплан будет делать совсем i не то, что предполагается (например, сопоставление с встроен- ными добавочными номерами, такими как i или h). Универсальное соответствие должно использоваться в шаблоне только после того, как сопоставлено максимально возможное количество цифр. Например, следующий шаблон, наверное, не должен применяться никогда:
На самом деле Asterisk предупредит в случае попытки его применения. Лучше по возможности используйте такой шаблон:
_X.
! (восклицательный знак)
Универсальное соответствие; соответствует
Чтобы использовать сопоставление с шаблонами в своем диалплане, просто вставьте шаблон на место добавочного номера (или его имени):
exten => _NXX,1,Playback(auth-thankyou) В этом примере шаблон соответствует трехзначному добавочному номеру в диапазоне от 200 до 999 (N соответствует любой цифре от 2 до 9, а каждый X - от 0 до 9). То есть, если бы абонент набрал любой трехзначный добавочный номер в диапазоне от 200 до 999 в данном контексте, он бы услышал звуковой файл auth-thankyou.gsm. Еще одна важная деталь, которую необходимо знать о сопоставлении с шаблонами: если Asterisk находит более одного шаблона, соответствующего набранному добавочному номеру, она будет использовать