PearlPBX2
Для інженерів

Архітектура під капотом

Як PearlPBX2 перетворює моделі Django на робочу конфігурацію Asterisk, перевіряє її ще до застосування і дозволяє відкотити будь-яку зміну.

Стек

Python3.10+ (CI/Docker — 3.12)
Django5.2.8
PostgreSQL14+ (CI/Docker — 17)
Redis7+
Asterisk22+ з res_pjsip, res_agi, cdr_pgsql

Генерація конфігурації

30+ моделей Django, кожна редагується через admin-інтерфейс, і генератор конфігурації (core/conf.py, ~950 рядків) перетворює їх на файли конфігурації Asterisk. Apply Changes показує прев'ю кожного файлу перед записом, версіонує конфігурацію в базі даних і лише потім м'яко перезавантажує або повністю перезапускає Asterisk через AMI. Перед перезаписом автоматично створюється резервна копія.

Валідатор AEL-dialplan

core/validators.py(1000+ рядків) розбирає структуру блоків if/else/while/for/switch, балансує дужки, лапки й ${...}-вирази, і звіряє кожен виклик застосунку зі списком ~150 команд Asterisk. Шаблони розширень перевіряються на коректність синтаксису й відображаються відсортованими за специфічністю — точні збіги перед масками. Помилковий dialplan відхиляється у веб-формі ще до того, як дістанеться Asterisk.

Ansible та відкат розгортання

Встановлення, оновлення й відкат — окремі скрипти (install.sh,update.sh,rollback.sh) поверх 10 Ansible-ролей. Четвертий скрипт,update-asterisk.sh, оновлює сам Asterisk на місці: робить бекап конфігурації, бінарників і модулів, компілює нову версію, поки стара продовжує приймати дзвінки, плавно завершує активні виклики і за потреби відкочується на попередні бінарники. Інсталятор компілює Asterisk 22 з вихідного коду, генерує всі секрети, налаштовує потрібні для роботи cron-завдання (бекап бази, бекап конфігурації Asterisk, ротація логів, конвертація й вивантаження записів розмов, моніторинг системи) і конфігурує nftables, визначаючи й логуючи SSH-порт перед застосуванням правил. rollback.sh -n <кроків>повертає код, міграції бази й сервіси до попереднього стану за журналом розгортань. Автоматичний інсталятор розрахований лише на Debian або Ubuntu — перевірено на Debian 13 та Ubuntu 24.04; Docker Compose-стек для оцінки й розробки не прив'язаний до дистрибутива, а окремий інтеграційний compose-файл прогоняє тестовий набір проти справжнього контейнера Asterisk 22 в CI.

systempostgresredisasteriskasterisk_updatepearlpbx2servicesnginxtftpfirewall

REST API

Токен-автентифікація (Authorization: Token <key>): клік-ту-колл, ad-hoc конференції, керування паузою операторів черги, завантаження записів розмов. Повний перелік ендпоінтів — у живій OpenAPI-схемі зі Swagger UI та ReDoc. Документація REST API →