# Кастомизация системных файлов

Раздел **«Кастомизация системных файлов»** в MikoPBX предоставляет администраторам возможность напрямую изменять или дополнять стандартные конфигурационные файлы системы. Здесь вы можете внести индивидуальные настройки, которые не доступны через стандартный веб-интерфейс, и адаптировать поведение системы под специфические требования вашей организации.

С его помощью можно:

* **Редактировать конфигурационные файлы**: вносить изменения в существующие файлы или добавлять новые параметры.
* **Переопределять стандартные настройки**: изменять значения по умолчанию для определенных функций или модулей.
* **Добавлять собственные скрипты или модули**: расширять функциональность системы путем интеграции пользовательских решений.

Он находится в **Система -> Кастомизация системных файлов**:

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FSU2FBdeV4th4alXshxrh%2FSection.png?alt=media&#x26;token=9719b492-75e5-4bca-bdb8-e6f8bd3362ba" alt=""><figcaption><p>Раздел "<strong>Кастомизация системных файлов</strong>"</p></figcaption></figure>

Важно отметить, что неправильное изменение системных файлов может привести к нестабильной работе или сбоям системы. Поэтому рекомендуется создавать резервные копии перед внесением изменений и тщательно проверять корректность настроек.

Мы рекомендуем использовать возможности данного раздела только **опытным** администраторам Asterisk. В MikoPBX есть возможность из web-интерфейса изменять следующие конфигурационные файлы:

| **Наименование файла** | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| asterisk.conf          | <p><strong>Общие</strong> (глобальные) настройки Asterisk.<br>В файле конфигурации asterisk.conf Вы определяете следующее:<br><br>-Местоположение, права доступа и владельца сокета, которые используется для подключения удаленной консоли управления сервером.<br><br>Местоположение различных директорий, используемых сервером Asterisk для определения местоположения файлов конфигурации, библиотек, скриптов и место, где будут создаваться лог фалы.<br><br>Параметры командной строки запуска сервера, используемые по умолчанию.</p> |
| cel.conf               | Лог событий канала. В отличии от CDR, сохраняет все события имевшие место в канале.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| extensions.conf        | План набора (**dialplan**) Asterisk. В нем определяется обработка и маршрутизация входящих и исходящих вызовов. Этот файл управляет поведением всех соединений, проходящих через Вашу АТС.                                                                                                                                                                                                                                                                                                                                                     |
| features.conf          | В файле назначаются пользовательские коды и опции абонентских функций Asterisk, такие как: перевод вызова (transfer); перехват вызова (pickup); запись по требованию (record on demand); таймауты набора и переадресации (digit timeout); паркинг (park) и др.                                                                                                                                                                                                                                                                                 |
| http.conf              | Встроенный http сервер Asterisk                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| iax.conf               | В файле Вы описываете ваши соединения по протоколу IAX.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| indications.conf       | Национализация тональных сигналов                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| logger.conf            | Настройка логов Asterisk. В данном файле настраивается логирование событий Asterisk в файлы, консоль и syslog linux. Для применения настроек выполните команду «**logger reload**» в консоли (CLI) Asterisk.                                                                                                                                                                                                                                                                                                                                   |
| manager.conf           | Настройка интерфейса AMI (Asterisk Manager Interface)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| modules.conf           | Параметры загрузки модулей Asterisk.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| musiconhold.conf       | Параметры музыки на удержание в IVR                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| queues.conf            | Очередь входящих вызовов Asterisk. Подробное описание стратегии вызовов. Penalty, timeout, member и все доступные параметры.                                                                                                                                                                                                                                                                                                                                                                                                                   |
| rtp.conf               | Глобальные настройки RTP - медиа-портов и протокола                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sip.conf               | Файл отвечает за настройку внутренних и внешних каналов SIP в Asterisk.                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| voicemail.conf         | Настройки уведомлений по E-mail                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| jail.local             | Настройки Fail2ban                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| msmtp.conf             | Настройки SMTP-клиента                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

Для редактирования конфигурационного файла воспользуйтесь кнопкой:  ![](https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FzuLsqsF5LIywqmqWQJ0X%2Fimage.png?alt=media\&token=50d6fef0-6c03-41b0-ab55-23214b28a075)

Перед Вами будет открыта форма редактирования конфигурационного файла:

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FQY3JDKi28F9qUGASkmKQ%2FeditSection.png?alt=media&#x26;token=7b22cf3e-c743-4a73-a9b9-f592a172e73e" alt=""><figcaption><p>Меню кастомизации системного файла /acl.conf (пример)</p></figcaption></figure>

Выберите один из четырех возможных вариантов редактирования:

* «**Не менять**» - не позволяет вносить изменения в файл, только чтение файла.
* «**Добавлять в конец файла**» - в конец выбранного конфигурационного файла будут добавлены (**рекомендуемый**).
* «**Заменять полностью**» - все Ваши изменения переопределят конфигурационный файл.
* Режим "**Script"** - читайте далее.

#### Кастомизация системных файлов скриптом <a href="#kastomizaciya-sistemnykh-failov-skriptom" id="kastomizaciya-sistemnykh-failov-skriptom"></a>

Существуют сценарии, когда нужно выполнить более сложные модификации системных файлов, чем простое добавление текста в конец конфигурационного файла. Например, нужно выполнить переопределение параметров PJSIP учетных записей, но хочется сохранить возможность настройки системы через веб интерфейс.

Реализован новый подход к кастомизации. Можно описать bash скрипт, который будет выполняться каждый раз после того, как система сформирует конфигурационный файл. В итоге интегратор сможет делать очень тонкие изменения конфигурационных файлов без разработки дополнительных модулей.

Например, мы хотим поменять значение max\_contacts у всех сотрудников, кроме одного.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FTOe7jSMCC5v3Q1dw32T0%2Fimage.png?alt=media&#x26;token=f6082f54-ccee-4c61-a4e7-8d880ee2a85e" alt=""><figcaption><p>Кастомизация файлов "скриптом"</p></figcaption></figure>

### sip.conf <a href="#sipconf" id="sipconf"></a>

Добавить параметры к существующей секции возможно используя конструкцию (+):

```php
[general](+)
allowtransfer=yes
```

Описать новую секцию можно в произвольной форме, единственное, не следует допускать повторения имен секций: Пример:

```php
[user2_pingtel]
type=friend
username=user2_pingtel
secret=blah
host=dynamic
qualify=1000 ; Рассматриваем клиента как неработающего,
; если ответ от него идет более 1 сек.
callgroup=1,3-4 ; Клиент является членом групп вызовов: 1, 3 и 4
pickupgroup=1,3-4 ; Мы можем совершать "pick-up" вызовов, нажатием *8,
; для вызовов из групп 1, 3 и 4
defaultip=192.168.0.60
disallow=all
allow=ulaw
allow=alaw
allow=g729
```

### extensions.conf <a href="#extensionsconf" id="extensionsconf"></a>

{% hint style="danger" %}
**Дорабатывайте dialplan с осторожностью - есть большая вероятность нарушить работу АТС!**
{% endhint %}

Существует возможность перехватить выполнения dialplan. Для этого необходимо описать custom контексты. На текущий момент можно перехватить выполнения в следующих контекстах:

* **internal-originate-custom** - контекст используется при звонках из панели телефонии для 1С
* **\<ID-ПРОВАЙДЕРА>-incoming-custom** - контекст предназначен для обработки **входящих** вызовов через провайдера
* **\<ID-ПРОВАЙДЕРА>-outgoing-custom** - контекст предназначен для обработки **исходящих** вызовов через провайдера
* **all\_peers-custom** - контекст используется при прямом исходящем звонке с телефона
* **outgoing-custom** - контекст используется при наборе внешнего номера, ДО выбора исходящего маршрута
* **add-trim-prefix-clid-custom** - этот контекст используется при обработке входящих вызовов, лучшим образом подходит для нормализации входящего номера телефона, добавить / отсечь префикс
* **internal-users-custom** - в этом контексте обрабатываются вызовы на внутренние номера
* **public-direct-dial-custom** - контекст обработки входящих вызовов БЕЗ авторизации

Пример контекста:

```php
[outgoing-custom]
exten => _X!,1,NoOp(--- hangup - ${CHANNEL} ---)
	same => n,return
```

**Обязательно** следует в конце вызывать метод «**return**».

{% hint style="info" %}
Некоторые примеры использования custom-контекстов:

* [Звонок через определённого провайдера](https://docs.mikopbx.com/mikopbx/faq/outbound-routing/a-call-through-a-specific-provider)
* <mark style="color:red;">Настройка исходящего AOH для сотрудника</mark>
  {% endhint %}
