Вход/Регистрация
Asterisk™: будущее телефонии Второе издание
вернуться

Меггелен Джим Ван

Шрифт:

[employees]

exten => 124,1,Set(GLOBAL(GEORGE)=SIP/George)

Переменные канала

Переменная канала– это переменная, связанная только с конкретным вызовом. В отличие от глобальных переменных, переменные каналов определяются только на время текущего вызова и доступны лишь для каналов, участвующих в нем.

Для использования в диалплане предопределено множество переменных каналов. Они описаны в файле channelvariables.txt, находящемся в подпапке doc папки исходного кода Asterisk. Переменные каналов задаются с помощью приложения Set:

exten => 125,1,Set(MAGICNUMBER=42) Многие варианты использования переменных каналов будут рассмотрены в главе 6.

Переменные среды

Переменные среды– это средство организации доступа к переменным среды UNIX из Asterisk. Для их использования служит функция диалплана ENV. Ее синтаксис выглядит следующим образом: ${ENV(var)}, где var– переменная среды UNIX, на которую выполняется ссылка. Переменные среды используются в диалпланах Asterisk не часто, но они доступны на случай необходимости.

Добавление переменных в диалплан

Теперь, ознакомившись с переменными, применим их в нашем диалплане. Добавим глобальные переменные для двух людей, Джона и Джейн:

[globals][globals]
JOHN=Zap/1
JANE=SIP/Jane
[incoming]
exten => 123,1,Answer
exten => 123,n,Background(enter-ext-of-person)
exten => 123,n,WaitExten
exten => 1,1,Dial(${JOHN},W)
exten => 1,n,Playback(vm-nobodyavail)
exten => 1,n,Hangup
exten => 2,1,Dial(${JANE},10)
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]
exten => W1,1,Dial(${JOHN})
exten => john,1,Dial(${JOHN})
exten => 102,1,Dial(${JANE})
exten => jane,1,Dial(${JANE})

Сопоставление с шаблонами

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

Синтаксис сопоставления с шаблонами

Используемые в шаблонах буквы и символы представляют определенные группы символов. Шаблоны всегда начинаются с символа подчеркивания (_). Он указывает 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 находит более одного шаблона, соответствующего набранному добавочному номеру, она будет использовать наиболее точный из них (слева направо). Скажем, задано два следующих шаблона и абонент набирает 555-1212:

  • Читать дальше
  • 1
  • ...
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: