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:
- El número no existe
- 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