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

Раздел **«Кастомизация системных файлов»** в 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mikopbx.com/mikopbx/manual/system/custom-files.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
