Контексты
Диалплан разбит на разделы, называемые контекстами. Контексты - это именованные группы добавочных номеров, которые выполняют несколько функций.
Контексты изолируют разные части диалплана, предотвращая возможность их взаимодействия. Добавочный номер, определённый в одном контексте, полностью изолирован от добавочных номеров другого контекста, если только взаимодействие не разрешено специально.
В качестве простого примера возьмём две компании, совместно использующие один сервер Asterisk. Если разместить голосовое меню каждой компании в собственном контексте, они будут эффективно отделены друг от друга. Это позволяет независимо определять действия, выполняемые, скажем, при наборе номера 0: при нажатии кнопки 0 в голосовом меню компании А вы попадаете к секретарю компании А, а при нажатии кнопки 0 в голосовом меню компании Б - к секретарю компании Б.
Контексты различаются по именам. Имена контекстов заключаются в квадратные скобки. Допустимыми символами для образования имени являются буквы от A до Z (верхнего и нижнего регистра), цифры от 0 до 9, дефис и символ подчёркивания.
Максимальная длина имени контекста - 79 символов (80 символов - 1 завершающий нуль).
Обратите внимание, что пробел НЕ входит в список допустимых символов. Не используйте пробелы в именах контекстов, потому что результат вам не понравится.
Все инструкции, размещаемые после описания контекста и до описания следующего контекста, являются частью данного контекста. В начале диалплана находятся два специальных контекста, [general] и [globals].
Раздел [general] содержит список общих настроек диалплана, а контекст [globals] мы будем обсуждать в разделе "Глобальные переменные". Пока что достаточно знать, что эти два контекста являются специальными. Созданные вами контексты можно назвать как угодно, только не используйте имена [general] и [globals].
При описании канала (а именно так выполняется подключение элементов к системе) одним из параметров этого описания является контекст. Иначе говоря, контекст - это точка диалплана, с которой будет начинать обработка соединений, выполняемых через этот канал.
Другое важное применение контекстов (возможно, самое важное) - обеспечение безопасности. Правильно применяя контексты, определённым абонентам можно предоставить доступ к функциям (таким как международная связь), которые недоступны для других. Если диалплан разработан неаккуратно, пользователи по вашей оплошности могут получить возможность мошенничать в вашей системе. Пожалуйста, помните об этом при построении системы Asterisk.
В подпапке doc папки исходного кода Asterisk находится очень важный файл, security.txt, в котором определено нескольно шагов для обеспечения безопасности системы Asterisk. Вам чрезвычайно важно прочитать и понять этот файл. Если проигнорировать меры предосторожности, описанные там, всё может закончиться тем, что кто угодно сможет делать междугородные звонки за ваш счёт.