PearlPBX2
Para ingenieros

La arquitectura por dentro

Cómo PearlPBX2 convierte modelos de Django en una configuración de Asterisk funcional, la valida antes de aplicarla y te permite revertir cualquier cambio.

Stack

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

Generación de configuración

Más de 30 modelos de Django, cada uno editable desde el admin, y un generador de configuración (core/conf.py, ~950 líneas) los convierte en archivos de configuración de Asterisk. Apply Changes muestra una vista previa de cada archivo antes de escribirlo, versiona la configuración en la base de datos y solo entonces recarga suavemente o reinicia por completo Asterisk vía AMI. Se crea una copia de seguridad automática antes de sobrescribir.

El validador de dialplan AEL

core/validators.py(más de 1000 líneas) analiza la estructura de bloques if/else/while/for/switch, equilibra llaves, comillas y expresiones ${...}, y contrasta cada llamada de aplicación contra una lista de ~150 comandos de Asterisk. Los patrones de extensión se validan con la sintaxis correcta y se muestran ordenados por especificidad — coincidencias exactas antes que los comodines. Un dialplan incorrecto se rechaza en el formulario web antes de llegar a Asterisk.

Ansible y reversión de despliegues

Instalación, actualización y reversión son scripts separados (install.sh,update.sh,rollback.sh) sobre 10 roles de Ansible. Un cuarto script,update-asterisk.sh, actualiza el propio Asterisk en caliente: hace copia de seguridad de la configuración, los binarios y los módulos, compila la nueva versión mientras la actual sigue atendiendo llamadas, drena las llamadas activas con cuidado y puede revertir a los binarios anteriores si hace falta. El instalador compila Asterisk 22 desde el código fuente, genera todos los secretos, configura las tareas cron que el sistema necesita (backup de base de datos, backup de configuración de Asterisk, rotación de logs, conversión y descarga de grabaciones, monitoreo del sistema) y configura nftables, detectando y registrando el puerto SSH antes de aplicar las reglas.rollback.sh -n <pasos>revierte el código, las migraciones de base de datos y los servicios a un estado anterior usando el historial de despliegues. El instalador automático está pensado solo para Debian o Ubuntu — probado en Debian 13 y Ubuntu 24.04; el stack de Docker Compose para evaluación y desarrollo no depende de la distribución, y un archivo compose de pruebas de integración separado ejecuta la suite de pruebas contra un contenedor real de Asterisk 22 en CI.

systempostgresredisasteriskasterisk_updatepearlpbx2servicesnginxtftpfirewall

API REST

Autenticación por token (Authorization: Token <key>): click-to-call, conferencias ad-hoc, control de pausa de agentes de cola, descarga de grabaciones. El listado completo de endpoints está en el esquema OpenAPI en vivo con Swagger UI y ReDoc. Documentación de la API REST →