Una de las “options” en la aplicación Dial() de Asterisk es A(x), la cual fuerza a Asterisk a reproducir el mensaje de audio x en una determinada extensión cuando ésta descuelga la llamada. La utilidad de esta opción puede ser el reproducir un mensaje de audio en la extensión llamada del estilo de “le recordamos que por motivos de seguridad esta conversación puede ser grabada…….”. Un ejemplo práctico de esta opción sería el mostrado a continuación:
Como se observa, las options incluidas en la aplicación Dial() son tTA y todas ellas van una a continuación de otras, sin espacios ni ningún símbolo separador entre ellas. El parámetro de la opción A es la ruta del fichero de audio a reproducir y se coloca entre paréntesis inmediatamente a continuación de la propia opción. En el ejemplo indicado, cuando una extensión que esté situada en el contexto de operadora marque un número como *202, *203 y *204, la aplicación Dial() llamará a dicha extensión y en cuanto la llamada sea descolgada reproducirá el mensaje de audio indicado como parámetro. En el siguiente vídeo se observa de forma práctica este proceso:
Mensaje de audio cuando el usuario llamado descuelga la llamada
Se observa no obstante que mientras se está reproduciendo el mensaje de audio se sigue escuchando el tono de llamada de la extensión 201 a la 203. Esto es debido a que Asterisk no establece el canal de llamada entre ambas extensiones hasta que la extensión 203 termina de reproducir el mensaje de audio. Para evitar este efecto no deseado se debe de utilizar la opción a de la aplicación Dial(). Esta opción solamente se utiliza en estos casos especiales donde la extensión llamada tiene que realizar alguna acción cuando recibe una llamada. En el resto de casos no será necesario. La sintaxis con esta corrección queda de la forma siguiente:
En el siguiente vídeo se observa el funcionamiento práctico con esta nueva opción a en la aplicación Dial():
Eliminación del tono de llamada mientras se reproduce el mensaje de audio
Otra de las opciones comunes en cualquier PBX clásica es la que permite ajustar la duración de una llamada. Esta función se utiliza normalmente en llamadas salientes a fin de reducir el gasto en el servicio telefónico, pero también se puede utilizar incluso en llamadas internas, a fin de optimizar el uso del servicio telefónico. Asterisk permite una configuración muy sofisticada mediante la opción L de la aplicación Dial(). Esta opción admite además tres parámetros x,y,z cuyo significado se explica a continuación:
- L(x[:y][:z]): Limita la llamada a “x” milisegundos, lanzando un aviso de warning a “y” milisegundos, repitiendo este warning cada “z” milisegundos. Solo el parámetro “x” es requerido siendo “y” y “z” opcionales. En cualquier caso tienen que ser numeros enteros.
Para dar mas opciones a esta función de limitación de tiempo de llamada, las siguientes variables afectan a dicho proceso de limitación de tiempo de llamada
- LIMIT_PLAYAUDIO_CALLER=yes|no: Especifica si el llamante (el que tiene la restricción de tiempo de llamada) escuchará los tonos de aviso de límite de llamada. Por defecto esta variable está en “yes”
- LIMIT_PLAYAUDIO_CALLEE=yes|no: Idem para el destinatario de la llamada.
- LIMIT_TIMEOUT_FILE= filename: Especifica que fichero de audio se reproducirá al finalizar el tiempo de llamada
- LIMIT_CONNECT_FILE= filename: Especifica que fichero de audio se reproducirá al comenzar la llamada
- LIMIT_WARNING_FILE= filename: Especifica que fichero de audio se reproducirá al cumplirse el tiempo de warning si es que dicho tiempo ha sido fijado. Si dicho fichero no existe, se reproducirá un mensaje donde se indicará “You have XX minutes YY seconds”
Un ejemplo práctico de esta opción requiere en primer lugar grabar los mensajes de audio correspondientes y a continuación introducir esta opción junto con los parámetros deseados en cada una de las aplicaciones Dial() donde deseemos limitar el tiempo de llamada, dentro de nuestro DialPlan. En la siguiente captura de pantalla se muestra un ejemplo:
Se puede observar que se utilizarán dos ficheros de audio, uno al principio de la llamada y otro al finalizar la misma. Para ello se han ajustado las variables LIMIT_CONNECT_FILE y LIMIT_TIMEOUT_FILE con la ruta a los ficheros de audio que se deben de reproducir. El tiempo de límite de llamada se ha ajustado a 50 segundos, con un aviso de warning cuando falten 20 segundos y con avisos repetidos cada 10 segundos. Se han puesto limitaciones de tiempo muy reducidas por tratarse de un ejercicio puramente didáctico. En el siguiente vídeo se observa su funcionamiento práctico
Límite de tiempo de llamada con avisos mediante mensajes de audio personalizados
Como era de esperar, las posibilidades de programación de Asterisk superan a las que ofrecen la mayoría de las PBX convencionales, ya que en dichas centralitas, normalmente, el aviso se limita a un tono de “beep” al alcanzarse el tiempo de Warning y con posterior repetición de dicho tono a intervalos determinados hasta el agotamiento del tiempo de llamada. No es frecuente que una PBX convencional incorpore la posibilidad de añadir mensajes de audio de la forma en que lo permite Asterisk.
Exelente el blog…aprendo muchisimo mas de lo que lo pudiera hacer en cualquier universidad.