Versión mejorada del mensaje “all circuits are busy” de Elastix (v3)

31 May

Este código se encuentra desactualizado. Hay una versión más reciente disponible en http://asteriskmx.com/2013/04/version-mejorada-del-mensaje-all-circuits-are-busy-de-elastix-v4/

En muchas ocasiones hemos oido el mensaje de “all circuits are busy” (“todos los circuitos se encuentran ocupados” si es que tenemos los sonidos en Español) de Elastix. El problema con este mensaje es que es reproducido ante cualquier falla de nuestro enlace. Esto incluye a números que no existen, números desconectados y cualquier otra causa de error que no siempre es culpa de nuestro conmutador, pero que el usuario final siempre le achaca al sistema que le configuramos.

Con la intención de abrir un poco el panorama y dar más información sobre la causa del error, escribí este código para ayudar a distinguir cual es la verdadera causa del problema. Para ello, es necesario modificar 2 archivos, dentro de /etc/asterisk

// Archivo extensions.ael
macro outmessage(HC) {
        switch(${HC}) {
                case 1:         // Unnalocated or unnasigned number
                                // El numero que marco no existe
                        Set(MSG=no-existe);
                        break;
                case 17:        // User is busy
                                // Tono ocupado
                        Busy;
                        break;
                case 20:        // Subscriber absent
                                // El número celular que usted marcó no está disponible o se encuentra fuera del area
                        Set(MSG=numero-celular-no-disponible);
                        break;
                case 28:        // Address incomplete
                                // Numero mal marcado
                        Set(MSG=cannot-complete-as-dialed&check-number-dial-again);
                        break;
                case 27:        // Destination out of order
                case 38:        // Network out of order
                        // El telefono que marco esta fuera de servicio
                        // El telefono que marco esta descolgado o en reparacion
                        Set(MSG=fuera-servicio);
                        break;
                case 41:        // Temporary failure
                                // Falla temporal en la red
                        Set(MSG=falla-red);
                        break;
                case 42:        // Switching equipment congestion
                                // Congestion por alta cantidad de trafico en la central
                        Set(MSG=alto-trafico);
                        break;
                case 102:       // Recovery timer expired
                                // No se obtuvo una respuesta de la central telefónica
                        Set(MSG=no-respuesta);
                        break;
                case 34:        // Todos los circuitos están ocupados
                default:
                        Set(MSG=all-circuits-busy-now&pls-try-call-later);
        };
        Playback(${MSG},noanswer);
        &hangupcall();
};
; Archivo extensions_override_freepbx.conf
[macro-outisbusy]
exten => s,1,Progress
exten => s,n,Macro(outmessage,${HANGUPCAUSE})

Con estas modificaciones, necesitamos ejecutar dos comandos dentro del *CLI:

ael reload
extensions reload

Y por último, necesitamos extraer el contenido del siguiente archivo de sonidos dentro de la carpeta /var/lib/asterisk/sounds

Con esto, Elastix nos dará un poco más de información indicándonos los siguientes casos:

  1. El número no existe
  2. El número está fuera de servicio o en reparación

Para todos los demás problemas, se entregará el default de “todos los circuitos se encuentran ocupados”

Conforme consiga más grabaciones para diferentes casos, incluiré más códigos de error dentro de este código, a manera de poder diferenciar mejor cada error. Desde la siguiente liga pueden descargar los Sonidos para mejorar el mensaje de error de Elastix

Christian Cabrera

Soy un ingenieron en comunicaciones con especial interés en el área de voz sobre IP y tecnologías sobre información. He usado Asterisk de manera diaria desde hace más de 12 años. En el 2011 co-fundé Enlaza Comunicaciones, una empresa que se especializa en brindar servicios profesionales de consultoría sobre voz sobre IP basadas en Asterisk.