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

La emoción de convertirse en dCAP

27 May

Habemos quienes nos dedicamos a Asterisk día y noche: es nuestro hobby, nuestro sustento, nuestra herramienta, en algunos casos hasta nuestra ideología. Quizá el hecho de tomar una certificación basada en lo que vemos va más allá del conocimiento y entra un poco en lo personal: creemos que eso nos define como profesionales, sentimos alguna decepción si acaso no la obtenemos. Ya no lo hacemos por decir que sabemos, lo hacemos por nosotros.

Hace poco más de 6 meses tomé la certificación como parte de sentir que tenía derechos para decir que sé (al final de cuentas, vivo de enseñar a otras personas y me sentiría muy mal conmigo mismo si no tuviera la garantía que no solo sé, sino que la máxima autoridad al respecto también opina lo mismo). En aquel día, con todo y 6 años dedicándome a Asterisk, llegué a presentar el examen con los típicos nervios:

¿Y si me preguntan justo lo que no estudié?
¿Y si todo este tiempo me enfoqué en las cosas equivocadas?
¿Y si creo que sé pero no sé?

3 horas después salí con un examen teórico contestado con buenas expectativas, y un examen práctico contestado hasta en los puntos extras (por si acaso). Tenía la incertidumbre de que yo creyera que me fue bien cuando no hubiera sido así. Afortunadamente, 1 semana después obtuve la buena noticia de que mi trámite de dCAP ya había comenzando y solo era cosa que me entregaran el certificado. Así me convertí en el dCAP #1917.

Hoy estoy del otro lado: soy el instructor del curso y estoy aplicando el examen a los asistentes. De hecho, estoy escribiendo este post mientras contestan el examen práctico. Sé lo que están sintiendo, sé lo que son los nervios de que el tiempo se acaba, quizá hasta el aroma de oficina que no es la tuya te intimida y cualquier cosa que sale mal te preocupa porque crees que no vas a acabar. Pero al final de cuentas, el conocimiento está dentro de uno, y una vez que logras hacer más allá la duda de si lo vas a lograr o no, es que te das cuenta de que realmente ya lo conseguiste.

Faltan unos minutos para que llegue el momento de evaluarlos. Mi deseo es que todos los que se han esforzado lo pasen, y aquellos que estén leyendo esto solo puedo decirles que pierdan el miedo. Nunca sabrán que tan fácil o complicado es hasta que no lo intentan.