Asterisk 1.8.X y los Calendarios - Tercera Parte: La función CALENDAR_EVENT

Como ya se ha visto en la primera parte de los artículos dedicados a Asterisk y los calendarios, esta función permite extraer todas las informaciones relacionadas con un evento. Más en detalle:

  • summary – El titulo del evento.

  • description – La descripción del evento

  • organizer – El organizador del evento

  • location – Sitio donde tiene lugar el evento

  • categories – Categoría del evento

  • priority – Prioridad asignada al evento

  • calendar – Nombre del calendario asociado con el evento

  • uid – numero único que identifica el evento

  • start – Fecha y hora de inicio de un evento

  • end – Fecha y hora en que termina el evento

  • busystate – El estado configurado para el evento

Con estos datos, se pueden construir diferentes bloques de dialplan. Un ejemplo es configurar un evento de Conferencia y en la casilla lugar indicar un numero de cuarto de conferencia.

En Google calendar sería:

1

2

¿Parece complicado? La verdad no. Lo importante es que cada persona que tiene o quiere participar a la conferencia ponga en su calendario personal la misma información en los campos Titulo y lugar.

En en dialplan:

nano /etc/asterisk/extensions.conf

Se modifica el bloque presentado en la primera parte de los artículos dedicados a Asterisk y los calendarios:

[calendario]
exten => cal,1,NoOp(Llamada desde el calendario)
same => n,Agi(googletts.agi,"${CALENDAR_EVENT(summary)}.",es)
same => n,Agi(googletts.agi,"a las ${STRFTIME(${CALENDAR_EVENT(start)},,%H:%M)}.",es)
same => n,Wait(1)
same => n,Playback(goodbye)
same => n,Hangup

Para que quede:

[calendario]
exten => cal,1,NoOp(Llamada desde el calendario)
same => n,Gotoif($[${ISNULL(${CALENDAR_EVENT(location)})} = 0 & "${CALENDAR_EVENT(summary)}" = "Conferencia"]?conf)
same => n,Agi(googletts.agi,"${CALENDAR_EVENT(summary)} a las ${STRFTIME(${CALENDAR_EVENT(start)},,%H:%M)}.",es)
same => n,Wait(1)
same => n,Playback(goodbye)
same => n,Hangup
same => n(conf),Agi(googletts.agi,"${CALENDAR_EVENT(description)}",es)
same => n,Confbridge(${CALENDAR_EVENT(location)},cM(default))
same => n,Hangup

En la línea dos se utiliza la función ISNULL que permite averiguar si una variable está vacía. Si la variable está vacía devuelve 1 sino 0. La lógica de la línea funciona de la siguiente manera: Si la variable ${CALENDAR_EVENT(location)}no está vacía “y” (el carácter &) la variable ${CALENDAR_EVENT(summary) contiene el valor Conferencia ir a la etiqueta conf sino continuar con la línea que sigue.

En la línea con la etiqueta conf se utiliza el AGI de texto a voz de Google y se le anuncia a la extensión la descripción del evento.

En la línea siguiente se utiliza la aplicación ConfBridge para crear una conferencia dinámica cuyo numero es el que aparece en el campo lugar (location) del calendario y se envía la extensión a esa conferencia.

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Asterisk 1.8.X y los Calendarios - Tercera Parte: La función CALENDAR_EVENT" Suscribirse a VozToVoice - Todos los comentarios