Asterisk™: будущее телефонии Второе издание
Шрифт:
Основы диаллана
Все должно быть сделано настолько просто, насколько это возможно, но не проще. – Альберт Эйнштейн (1879-1955)
Диалплан, поистине, - сердце любой системы Asterisk, поскольку он определяет, как Asterisk обрабатывает входящие и исходящие вызовы. По сути, он состоит из списка инструкций или шагов, которым будет следовать Asterisk. В отличие от традиционных систем телефонной связи, диалплан Asterisk является полностью настраиваемым. Чтобы добиться успеха в построении собственной системы Asterisk, необходимо понять концепцию диалплана.
Если вы пытались прочитать некоторые примеры диалпланов и сочли их невыполнимыми или
Синтаксис диалплана
Диалплан Asterisk определен в конфигурационном файле extensions. conf.
Файл extensions.conf обычно находится в папке /etc/asterisk/, но его местоположение может меняться в зависимости от того, как установлена Asterisk. Этот файл часто размещается в папках /usr/local/asterisk/etc/ и /opt/asterisk/etc/.
Диалплан состоит из четырех основных элементов: контекстов, добавочных номеров, приоритетов и приложений. В следующих нескольких разделах будут рассмотрены все эти части и то, как они работают вместе. После объяснения роли каждого из этих элементов в диалпла- не перейдем к процессу поэтапного создания базового функционального диалплана.
Образцы конфигурационных файлов
Если при установке Asterisk были установлены и образцы конфигурационных файлов, скорее всего, у вас имеется файл extensions.conf. Но мы предлагаем начинать не с файла-образца, а создать собственный файл extensions.conf с нуля. Это будет крайне полезно, поскольку обеспечит лучшее понимание основных элементов и принципов диалплана.
Но надо сказать, что образец файла extensions.conf остается фантастическим ресурсом, полным примеров и идей, которые можно использовать после изучения базовых элементов. Мы предлагаем переименовать его и назвать, например, extensions.conf. sample. Таким образом оригинальный файл будет сохранен, и к нему можно будет обратиться в будущем. Образцы конфигурационных файлов также можно найти в подпапке /configs/ папки исходного кода Asterisk.
Контексты
Диалпланы разбиты на разделы, называемые контекстами. Контексты - это именованные группы добавочных номеров, которые выполняют несколько функций.
Контексты изолируют разные части диалплана, предотвращая возможность их взаимодействия. Добавочный номер, определенный в одном контексте, полностью изолирован от добавочных номеров другого контекста, если только взаимодействие не разрешено специально. (То, как разрешить взаимодействие контекстов, будет рассмотрено ближе к концу данной главы.)
В качестве простого примера возьмем две компании, совместно использующие один сервер Asterisk. Если разместить голосовое меню каждой компании в собственном контексте, они будут эффективно отделены друг от друга. Это позволяет независимо определять действия, выполняемые, скажем, при наборе номера 0: при нажатии кнопки 0 в голосовом меню компании А вы попадете к секретарю компании А, а при нажатии кнопки 0 в голосовом меню компании В - к секретарю компании В. (Эти примеры
Контексты различаются по именам. Имена контекстов заключаются в квадратные скобки ([ ]). Допустимыми символами для образования имени являются буквы от A до Z (верхнего и нижнего регистра), цифры от 0 до 9, дефис и символ подчеркивания1. Например, контекст для входящих вызовов выглядит так: [incoming]
Максимальная длина имени контекста - 79 символов (80 символов - 1 завершающий нуль).
Все инструкции, размещаемые после описания контекста и до описания следующего контекста, являются частью данного контекста. В начале диалплана находятся два специальных контекста, [general] и [globals]. Раздел [general] содержит список общих настроек диалплана (о которых, вероятно, вам никогда не придется беспокоиться), а контекст [globals] мы будем обсуждать в разделе «Глобальные переменные». Пока что достаточно знать, что эти два контекста являются специальными. Созданные вами контексты можно называть как угодно, только не используйте имена [general] и [globals].
При описании канала (а именно так выполняется подключение элементов к системе) одним из параметров этого описания является контекст. Иначе говоря, контекст - это точка диалплана, с которой будет начинаться обработка соединений, выполняемых через этот канал.
Другое важное применение контекстов (возможно, самое важное) - обеспечение безопасности. Правильно применяя контексты, определенным абонентам можно предоставить доступ к функциям (таким, как междугородная связь), которые недоступны для других. Если ди- алплан разработан неаккуратно, пользователи по вашей оплошности могут получить возможность мошенничать в вашей системе. Пожалуйста, помните об этом при построении системы Asterisk.
В подпапке doc/ папки исходного кода Asterisk находится очень важный файл, security.txt, в котором определено несколько шагов для обеспечения безопасности системы Asterisk. Вам чрезвычайно важно прочитать и понять этот файл. Если проигнорировать меры предосторожности, описанные там, все может закончиться тем, что кто угодно сможет делать междугородные и платные звонки за ваш счет!
Если не отнестись к безопасности своей системы Asterisk серьезно, может дойти до того, что вам придется за это дорого расплатиться в буквальном смысле этого слова! Пожалуйста, выделите время и силы на то, чтобы защитить свою систему от мошенничества с оплатой.
Добавочные номера
в мире телекоммуникаций термин «оооавочныи номер» (extension) обычно обозначает числовой идентификатор, который присвоен линии, идущей к конкретному телефону. Однако в Asterisk это намного более широкое понятие, поскольку оно определяет уникальные последовательности шагов (каждый шаг включает приложение), которые Asterisk будет применять к вызову по этой линии. В каждом контексте может быть задано столько добавочных номеров, сколько требуется. При вызове конкретного добавочного номера (входящим или внутренним звонком) Asterisk будет выполнять шаги, определенные для этого добавочного номера. Поэтому именно добавочные номера определяют, что происходит со звонками при их обработке соответственно диалпла- ну. Хотя, конечно, добавочные номера могут использоваться в их традиционном значении (то есть вызов добавочного номера 153 заставит зазвонить SIP-телефон на столе Джона), но в диалплане Asterisk они могут означать намного большее.