отделены друг от друга. Это позволяет независимо определять действия, выполняемые, скажем, при наборе номера 0: при нажатии кнопки 0 в голосовом меню компании А вы попадете к секретарю компании А, а при нажатии кнопки 0 в голосовом меню компании В - к секретарю компании В. (Эти примеры предполагают, конечно же, что мы задали для Asterisk перенаправление вызовов на секретарей при нажатии кнопки 0 вызывающими абонентами.)
Контексты различаются по именам. Имена контекстов заключаются в квадратные скобки ([ ]). Допустимыми символами для образования имени являются буквы от A до Z (верхнего и нижнего регистра), цифры от 0 до 9, дефис и символ подчеркивания1. Например, контекст для входящих вызовов выглядит так: [incoming]
Максимальная длина имени контекста - 79 символов (80 символов - 1 завершающий нуль).
Все инструкции, размещаемые после описания контекста и до описания следующего контекста, являются частью данного контекста. В начале диалплана находятся два специальных контекста, [general] и [globals]. Раздел [general] содержит список общих настроек диалплана (о которых, вероятно, вам никогда не придется беспокоиться), а контекст [globals] мы будем обсуждать в разделе «Глобальные переменные». Пока что достаточно знать, что эти два контекста являются специальными. Созданные вами контексты можно называть как угодно, только не используйте имена [general] и [globals].
При описании канала (а именно так выполняется подключение элементов к системе) одним из параметров этого описания является контекст. Иначе говоря, контекст - это точка диалплана, с которой будет начинаться обработка соединений, выполняемых через этот канал.
Другое важное применение контекстов (возможно, самое важное) - обеспечение безопасности. Правильно применяя контексты, определенным абонентам можно предоставить доступ к функциям (таким, как междугородная связь), которые недоступны для других. Если ди- алплан разработан неаккуратно, пользователи по вашей оплошности могут получить возможность мошенничать в вашей системе. Пожалуйста, помните об этом при построении системы Asterisk.
В подпапке doc/ папки исходного кода Asterisk находится очень важный файл, security.txt, в котором определено несколько шагов для обеспечения безопасности системы Asterisk. Вам чрезвычайно важно прочитать и понять этот файл. Если проигнорировать меры предосторожности, описанные там, все может закончиться тем, что кто угодно сможет делать междугородные и платные звонки за ваш счет!
Если не отнестись к безопасности своей системы Asterisk серьезно, может дойти до того, что вам придется за это дорого расплатиться в буквальном смысле этого слова!
Добавочные номера
в мире телекоммуникаций термин «
Синтаксис добавочного номера - это слово exten, за которым следует стрелка, образованная знаками равенства и «больше чем»:
exten =>
Далее указывается имя (или номер). В традиционных системах телефонной связи под добавочными номерами мы понимаем цифры, которые надо набрать, чтобы другой телефон зазвонил. В Asterisk это понятие намного шире; например, в качестве имени добавочного номера может использоваться любая комбинация цифр и букв. В данной главе и далее будут использоваться как цифровые, так и буквенно- цифровые добавочные номера.
Присвоение имен добавочным номерам может показаться революционной идеей, но если вспомнить, что многие транспортные протоколы VoIP поддерживают (или даже активно поощряют) вызовы по имени или адресу электронной почты, а не просто по номеру, это действительно имеет смысл. Это одно из свойств, делающих Asterisk такой гибкой и мощной системой.
Полный добавочный номер состоит из трех компонентов:
• Имени (или номера).
• Приоритета (каждый добавочный номер может включать множество шагов; порядковый номер шага называется его приоритетом).
• Приложения (или команды), которое выполняет некоторое действие
над вызовом. Эти три компонента разделяются запятыми:
exten => имя,приоритет,
exten => 123,1,Answer() В этом примере имя добавочного номера - 123, приоритет - 1, а приложение - Answer(). Теперь пойдем дальше и рассмотрим, что такое приоритеты и приложения.
Приоритеты
Каждый добавочный номер может включать множество шагов, называемых
exten => 123,1,Answer() exten => 123,2,Hangup()
Не переживайте, если вы не понимаете, что такое Answer() и Hangup(), мы очень скоро их рассмотрим. Здесь главное - запомнить, что для отдельного добавочного номера Asterisk выполняет приоритеты по порядку.
Ненумерованные приоритеты
В более старых версиях Asterisk нумерация приоритетов вызывала множество проблем. Представьте, что в добавочном номере 15 приоритетов и требуется добавить что-то в шаге 2. Номера всех последующих приоритетов пришлось бы менять вручную. Asterisk не обрабатывает пропущенные шаги или неправильно пронумерованные приоритеты, и отладка ошибок такого типа превращалась в бесцельную и досадную трату времени.
Начиная с версии 1.2 Asterisk решила эту проблему. Был введен приоритет n, что означает «следующий». Каждый раз, когда Asterisk встречает приоритет n, она берет номер предыдущего приоритета и добавляет 1. Это упрощает внесение изменений в диалплан, поскольку теперь не надо изменять номера всех шагов. Например, диалплан может быть таким:
exten => | 123,1 | Answer() | |
exten => | 123,n | ||