La poderosa herramienta para la creación de aplicaciones de voz para 3CX, el 3CX Voice Application Designer (VAD), transforma los diagramas de la aplicación diseñada en scripts de VoiceXML.

Los scripts de VoiceXML pueden contener JavaScript para realizar ciertos cómputos, de modo que la biblioteca de JavaScript se encuentra a disposición del creador de las aplicaciones.

Conociendo esto, es posible sacar provecho de toda esta funcionalidad simplemente utilizando los objetos y funciones disponibles. A modo de ejemplo, crearemos una aplicación que permita dar un mensaje de bienvenida diferente dependiendo de la hora del día.

Paso 1: Crear el proyecto

En primer lugar es necesario crear un nuevo proyecto. Abra el VAD y vaya a “File -> New -> Project”, seleccione la carpeta donde desea alojarlo, y elija un nombre para el proyecto. En nuestro caso lo llamamos “TimeSelectionTest”.

Paso 2: Determinar la hora actual utilizando JavaScript

JavaScript pone a nuestra disposición el objeto “Date” que permite entre otras cosas obtener la fecha y hora actual. Lo que necesitamos hacer es definir una variable, por ejemplo “CurrentHour” y asignarle el valor utilizando una expresión de JavaScript.

Para crear la variable, seleccione el archivo “Main.flow” en el panel “Project Explorer”, y luego abra el editor de variables del Callflow presionando el botón a la derecha de “Variables” en la ventana de propiedades. Haga clic en “Add” para agregar una nueva variable. Especifique el nombre “CurrentHour” y presione “OK” para aceptar los cambios.

Luego agregue un componente de tipo “Variable Assignment” arrastrándolo desde la barra de herramientas hasta el Callflow, en la ventana de propiedades del nuevo componente seleccione la variable “callflow$.CurrentHour”, y luego abra el editor de expresiones presionando el botón a la derecha de “Expression”. Utilizando este editor, seleccione el tipo de expresión como “Javascript Expression” e ingrese la expresión “new Date().getHours()” como aparece en la figura:

Esta expresión tiene dos partes: en primer lugar “new Date()” construye un objeto de JavaScript de tipo “Date” utilizando el constructor por defecto, que lo inicializa con la fecha y hora actual. Luego el método “getHours()” permite obtener el número de la hora actual, entre 0 y 23.

De este modo, asignamos a la variable “CurrentHour” la hora actual.

Paso 3: Decidir el mensaje a reproducir dependiendo de la hora actual

Ahora que ya disponemos de la hora actual, podemos utilizar un componente de tipo “Conditional” para decidir qué mensaje reproducir:

  • De 6 a 12 horas reproduciremos un mensaje que diga “Buenos días”.
  • De 12 a 20 horas reproduciremos un mensaje que diga “Buenas tardes”.
  • En el resto de los horarios reproduciremos un mensaje que diga “Buenas noches”.

Es decir que el componente “Conditional” debe tener 3 ramas. Agreguemos el componente arrastrándolo desde la barra de herramientas, y agreguemos las ramas necesarias. El flujo principal debería verse como en la siguiente imagen:

Ahora debemos configurar las condiciones para cada rama. Como dijimos, la rama “morning” debe activarse cuando la hora actual se encuentra entre las 6 y las 12. Para esto, seleccione la rama “morning”, y en la ventana de propiedades presione el botón a la derecha de “Condition” para abrir el editor de expresiones. En este caso utilizaremos una “VAD Expression” para verificar que se cumplan las 2 condiciones (CurrentHour >= 6 y CurrentHour < 12). Dado que las dos condiciones deben darse en forma simultánea, en primer lugar utilizaremos la función del VAD “AND”, y en cada una de las dos sub-expresiones validaremos esas condiciones utilizando las funciones del VAD “GREAT_THAN_OR_EQUAL” y “LESS_THAN”:

Luego seleccionaremos la rama “afternoon” y seguiremos el mismo procedimiento para configurar que esta rama se active entre las 12 y las 20 horas.

Finalmente, la rama “night” puede dejarse con la “Condition” vacía, y de esta forma indicamos que se activa cuando ninguna de las otras ramas cumplió la condición, es decir que se activará antes de las 6 de la mañana y luego de las 20 horas.

Paso 4: agregar los mensajes a reproducir

Una vez que tenemos el componente “Conditional” configurado para seleccionar distintas ramas dependiendo de la hora del día, podemos agregar a cada una de estas ramas un componente de tipo “Prompt Playback” para reproducir un mensaje distinto en cada caso.

Para esto, arrastre el componente desde la barra de herramientas hasta el diagrama, y configure el mensaje correspondiente presionando el botón a la derecha de “Prompts” en la ventana de propiedades. Repita este paso para cada una de las tres ramas.

El Callflow debería verse como el de la siguiente imagen, y ya se encuentra listo para ser desplegado a su instalación de 3CX Phone System.