Ejemplo de flujo de telefonía


Introducción


En esta sección pondremos a modo de ejemplo como crear un flujo básico de telefonía. En este paso a paso permitiremos que el cliente tenga cuatro opciones para digitar, cada una con distintas acciones.

  1. La llamada será redireccionada a la campaña de Ventas y será atendido por cualquier operador disponible.

  2. En el audio de bienvenida se le da la opción al cliente, que ya forma parte en nuestros datos, que indique su documento de identidad, para así direccionar la llamada a la campaña correspondiente.

  3. Se marca un número específico, en este caso, a nuestro soporte técnico en ese caso, un celular.

  4. Como última opción, el cliente puede marcar 4 para hablar directamente con nuestra operadora.


Pasos para un IVR

  1. StartActivity: Todo workflow comienza de esta forma, la misma va a tener el contexto en el cual va a estar ubicado y el patrón que va a machear para ejecutar el flujo l (en este caso, llamando al número 10800).

  2. Answer: Para atender la llamada.

  3. SetLanguage: El lenguaje SetLenguage (pt, es, en), esto va a indicar desde que idioma va a tomar los audios que va a reproducir.

  4. SetAUDIOHOOK_INHERIT(MixMonitor) value = yes: Unifica el audio cuando una llamada es transferida para escucharla posteriormente en una sola grabación.

  5. Set__Ani value = ${CALLERID(num): Hace posible el seguimiento de llamadas por medio de logs.

  6. Guid: Genera un identificador único para cada llamada.

  7. SetCDRGuid: Para poder dejar en el CDR ese identificador único.

  8. SetCDRType type= record: Marca como se va a grabar la llamada.

  9. SetRecordName ${guid}: Setea el nombre de la grabación.

  10. Read: Menú para el cliente.

 

La actividad Read tiene como función pedir un dato, guardar el mismo en una variable con un nombre y reproducir un audio, que puede ser un audio de bienvenida comunicando las distintas opciones a tomar o simplemente solicitar un dato necesario (ya sea un pin, CI, teléfono, etc.). También se puede limitar cuantos intentos puede tener el cliente, cuantos segundos como máximo va a estar esperando que se digite la información solicitada, y cuantos dígitos puede tener la misma.

Luego de obtener el dato solicitado, vamos a utilizar una condicional donde evaluaremos que condición se cumple.

Tendremos que construir la estructura para que ingrese a donde nosotros queremos, para realizar la misma empleamos la actividad Gotoif. Esta se comporta con base en una condición y tiene dos posibles caminos: Verdadero si se cumple (verde) primera flecha que sacamos de la actividad y Falso (rojo) segunda flecha que se saca de la actividad.

En nuestro caso, le dimos el nombre de opcion a la variable que devuelve el valor, y como la misma puede adoptar 4 posibles valores, creamos 4 Gotoif.

Como primera opción tenemos el número uno, con la condición: $[${opcion}=1].

1. Gotoif $[${opcion}=1]: SI es verdadero va a una campaña si no va a evaluar las otras posibles opciones de la variable opcion.

Supongamos que nuestro cliente ingreso el número uno, por ende la llamada se dirige al sector de ventas según nuestro audio. Para direccionar la llamada a la cola de la campaña Ventas se utiliza la actividad Queue, la misma se indica con el nombre que figura la campaña en el portal de uContact.

 

12. SetCDRCampaign: Marca en el CDR la llamada perteneciente a esa campaña (en este caso Ventas←).

13. Queue: Envía la llamada al ACD de Ventas← en nuestro ejemplo.

Ahora pasemos a la opción número 2 de nuestro IVR, en este caso suponemos que el cliente ya estaría registrado en nuestra base de datos. Ingresamos otro Read con un audio solicitando el número de documento, delimitando con un máximo de 8 dígitos y dando 3 intentos como máximo, guardado en una variable llamada cedula.

14. Gotoif $[${opcion}=2]

15. Read: Menú obtener documento de identidad.

A continuación, pasamos a la consulta en la base de datos con la actividad Func_ODBC. Esta cuenta con 3 campos; el primero es el origen de datos (que está en uContact), donde vamos a realizar la consulta, la segunda el nombre de la variable en la cual se guarda el resultado de la consulta (puede ser el nombre de una variable simple o un HASH. Si es un HASH (cliente), entonces se guardan todas las columnas que salen de la consulta y se acceden ${HASH(cliente,nombrecolumna)} si la consulta retorna un resultado único, se puede guardar en una variable simple, luego pudiendo accederla ejemplo ${doc}); y la tercera la consulta que vamos a ejecutar. En este caso se consulta si el documento ingresado se encuentra efectivamente en nuestra base de datos ya registrada.

16. Func_ODBC: Consulta a la base de datos.

Al tener la respuesta de nuestra base de datos vamos a pasar a validarla, nuevamente con la App Gotoif. Preguntamos si la variable es distinta a 0, ya que realizamos la consulta con un count(*) si efectivamente existe ese número va a retornar 1 o más.

17. GotoIf $[${doc}!=0]

Nuevamente, usamos los caminos condicionales, en el caso que la condición no se cumpla y el número de documento ingresado retorne 0 porque no existe en nuestra base, conectamos nuevamente nuestro Gotoif con el Read solicitando el número de documento nuevamente, hasta que pueda cumplir la condición. Cuando la misma se cumpla se trasladara la llamada a la cola de la campaña respectiva para atender al cliente.

18. SetCDRCampaign: Marca en el CDR la llamada perteneciente a esa campaña en este caso (Clientes←).

19. Queue: Va a campaña para los clientes registrados.

Cuando marque 3, se comunicará directamente con nuestro soporte técnico, en este caso es un número celular con la App Dial se marca al número de soporte.

20. Dial: Marcamos ya sea un trunk SIP o una línea digital el número destino a donde conectar al cliente.

Como última opción, tenemos a nuestra operadora, donde se dirige automáticamente por la App GOTO hacia un número interno de nuestra organización.

 

21. Goto: Envía al contexto internos a un número de interno en particular en la prioridad 1.

 

Cabe destacar, observando la siguiente imagen la Aplicación HANGUP terminando cada una de nuestras opciones, es algo necesario de realizar cada vez que nuestra llamada sea transferida o redireccionada a un interno, número o cola fuera de nuestro flujo.



Por último Activamos el flujo con el botón de activación en la esquina superior derecha.