четверг, 6 ноября 2025 г.

Шпаргалка: FreePBX 17 / Asterisk 22 + DAHDI (OpenVox)

Компактна довідка — що за що відповідає, як взаємодіють файли та де безпечно вносити зміни.

1. Структура конфігурацій — огляд

FreePBX керує Asterisk через файли *_additional.conf (генерує) і поважає файли *_custom.conf (твоя зона). DAHDI конфіги лежать окремо в /etc/dahdi і /etc/asterisk/chan_dahdi*.conf.

2. Файли, які треба знати

Файл/місцеКеруєПризначенняПорада
/etc/dahdi/system.confТи / dahdi_genconfФізичні spans, framing, bchan/dchanКлючовий для E1/T1; генерувати через dahdi_genconf або правити вручну
/etc/asterisk/chan_dahdi.confТиОпис DAHDI-каналів та груп (group=0 → DAHDI/g0)Якщо керуєш руками — не створюй DAHDI trunk у GUI
/etc/asterisk/chan_dahdi_additional.confFreePBXАвтоген для DAHDI, якщо увімкнений модуль DAHDI у GUIМоже конфліктувати з ручним файлом
/etc/asterisk/extensions.confFreePBX + ТиОсновний include-діалпланНе редагуй напряму — використовуй extensions_custom.conf
/etc/asterisk/extensions_additional.confFreePBXГенерований діалплан: inbound/outbound/IVR/queuesРедагується через GUI
/etc/asterisk/extensions_custom.confТиТвої кастомні контексти (імунітет від перезапису)Тут додавати обрізання префіксу або custom destinations
/etc/asterisk/pjsip.conf (і _additional)FreePBXТвій PJSIP trunks/endpointsНалаштовуй через GUI
/var/lib/asterisk/sounds/Ти / FreePBXЗвуки/фразиКласифікуй custom/uk/ etc.

3. Логіка включення файлів

FreePBX генерує *_additional.conf → Asterisk включає їх через директиви #include. Файли *_custom.conf завантажуються після додаткових і не перезаписуються.

4. Де робити зміни (рекомендації)

  • DAHDI низького рівня: /etc/dahdi/system.conf та /etc/asterisk/chan_dahdi.conf — редагуй вручну, якщо потрібен точний контроль.
  • Маршрути, extensions, IVR: роби через FreePBX GUI; це генерує extensions_additional.conf.
  • Кастомна логіка (обрізання префіксів, нестандартні переходи) — клади в extensions_custom.conf або extensions_override_freepbx.conf якщо треба повністю переписати діалплан.
  • Захист файлів: щоб уникнути випадкового перезапису, можна використовувати sudo chattr +i /etc/asterisk/chan_dahdi.conf (але пам'ятай — це блокує редагування до зняття атрибуту).

5. Приклади: як DAHDI група і trunk пов'язані

У chan_dahdi.conf ти задаєш group=0 і channel => 1-15,17-31. Це створює логічний транк DAHDI/g0, який у діалплані використовується як Dial(DAHDI/g0/12345).

6. Набір корисних команд

КомандаЩо показує
dahdi_scanСканування карт і spans
dahdi_cfg -vvvvЗастосувати/перевірити конфіг DAHDI
asterisk -rvvvЖивий CLI Asterisk
asterisk -rx "dahdi show status"Статус span
asterisk -rx "pri show spans"PRI/D-channel статус
fwconsole reloadПерезавантаження FreePBX конфігів

7. Типові сценарії і де їх реалізувати

ЗавданняДе це робити
Підключити SIP-провайдера (Vega)FreePBX GUI → Connectivity → Trunks (PJSIP)
Приймати дзвінки з E1/PRI/etc/dahdi/system.conf + /etc/asterisk/chan_dahdi.conf
Переслати вхідний DID у DAHDI з обрізанням префіксаextensions_custom.conf (надійно) або inbound→outbound (GUI) якщо EXTEN передається правильно
Швидкий тест дзвінкаCLI Asterisk → дивитись Dial() рядки

8. Приклад безпечного кастомного контексту (обрізання 380)

Додай у /etc/asterisk/extensions_custom.conf:

[from-vega-to-dahdi]
exten => _380.,1,NoOp(Inbound from Vega: original DID=${EXTEN})
 same => n,Set(TO_DAHDI=${EXTEN:3})
 same => n,NoOp(Sending to DAHDI number ${TO_DAHDI})
 same => n,Dial(DAHDI/g0/${TO_DAHDI},60,Tt)
 same => n,Hangup()

Потім створити Custom Destination у FreePBX і зв'язати Inbound Route → цей Custom Destination.

9. Рекомендації з версіями

  • Будь послідовним: узгоджуй версії DAHDI/libpri/Asterisk/FreePBX. Ти вже використовуєш DAHDI 3.4 та Asterisk 22.5.2 — це гарна комбінація.
  • Не дозволяй інсталятору FreePBX перезаписувати DAHDI (уникай --with-dahdi), якщо ти керуєш драйверами сам.

10. Бекап перед змінами

Завжди роби архів перед змінами: sudo tar czf /root/dahdi_backup_$(date +%F).tgz /etc/dahdi /etc/asterisk/chan_dahdi.conf /lib/modules/$(uname -r)/extra

Комментариев нет:

Отправить комментарий