Всем известно, что Asterisk работает с собственными конфигурационными файлами, обычно расположенными в /etc/asterisk (для большинства Linux-based систем), а FreePBX хранит все свои настройки в собственной базе данных. Для того чтобы синхронизировать настройки, FreePBX при каждом применении изменений перетирает стандартные конфигурационные файлы Asterisk данными из своей базы. Поэтому ручное исправление конфигурационных файлов Asterisk при установленном FreePBX - по сути бессмысленная, а в некоторых случаях и вредная процедура, так как FreePBX - понятия не имеет о том, какие настройки и исправления были внесены в ручную, ибо в его "базе" таких настроек (изменений) естественно не произошло.
Однако, очень часто возникает необходимость настраивать параметры Asterisk (обычно весьма специфичные), которые отсутствуют в том или ином виде в FreePBX. Это либо "тонкие" настройки АТС, либо дополнительный и специфический функционал, либо кастомизация и тому подобные цели. Разработчики FreePBX позаботились о такой возможности. Если мы внимательно посмотрим на содержимое /etc/asterisk то увидим там множество конфигурационных файлов, у которых в названии присутствует слово custom или custom_post. Эти файлы специальны созданы для того, чтобы вносить в них дополнительные настройки. Фактически, они просто подключаются при помощи include к основным конфигурационным файлам. Причем файлы custom подключаются (практически всегда) до основной конфигурации, а custom_post - после. Главная особенность в том, что эти файлы не перетираются при обновлении конфигурации FreePBX, то есть записанные в них настройки остаются постоянно. Соответственно именно в них можно и нужно вносить дополнительные "ручные" настройки. Внесенные таким образом настройки начинают работать как только вы выполните перезагрузку Asterisk, например, при помощи
выполненной в Asterisk CLI.
Теперь простое правило добавления настроек в эти файлы. Как известно, настройки Asterisk имеют вид
Код: Выделить всё
[section1]
param1 = value1
param2 = value2
...
param_n = value_n
[section2]
...
[section_n]
...
Также есть простые файлы конфигураций, где [section] отсутствует, и параметры с их значениями просто следуют друг за другом. В этих случаях мы просто пишем "новые" параметры и их значения "в столбик" в *_custom или в *_custom_post. Также не возникает проблем, когда мы создаем новые секции (которые отсутствуют в основных конфигурационных файлах). Однако, когда нам требуется дописать некие параметры в уже имеющиеся секции - возникает проблема. Рассмотрим простой пример. Предположим, в файле pjsip.endpoint.conf у нас описываются параметры внутреннего абонента:
Код: Выделить всё
[121]
type=endpoint
aors=121
auth=121-auth
...
Допустим, нам надо для этого абонента добавить параметр webrtc = yes. Данного параметра нет в FreePBX, его значение FreePBX напрямую не отслеживает, но нам он необходим для корректной работы. Как поступить? Для добавления этого параметра в свойства абонента мы должны внести изменения в файл pjsip.enpoint_custom_post.conf (почему *_post, потому-что добавление параметров в секцию должно происходить гарантированно после ее первичного объявления). Выглядеть это будет так:
Обязательно в конце объявления секции нужно поставить (+). Тогда новый параметр добавится к уже имеющимся. После внесения изменений и сохранения делаем перезагрузку Asterisk
и проверяем, что изменения приняты, для чего в Asterisk CLI выполняем
Видим, что значение "webrtc" у нас равно "yes". Таким образом можно добавлять любые кастомные параметры, которые отсутствуют в FreePBX. Однако всегда надо помнить, что параметры которые FreePBX "знает" и обслуживает необходимо менять именно там, чтобы не вносить путаницу и в случае ошибок не усложнять диагностику.