Los tonos o bien tonos multifrecuencia (combinación de dos tonos), sirven para que al presionar una tecla en el teléfono, del otro lado se interprete correctamente y así poder continuar el flujo de algún servicio. En Asterisk, estos tonos se deben manejar de acuerdo a los estándares, y tanto del lado del proveedor como de la centralita IP, deben negociar en cada llamada para escoger el tono a utilizar, tal como se hace con el codec y otras opciones.
En caso de que los tonos no lleguen correctamente, se debe de validar que ambas partes estén utilizando el mismo estándar para los tonos. Algunos de los errores reportados más comunes son:
- Los tonos llegan duplicados, es decir, si pulso un número 5, llega un 55.
- Los tonos no llegan completos, es decir, en caso de pulsar un 555, llega un 55.
- Los tonos ni siquiera llegan, es decir no vemos nada en el log a pesar de que son pulsados en el extremo llamante.
Proceso para identificar problemas de tonos en Asterisk con DTMF
- Habilitaremos el modo de debug en la consola de Asterisk para imprimir los eventos.
- En el archivo /etc/asterisk/logger.conf ver que exista la linea: consola => aviso, advertencia, error, dtmf
- En la configuración de la troncal, donde conectamos con el carrier asegurarnos de estos parametros (en el caso del dtmfmode, se sugiere usar el rfc2833 por ser el más común, sin embargo esto depende de los parametros del carrier, ver posibles modos al final ):
- relaxdtmf=yes
- dtfmmode=rfc2833
- rfc2833compensate=yes
- Escribir en la consola estos comandos:
- asterisk -rx “reload”
- asterisk -rx “sip reload”
Tipos de tonos en Asterisk
Existen diferentes tipos de tonos en asterisk, generalmente se dividen en dos, los que trabajan en banda y los que no trabajan en banda. es decir, algunos son realmente tonos analogicos multifrecuencia, y otros pasan la información dentro del paquete la información.
- inband
- rfc2833
- info
- auto
Por ejemplo, inband envía el tono dentro del el audio, el problema que si el audio es distorsionado, no será interpretado correctamente. El rfc2833 envia los tonos por aparte, dentro del mismo stream, pero los paquetes RTP van por separado, Info, envia los tonos en los paquetes SIP, es decir, separados de la media o RTP. Auto usa principalmente RFC2833, pero en caso de que no se negocien correctamente, debe escoger otro método.
Identificar si el proveedor no esta enviado o aceptando los tonos en asterisk
Identificar si del otro extremo el proveedor(también puede ser una sip trunk entre asterisk) no tiene habilitados los tonos, o usa otros tonos, es un dolor de cabeza realmente. Ya que pueden pasar horas de pruebas y ya sabes, muevele aqui, muevele haya. Por lo que les dejo una forma rápida de identificar mediante logs esta situación.
Habilita el modo debug, tal como lo indicamos al principio de este post y luego has una llamada telefónica. en el log “/var/log/asterisk/full” puedes ver la misma en tiempo real con el comando “tail -f /var/log/asterisk/full””
Si el proveedor NO TIENE el dtmf activo veras esto.
Si el proveedor SI TIENE el ftmf veras esto
TIPS PARA TONOS EN ASTERISK
- Si algunas llamadas funcionan los tonos en asterisk y otras no, es posible que tu proveedor no use rutas estáticas en las llamadas, dado que esta pasando por diferentes canales, estos no están generalmente homologados. Ahi te recomiendo checar si tu proveedor te puede dar rutas premium.
- Al momento de conectar una troncal nueva, o dar soporte a una utilizada, siempre es bueno leer la ficha de entrega, en ella debe aparecer el tono que se usa.
- Esto de los tonos en asterisk, solo es para telefonos que los soporte, (no para teléfonos de pulso como el de la foto).