No sound on incomming calls
 

Bueno.. no es cierto... comencemos por diagnosticar bien.. "No se escucha el IVR en llamadas entrantes"

Introduccion

Hace unos días me contactó un amigo, que es administrador de redes para que opinara sobre una situación y en todo caso... arreglara el problema..de que se trata?.
Mirá, tenemos una central VoIP física, con algunos problemas, y un dispositivo que la conecta contra la trama SIP que no hace otra cosa.. y la verdad no entendemos porque no se virtualizó

Ok. Le dije, lo veo...Lo vi y coincidí con él... no entendía porque, teniendo un ambiente factible para servidores virtuales, este server era físico, en fin.. comencé a analizar.. Central telefónica VoIP rackeable de 2 unidades, con 1 placa de red (ehh... 1 sola? y el fault tolerant para un servicio crítico? ... si bue... una sola..), 1 fuenta (idem anterior)... procesador Atom.. 2 GB de RAM.. en serio?.. donde están las cámaras, es una joda no?... no.. no era una joda esas eran las características...

Obviamente, teniendo la factibilidad de virtualizar con HyperV me incliné para ese lado.

Virtualización

Dado que la distribución utilizada en la central física no era compatible con Hyper-V, optamos por una versión diferente de la misma distribución. Previo backup de la central física, toma de documentación de la misma (inexistente al momento de la toma de contacto incial), revisiones y toma de contacto con el proveedor ISP, procedimos a la instalación.

La instalación fue cristalina, salvo por un incidente días después... se quemó el mother del server de virtualización... en fin.. esa es otra historia.. recuperada la virtualización en otro server, dispusimos algunas ventanas de pruebas, de muy corto tiempo por cierto para ver el funcionamiento de la central virtual.

Pruebas y errores... de diagnóstico

Interno se comunica con la central: Prueba *65 Ok

Interno se comunica con otro interno: Prueba de comunicación Ok

Interno se comunica a externo: Llamada a número fijo Ok

Interno se comunica a externo: Llamada a número celular Ok

Interno se comunica al exterior: Llamada a número DDI Ok

Llamada entrante simulada: Llamada simulada entrante Ok

Llamada entrante: Llamada entrante a la central ERROR - NO SE ESCUCHA EL IVR

Si bien, ahora resulta obvio el problema, en el momento el diagnótico fue NO SE ESCUCHA EL IVR, partiendo de dicho dignóstico, lo primero que se pensó fue una falla en el backup y la recuperación de las grabaciones del IVR que se pasaron desde la central física.
Para descartar o confirmar dicho problema, se sustituyó la grabación por una navtiva de Asterisk, y se realizó la prueba nuevamente... y nuevamente NO SE ESCUCHA EL IVR.

Ups.. que pasó... pifiamos en una ruta? nos faltó alguna configuración? será el firewall?.. Revisemos... todo parece estar bien... en que estamos errados?...

Paremos la moto... que está pasando... revisamos la configuración y todo parecía estar bien... que pasa entonces si una llamada entrante se dirije directamente a un interno? ... hagamos la prueba...

Llamada entrante a interno: Llamada entrante directa a interno Ok

Bien.. el diagnóstico es incorrecto.... debería ser... EL CODEC NO ES COMPATIBLE... eh porque??... que pasó....
Como indiqué más arriba, usamos una versión diferente de la misma distribución de Asterisk, pero no nos percatamos que los Codecs en esta versión eran diferentes.. ("error de principiante" o exceso de confianza... lección aprendida)... y por lo tanto la que utilizamos no tenía soporte para el Codec primario de la versión anterior... y como "clonamos" manualmente la configuración, literalmente le estabamos diciendo a la nueva central que prioritariamente utilice un Codec que no tenía..

Soluciones?

Básicamente las siguientes..

  • Cambiar el orden de los Codecs a utilizar sacando el Codec no Compatible
  • Instalar el Codec faltante

Comencemos por .. que tenemos configurado? Como habíamos clonado la configuración la misma era la siguiente.

Aqui es donde deberemos revisar si tenemos o no los codecs que necesitamos instalados, podemos utilizar "Core Show Codecs", esta instrucción nos muestra todos los Codecs soportados por la central y un detalle de los que están instalados, lo que genera una lista muy larga, yo prefiero utilizar "Core Show Translations" ya que me brinda información solo de los codecs instalados..

Observen aqui la linea referente al codec g729 (el que pusismos en nuestra configuración como preferido).. la linea no tiene valores de conversión, lo que indica que el codec o está instalado o bien no está funcionando.

Solución 1

La solución 1, la más fácil, sería sacar el codec g729 de la configuración, siempre y cuando nuestro proveedor ISP soporte alguno de los otros protocolos enunciados, en nuestro caso el ISP soporta gsm, ullow y allow (g711), por lo que podemos sacarlo sin problemas.

Solo a los efectos de revisar si estamos en lo correcto, sacamos el g729, guardamos, reiniciamos el Asterisk y ....

Llamada entrante: Llamada entrante a la central Ud. se ha comunicado co...

Perfecto... estamos en el camino correcto.

Solución 2

Bien, sabiendo que nuestro problema es el Codec, entonces tenemos que conseguir un Codec g729.. el mismo fue diseñado por Digium pero la versión de Digium es paga, por lo que buscamos uno gratuito...

Encontramos el site http://asterisk.hosting.lv/ que dispone de Codecs para descarga...en nuestro caso tenemos un Asterisk 1.8 por lo que hacemos click en dicha versión...y ufff... cual tenemos que bajar... bueno.. esta parte no esta muy clara.. en nuestro caso.. dado que es un server virtual y pasamos de un Atom en la física a un Xeon de la virtual.. el paquete correcto sería codec_g729-ast18-gcc4-glibc-pentium4-sse3.so

Básicamente deberemos descargar el archivo y subirlo a nuestro Asterisk, para ello podemos utilizar cualquier herramienta como por ej. Putty. Una vez que subimos el archivo, es conveniente moverlo renombrandolo a codec_g729.so para luego cargarlo en el Asterisk

  • mv codec_g729-ast18-gcc4-glibc-pentium4-sse3.so /usr/lib/asterisk/modules/codec_g729.so
  • chmod +x /usr/lib/asterisk/modules/codec_g729.so
  • asterisk -rx "module load codec_g729.so"
  • service asterisk restart

Para este momento el Codec g729 debería estar funcioando correctamente, para hacer la prueba, volvemos a incorporar el codec g729 como el primero de la lista de codecs y reniciamos la central.

Llamada entrante: Llamada entrante a la central Ud. se ha comunicado co...

Solo para confirmación adicional, ingresamos nuevamente a asterisk y ejecutamos "Core Show Translations", y deberíamos obtener una imagen similar a esta...

Conclusiones

Asterisk hace un excelente trabajo, basado en el excelente esquema que ofrecen Linux + Asterisk, sin embargo, solo puede hacer lo que le decimos que haga.

En este caso cometimos el error de no revisar los codecs de las diferentes versiones implementadas, lo que nos llevó a un mal diagnóstico.

No es factible solucionar un problema partiando de un mal diagnóstico, es necesario entonces "parar la moto" y repensar y diferenciar lo que suponemos de lo que sabemos...

Instalar un Codec es simple.... una vez que lo tenemos y determinamos que lo necesitamos

En fin... "NO SE ESCUCHA EL IVR", "NO SOUND ON INCOMMING CALLS".... no es lo mismo ... ni es el diagnóstico correcto..

 

 

Volver a lista de Notas