viernes, 28 de febrero de 2014

PBX: Music On Hold en extensiones virtuales

Como los asiduos a este blog ya sabréis, estoy embarcado en temas de VoIP. Y, resulta, que había algo que quería hacer y me estaba costando un rato conseguirlo. No está del todo terminado, pero puedo adelantar las bases de lo que he tenido que hacer por si alguien lo necesitaba. Además, he tenido que hacer unos cambios con respecto a las fuentes, dado que cuando éstas se escribieron se hacía de otra manera.

Lo primero de todo: quiero que al llamar desde una extensión de mi centralita a otra extensión, ésta se comporte de una manera determinada. En mi caso, quería que sonase una música en espera y si después se desea, que suene alguna locución.

Lo primero que vamos a necesitar es crear una nueva extensión. En mi caso he querido que fuese virtual, porque no quiero que ningún terminal la utilice. Seguro que hay otras maneras de hacerlo. A lo mejor una de estas no es la más idónea. La monté en su momento pensando que podría hacerlo en 3 minutos y no fue así. Por lo tanto: crear una nueva extensión. En este caso tendrá que ser virtual. A la hora de rellenar los datos, pondremos:

  • El número de extensión
  • Display name: Será la descripción o nombre. 
  • Aunque posiblemente no haga falta, también le he rellenado el outbound cid con el mismo dato que el display name.
  • En recording options, las inboud [internal|external] calls también las vamos a activar siempre. Sin embargo, tengo que jugar con esto. José Luis (Verdeguer, aka Pepeluxx [@pepeluxx]), me pasó un script y tengo que jugar con él. 
  • El voicemail lo activas y se pone una contraseña. 

Ahora sí: tal y como lo tengo, creo que sólo va a servir el número de extensión asignado. Todo se andará.

Muy bien. Ahora quiero que haga ciertas cosas. Y si intentas configurar la música en espera (music on hold, o también conocido como MOH), y llamas directamente, te saldrá alguno de los contestadores diciéndote que no está disponible en esos instantes. Pues, dio la casualidad que atiné en una de las búsquedas que hice y encontré una solución:

[from-internal-custom]
exten=>383,1,Answer
exten=>383,2,Wait(1)
exten=>383,3,Background(tt-allbusy)
exten=>383,4,SetMusicOnHold,default
exten=>383,5,WaitMusicOnHold,30
exten=>383,6,Background(thank-you-for-calling)
exten=>383,7,Background(goodbye)
exten=>383,8,Congestion
exten=>383,9,Hangup


Fundamentalmente: abres el fichero que se encuentra en /etc/asterisk/extensions_custom.conf y, si no existe la primera línea se añade, si exite, se ponen el resto de líneas debajo de ésta.


Estupendo. Ahora que ya lo he guardado, cojo y ejecuto:


#asterisk -r
#core restart now


Por lo que he reiniciado el servicio de la centralita. Al menos, como es mía y sólo estoy yo, me puedo permitir hacerlo. Además, podría caber la posibilidad de que hubiese otra forma, pero a mí, ahora mismo, me vale. ¡Ojo! Que si tienes gente conectada a la tuya, podrías finalizar sus llamadas. 

Ahora, haces una prueba y... Sólo oyes la primera locución. Las demás... Nada. Si vas a los logs de las llamadas, podrás ver algo como esto:

No application 'SetMusicOnHold,default' for extension (from-internal, 383, 4)

Esto viene a decir: No entiendo qué significa "SetMusicOnHold,default" para la extensión que se encuentra en "from-internal, número_de_extensión, comando_número_4".


Si se busca esto, no lo va a ser capaz de ejecutarlo. De hecho, la llamada terminará abruptamente. ¿Cómo lo solucionamos? Pues  buscando un poco nos encontramos con que está deprecado (deprecated). 

Tendremos que ejecutarlo así:

[from-internal-custom]
exten=>50000,1,Answer
exten=>50000,2,Wait(1)
exten=>50000,3,Background(tt-allbusy)
exten=>50000,4,MusicOnHold(default,30)
exten=>50000,5,Background(thank-you-for-calling)
exten=>50000,6,Background(goodbye)
exten=>50000,7,Congestion
exten=>50000,8,Hangup

Ahora sí que conseguiremos que funcione todo el proceso. Pero sigue habiendo algunos puntos que tenemos que corregir. Por ejemplo: El comando (internamente me ha parecido ver que lo llaman aplicación), background. Éste se va a encargar de mostrar una locución y, a la vez, será capaz de entender los códigos que se introduzcan por teclado. Pero a mí no me interesa eso. Yo quiero que suene el audio que toque (por ejemplo, una voz pidiendo que esperes) y ya. Para eso está la opción de playback. Por eso, vamos a cambiar el primero por este segundo. Aquí dejo un enlace sobre las diferencias. Aunque, a decir la verdad, me gustaba más el anterior que encontré (y no sé dónde está).

Cuidado con no poner alguno de los pasos, o repetir el número en alguno de ellos. El comportamiento será algo curioso (tendría que haberlo apuntado!!). 

Podemos ver que ahora la opción de la música en espera es un sólo comando, al cual, se le pasará el nombre de la sección de la música en espera que deseas que suene y qué tiempo quieres que dure. Está en segundos. Si no lo he entendido mal, si no se pone el tiempo, esto sonará hasta que se termine el audio (una canción, por ejemplo). Lo que he llamado sección se encuentra en la interfaz web, en el menú de Settings, Music On Hold. Como puedes ver tenemos uno que se llama default. Este es el que nos sonará. Pero si quieres subir otra, mi recomendación a día de hoy, que no se cómo elegir alguna de las que están agrupadas, es crearse una por cada canción. El día que sepa cómo se puede escoger, aviso. 

Por lo tanto, y para resumir:
- El sistema descuelga la llamada
- Espera un segundo (no se si habrá algo más entre medias)
- Suena un audio solicitando que esperes, que todos están atendiendo otras llamadas de telemárketing.
- Música en espera para que te acomodes (o cuelgues si te cansas).
- Dos locuciones más.
- Unos pitidos como que la línea está ocupada
- Te cuelgan.

Poco a poco intentaré ir afinando el sistema. Además, como habéis podido observar, parte de la configuración la he hecho tirando de interfaz gráfica y otra parte ya me he animado a hacerlo editando ficheros (que no se verán modificados automáticamente en cuanto menos me lo espere).

No hay comentarios:

Publicar un comentario