Skip to content

Problemas en dialplan y consola Asterisk (warnings, contextos duplicados, includes inválidos) – Issabel 5 PBX #52

@StorageCloud

Description

@StorageCloud

📌 Resumen

Durante pruebas en entorno productivo de Issabel PBX se identificaron múltiples problemas en el dialplan de Asterisk, incluyendo:

warnings por contextos duplicados
includes a contextos inexistentes
uso de patrones no recomendados
errores en scripts AGI

Estos problemas afectan la limpieza del sistema, generan ruido en logs y pueden causar comportamientos inesperados.

🧪 Entorno
Issabel PBX: (indicar versión)
Asterisk: 18.x
Sistema operativo: (ej. Rocky Linux)
Tipo de instalación: estándar
🐛 1. Contextos duplicados en dialplan
🔍 Problema

Se presentan warnings como:

context already included
already in use

Ejemplos:

app-cf-off
app-cf-on
app-cf-toggle
macro-hangupcall
macro-outisbusy
💥 Causa

Los mismos contextos están definidos en múltiples archivos:

/etc/asterisk/extensions_additional.conf (autogenerado)
/etc/asterisk/extensions_override_*.conf (manual)
✅ Solución aplicada

Se eliminaron definiciones duplicadas en archivos override:

/etc/asterisk/extensions_override_fop2.conf
/etc/asterisk/extensions_override_issabel.conf
🎯 Resultado
eliminación de conflictos en dialplan
carga limpia de contextos
mejora en estabilidad
🐛 2. Includes a contextos inexistentes
🔍 Problema
tries to include nonexistent context

Ejemplos detectados:

ext-injections
grps
ext-did-post-custom
ext-bosssecretary
ext-did-0001
💥 Causa

Issabel incluye contextos opcionales que no existen por defecto.

✅ Solución aplicada

Se crearon contextos vacíos en:

/etc/asterisk/extensions_custom.conf

Ejemplo:

[ext-injections]
[grps]
[ext-did-post-custom]
[ext-bosssecretary]
[ext-did-0001]
🎯 Resultado
eliminación de warnings
dialplan limpio
mayor estabilidad al recargar
🐛 3. Uso del patrón _ . en extensiones
🔍 Problema
The use of '_.' is strongly discouraged
💥 Causa

Uso del patrón:

exten => _.
✅ Solución aplicada

Se modificó en:

/etc/asterisk/extensions.conf

Cambio:

  • exten => _.
  • exten => _X.
    🎯 Resultado
    eliminación de warnings
    mejores prácticas en dialplan
    mayor control de patrones
    🐛 4. Error en script AGI (trunkbalance.php)
    🔍 Problema
    Unknown database type: mysqli
    Unable to connect to database
    💥 Causa

Script AGI no soporta mysqli.

📍 Archivos afectados
/var/lib/asterisk/agi-bin/sqltrunkbal.php
/var/lib/asterisk/agi-bin/sql.php
✅ Solución aplicada
if ($db_type == 'mysql' || $db_type == 'mysqli')
🎯 Resultado
ejecución correcta del AGI
eliminación de errores de conexión
funcionamiento normal de lógica de trunk
🐛 5. Validación del flujo de llamadas
🔍 Verificación

Se confirmó correcto funcionamiento del flujo:

macro-dialout-trunk
ejecución de AGI
salida por trunk
🎯 Resultado
llamadas salientes funcionando correctamente
sin errores en ejecución de macros
🐛 6. Limpieza general del dialplan
🔍 Estado inicial
múltiples warnings
conflictos de contextos
includes inválidos
✅ Estado final
pbx_config successfully loaded XXX contexts
🎯 Resultado
sin errores críticos
warnings reducidos al mínimo
dialplan estable

💡 Recomendación
evitar mostrar credenciales en logs
mejorar sanitización de salida
🚀 Recomendaciones generales
validar duplicados automáticamente en overrides
evitar includes a contextos inexistentes
actualizar scripts AGI a estándares actuales (mysqli / PDO)
eliminar uso de funciones obsoletas
mejorar validación del dialplan antes de cargar
🏁 Conclusión

Las correcciones aplicadas permiten:

✔ eliminación de errores en consola Asterisk
✔ reducción significativa de warnings
✔ mayor estabilidad del dialplan
✔ compatibilidad con entornos modernos

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions