Формат конфигурационных файлов
Настройки
Asterisk является очень гибким движком телефонии. Но эта гибкость приносит небольшие сложности. Asterisk имеет достаточно большое количество файлов, которые контролиют все аспекты его деятельности. Однако формат этих файлов достаточно прост. Конфигурационные файлы Asterisk являются простыми текстовыми файлами и могут быть отредактированы в любом текстовом редакторе.
Конфигурационные файлы разбиты на несколько секций, чьи имена заключены в квадратные скобки. Имена секций не должны содержать пробелы и чувствительны к регистру. Внутри каждой секции вы можете присваивать значения различным настройкам. Параметры одной секции не зависят от значений параметров другой секции. Синтаксис присваивания значения параметру такой: пишем имя параметра, сразу за ним знак присваивания (равно), а потом значение. Например так:
Объекты
В некоторых конфигурационных файлах создаются объекты. Синтаксис для объектов немного отличается от синтаксиса для настроек. Для создания объекта вы указываете тип объекта, далее знак равно и знак больше чем (=>) и потом значение объекта. Пример:
В этом примере, object1 наследует значения параметров label1 и label2. Важно понимать что объект object2 также наследует label1 (у которого изменено значение), label2 и label3.
Вкратце, объект наследует все настройки располагающиеся выше него в текущей секции и более поздние настройки перезаписывают определённые ранее.
Комментарии
Мы можем (и обычно пишем) добавлять комментарии в конфигурационные файлы Asterisk. Комментарии упрощают чтение конфигурационных файлов, а также могут быть использованы для временного отключения некоторых настроек.
Пример однострочного комментария:
Asterisk также позволяет создавать многострочные комментарии. Многострочный комментарий это комментарий, который начинается в одной строке и продолжается несколько строк. Многострочные комментарии начинаются с последовательности символов ;-- и завершается --;. Пример:
Конструкции include и exec
Конструкция #include указывает Asterisk прочитать содержимое другого конфигурационного файла и действует так как-будто содержимое находилось в данном месте в этом конфигурационном файле. Синтаксис такой: #include filename, где filename это имя файла, который вы жлаете добавить. Конструкция обычно используется для разбиения большого конфигурационного файла на маленькие кусочки, которые проще редактировать.
Конструкция #exec идёт немного дальше. Она позволяет выполнить внешнюю программу и пометсить вывод этой программы в текущий конфигурационный файл. Синтаксис - #exec program, где program - это имя программы, которую вы хотите выполнить. По умолчанию использование конструкции #exec запрещено. Для включения данной фукциональности зайдите в конфигурационный файл asterisk.conf (обычно находится в /etc/asterisk) и укажите параметр execinclude=yes в секции [options]. Данная настройка уже имеется в файле конфигурации, но она закомментирована. Просто уберите ; из начала строки с настройкой. Пример использования #include и #exec:
Добавление в существующую секцию
Если вы хотите добавить настройки в уже существующую секцию из другого места, то добавьте знак плюс в обычных скобках (+) после заголовка секции как показано ниже:
В данном примере показано как настройка setting2 добавлена в уже существующую секцию конфигурации.
Шаблоны
Другой конструкцией, которой можно пользоваться во многих конфигурационных файлах Asterisk, являются шаблоны. Шаблон, это секция конфигурационного файла, который используется как база из которой создаются другие секции.
Для того чтобы определить секцию как шаблон, поместите восклицательный знак в скобках (!) сразу после заголовка секции, как показано в примере ниже:
Для использования шаблона при создании своей секции, просто поместите имя шаблона в скобках после заголовка секции. Если вы хотите использовать несколько шаблонов, то используйте запятую для разделения имён шаблонов. Пример:
Созданная секция будет наследовать параметры и объекты определённые в шаблоне, также как любые новые параметры или объекты объявленные в самой секции. Настройки о объекты, определённые в созданной секции перезаписывают параметры и объекты с тем же именем из шаблона. Пример:
Секция [test-three] будет обработана как если бы она была записана следующим образом: