PearlPBX2
Funcionalidades

Todo lo que necesitas para gestionar un Asterisk PBX

Desde los transportes SIP hasta el aprovisionamiento de teléfonos — cada sección de abajo describe una capacidad real de la versión actual de PearlPBX2.

Núcleo de telefonía: SIP, troncales, WebRTC

  • Transportes UDP/TCP/TLS/WSS con soporte NAT.
  • Usuarios SIP con autenticación en texto plano/MD5 y overrides por usuario.
  • Los endpoints WebRTC se generan junto con los usuarios SIP normales.
  • Troncales con registro bidireccional, listas de IP (match=) e identificación por cabecera Contact para gateways donde varias líneas comparten una misma IP.
  • Los certificados TLS se guardan en la base de datos y se escriben en disco al aplicar los cambios.
  • Los grupos de troncales se marcan a través de un handler FastAGI dial-trunk-group con conmutación por error y reintento automáticos dentro del grupo.
  • Las tablas de enrutamiento por prefijo se asignan a usuarios SIP y troncales.

Editor de dialplan AEL y validador

  • Contextos, extensiones, macros y variables globales en sintaxis AEL.
  • Un validador propio (core/validators.py, más de 1000 líneas) analiza la estructura de bloques if/else/while/for/switch, equilibra llaves y comillas teniendo en cuenta ${}, y contrasta cada llamada de aplicación contra una lista de ~150 comandos de Asterisk — antes de que el dialplan llegue al sistema.
  • Los patrones de extensión se validan con la sintaxis correcta de Asterisk y se muestran ordenados por especificidad: coincidencias exactas antes que los comodines.
  • Los menús IVR se crean directamente en este editor usando Background, WaitExten y Goto.

Colas de llamadas

  • Estrategia de timbrado, nivel de servicio, tiempos de espera, peso, tiempo de cierre, autopausa — todo configurable desde el admin, sin editar queues.conf a mano.
  • Un bloque completo de anuncios — 11 mensajes configurables, anuncios de posición en cola y tiempo de espera.
  • Miembros de la cola, reglas de escalado de prioridad por tiempo, ajustes globales (miembros persistentes, última llamada compartida).

Música en espera, sonidos, grabación de llamadas

  • Clases de Music on Hold basadas en directorios o listas de reproducción — subida de archivos o URLs.
  • Una biblioteca de mensajes de audio subidos.
  • Grabación de llamadas basada en reglas: activación o desactivación forzada por caller ID o destino, capturada vía MixMonitor.
  • Cada grabación se indexa por origen, destino y uniqueid del CDR.

Apply Changes y roles de acceso

  • Genera cada archivo de configuración, muestra una vista previa antes de escribirlo, lo versiona en la base de datos.
  • Una recarga suave o un reinicio completo de Asterisk vía AMI, con copias de seguridad automáticas antes de sobrescribir.
  • Un grupo integrado "Report Viewer" — informes y gestión de listas (lista negra, lista blanca, contactos) sin acceso al admin de Django.

Panel en tiempo real

  • /dashboard/live/ — cinco pestañas: Resumen, Colas, PJSIP, Puentes, Canales.
  • Indicadores KPI, una lista en vivo de llamadas y colas activas, acciones desde la interfaz: colgar un canal, pausar o reanudar a un agente.
  • El estado de los agentes sobrevive a un reinicio de Asterisk — el listener reproduce CoreShowChannels al reconectar y reconstruye el estado.
  • /dashboard/ulines/ — un monitor en vivo de los slots de aparcamiento de llamadas.
  • El flujo WebSocket ws/asterisk/ acepta una sesión de Django o un token de la API DRF, lo que permite incrustar el panel dentro de tu propia interfaz de CRM.

Informes y analítica

  • 5 informes operativos: un filtro de CDR con clasificador de dirección, un navegador de grabaciones de llamadas, actividad de colas (5 submodos, incluyendo un informe "Perdidas y encontradas" que cruza llamadas abandonadas con un contacto exitoso posterior), un informe de callbacks, un informe de tabla de enrutamiento.
  • 8 informes de analítica con Chart.js: llamadas por cola, por número de destino, por agente en cola, llamadas salientes por agente, llamadas perdidas por cola y por hora, duración de llamada por agente, actividad de cola.
  • Cada informe se exporta a CSV y tiene su propio control de permisos.

Aprovisionamiento de teléfonos

  • Autoaprovisionamiento vía TFTP. Compatible hoy: Grandstream GXP (8 modelos: GXP1200, GXP1610, GXP1620, GXP1625, GXP2130, GXP2135, GXP2160, GXP2170) y Cisco SPA (7 modelos: SPA112, SPA122, SPA232D, SPA504G, SPA508G, SPA514G, SPA525G2).
  • La arquitectura del generador de configuración es extensible — se añaden nuevos fabricantes con el mismo mecanismo de plugins.

Servicios de backend

  • El listener del panel se suscribe al AMI de Asterisk, procesa ~20 tipos de eventos, publica en Redis para el panel WebSocket, entrega los webhooks al CRM y envía alertas a Slack por llamadas perdidas en cola.
  • Un servidor FastAGI (Twisted/StarPy, puerto 4573) — 8 handlers de dialplan: consultas de listas, marcado de grupo de troncales con conmutación por error, grabación de llamadas, inserción de solicitudes de callback, consulta de estado de cola, asignación atómica de slots de aparcamiento vía Redis-Lua.
  • Un demonio de callbacks consulta PostgreSQL con bloqueo a nivel de fila, origina llamadas vía AMI y admite concurrencia multiproceso.
  • Scripts AGI clásicos envían alertas a Slack por DIDs sin coincidencia y llamadas perdidas.