Архітектура під капотом
Як PearlPBX2 перетворює моделі Django на робочу конфігурацію Asterisk, перевіряє її ще до застосування і дозволяє відкотити будь-яку зміну.
Стек
Генерація конфігурації
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.
REST API
Токен-автентифікація (Authorization: Token <key>): клік-ту-колл, ad-hoc конференції, керування паузою операторів черги, завантаження записів розмов. Повний перелік ендпоінтів — у живій OpenAPI-схемі зі Swagger UI та ReDoc. Документація REST API →