Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Un bot es un programa informático que efectúa automáticamente tareas repetitivas.

Tip

Disponible para los canales
WebChat, SMS, WhatsApp, Messenger y Email.

Contenido

Table of Contents
maxLevel2

Bots en uContact

Los bots permiten la ejecución de flujos a través de un motor JavaScript que  permite realizar casi cualquier acción si posee los conocimientos necesarios de programación.

Se pueden obtener desde simples respuestas hasta realizar transferencias, así como también consultas a la base de datos o ejecuciones de web services. Dichas funcionalidades son solo algunas de las actividades programables para los bots.

Para comenzar con bots deberá ingresar a uContact con un usuario de tipo Supervisor con permisos para utilizar el diseñador de flujos.

Note

Para comenzar a crear bots debe poseer licencias de bots disponibles.

Las mismas se pueden solicitar enviando un mail a Soporte de Integra.


Desarrollo del bot

Aquí es donde se define su comportamiento.

Para ello nos dirigimos al Diseñador de flujos, allí se nos abrirá una página en blanco.

Luego de colocar una Start Activity de botso bot function, sobre la izquierda en el menú de actividades, veremos un desplegable llamado Bots.

Las actividades que se muestran son todas las disponibles para poder implementar un bot.

Tip

A tener en cuenta:

  • Siempre se debe iniciar un bot con la actividad BotStartActivity

  • Siempre se debe finalizar un bot con la actividad FinishInteraction

  • Luego de una actividad TransferBot NO se debe incluir FinishInteraction


Actividades de bots

Las actividades permiten controlar el funcionamiento del bot.

Info

Todas las actividades poseen un campo ‘description’ que sirve para indicar un breve comentario sobre el comportamiento de la actividad.

Este campo es opcional.


BotStartActivity

Esta actividad es la primera del flujo, siempre debe estar incluida en todos los flujos creados, la misma indica al bot por dónde comienzan las actividades.

Image RemovedImage Added
  • name incluye el nombre que posee el bot.

  • botTimeout es el tiempo en minutos que espera el bot sin recibir respuesta para terminar la interacción y darla por abandonada, por defectoson 30 minutos.

  • msgBotTimeout es el mensaje que se muestra luego de que se de el botTimeout.

Image Removed
Image Added

SendMessage

Con esta actividad interactuamos con el cliente, permite enviar un mensaje luego de cada vez que escribe el cliente.

Este campo puede funcionar de 2 formas:

Enviar un mensaje simple

  • message
    Escribimos el mensaje que se desea enviar, cuando se ejecute la actividad enviará el texto de este campo.

Image RemovedImage Added
Tip

Mensajes con variables

En los mensajes también es posible incluir variables mediante ${variable}

Esto hará que en el mensaje se reemplace la variable con el valor que adquiera previamente.

Enviar opciones

  • message
    Para enviar un menú de opciones, en este campo cada línea debe comenzar con número y guion (Ej: 1- o 1 -)

Image RemovedImage Added
Info

En Webchat, al cliente le llegará un menú en el cual podrá seleccionar las opciones con un clic.

En los demás canales, se verá como un mensaje normal.

Image Removed
Image Added

IsOnTime

Esta acción permite evaluar una respuesta y activar un recorrido u otro dependiendo el horario que le sea introducido.

Image RemovedImage Added
  • schedule
    El formato del horario debe ser:
    mon,tue,wed,thu,fri,sat,sun;09:00-18:00

Puede concatenar varios horarios utilizando &

mon,tue,wed,thu,fri;09:00-18:00&sat,sun;09:00-13:00

Ejemplo:
El cliente escribe al bot y selecciona para hablar con un agente.
Tras leer la respuesta, puede decidir enviarlo a una campaña u otra dependiendo del horario en que se encuentre.

Image Removed
Image Added

Evaluate

Permite evaluar una respuesta, y basándose en ella, decidir por un camino u otro, los evaluate pueden encadenarse uno tras otro en caso de que tengamos multiples múltiples opciones y por cada una se realicen acciones diferentes.

Image RemovedImage Added
  • Área en blanco
    Aquí es donde introduce código Js para evaluar opciones.

Tip

Si la variable se cumple irá por el camino verde que sale del evaluate, si la variable no se cumple irá por el rojo.

Image Removed
Image Added

ReadMessage

Con esta opción el bot leerá lee la respuesta enviada por el cliente para guardarla en una variable, y así, utilizarla en otras actividades.

Image RemovedImage Added
  • variable
    Nombre de la variable que poseerá posee la respuesta.

  • timeout
    Tiempo de espera para continuar el flujo, si se excede este tiempo el contenido de la variable seráes:
    ““.

Image Removed
Image Added

ReadFileMessage

Esta opción es similar a la anterior solo que se utiliza para guardar una imagen luego de solicitarla y así llegará con éxito al agente.

Image RemovedImage Added
  • variable
    Nombre de la variable que poseerá el archivo.

Image Removed
Image Added

Procedure

Esta actividad permite ejecutar código JavaScript.

Image RemovedImage Added
  • Área en blanco
    Aquí es donde introduce código Js.

Útil, por ejemplo, si se desea parsear la respuesta de un web service o aumentarle el valor a una variable para utilizar de contador.

Image Removed
Image Added

ExecWebService

Permite ejecutar un web service.

  • variable
    Nombre que poseerá posee la variable que contenga contiene la respuesta del WS.

  • method
    Método que utilizará utiliza el WS, estos pueden ser: Get, Post, Put y Delete.

  • url
    Dirección en la cual se encuentra el WS.

  • body
    Contenido del body del WS.

  • headers
    Todos los headers que lleve lleva el WS, estos se indican header:contenido.

  • content-type
    El tipo de contenido que es enviado se envia en el WS.

Info

En esta activity se pueden utilizar tanto web services externos como los propios de uContact para, por ejemplo, realizar llamadas o enviar correos.

Ver APIs de uContact

Image Removed
Image Added

ExecQueryJSON

Aquí podremos realizar consultas a la base de datos.

Image Removed

 Ejecuta la consulta ingresada y devuelve, en la variable, la respuesta en forma de JSON.

Image Added
  • variable
    Nombre que poseerá la variable que contenga el resultado de la consulta.

  • área en blanco
    Aquí es donde se redacta la consulta SQL.

Info

Es importante recordar que en la consulta se debe ingresar la BD desde la cual se tomarán los datos.

Image Removed
Image Added

Disposition

Permite realizar una tipificación a la interacción con el bot, de esta manera se le puede dar seguimiento a los flujos recorridos por el cliente.

Image RemovedImage Added
  • level1
    Nivel 1 de la tipificación.

  • level2
    Nivel 2 de la tipificación.

  • level3
    Nivel 3 de la tipificación.

  • comment
    Comentarios de la tipificación.

  • extra
    Contenido extra para la tipificación.

Info

Las tipificaciones se insertan directamente en la BD, por ende no necesariamente necesitan ser creadas en el sistema, las mismas por mas que estén creadas en uContact no ejecutarán acciones como schedule o respool ya que pertenecen a otro canal.

Image Removed
Image Added

TransferBot

Con esta opción podremos transferir la interacción desde un bot a una campaña del mismo canal en que se encuentra el bot.

Image RemovedImage Added
  • destination
    Debemos indicar el nombre exacto de la campaña a la que se desea transferir.

Tip

Cuando la interacción llegue a un agente, este podrá ver la conversación entre el cliente y el bot.

Note

Si utiliza esta función se recomienda NO utilizar el mismo bot para campañas de distintos canales ya que el botno podrá transferir a otro canal.

Image Removed
Image Added

LogOp

Permite imprimir el contenido de una variable en el IntegraServer.

Image RemovedImage Added
  • log
    Se ingresa la variable que quiere imprimir con el formato ${variable}

Tip

Esta actividad se utiliza normalmente para el desarrollo del bot.

Image Removed
Image Added

FinishInteraction

Esta acción debe encontrarse al final de cada flujo ya que la misma le indica al bot que terminó su recorrido y cierra la interacción con el cliente.

Image RemovedImage Added

Esta actividad no posee campos de configuración ya que su única función es terminar la interacción.

Info

Luego de un FinishInteraction, el cliente de Webchat verá un mensaje para abandonar el chat o permanecer en él y ver la conversación, pero se le inhabilitan las llamadas y el área de texto.

Image Removed
Image Added

SetClientName

Esta actividad toma el contenido de una variable y lo asigna al nombre del cliente de la interacción y a su vez lo asigna a la variable global CLIENT_NAME del bot.

Image RemovedImage Added
  • name
    Nombre de la variable que se utilizará como CLIENT_NAME

Ejemplo:

  1. En un mensaje se solicita al cliente que ingrese su nombre, seguido un ReadMessage que permita tomar su respuesta dentro de una variable, esa variable se ingresa en SetClientName, luego en el flujo, si mandamos un mensaje con la variable global CLIENT_NAME, se utilizará utiliza el valor de la variable en SetClientName.

  2. Cuando la interacción llega a un agente, será visible el nombre del cliente con el valor de la variable ingresada en SetClientName.

Image Removed
Image Added

SendAttachment

A través de esta actividad se permite enviar archivos al cliente.

Image RemovedImage Added
  • url
    Los archivos se suben en la carpeta etc/IntegraServer/web/attachments y se indica de que tipo son:

    • image

    • audio

    • video

    • application/pdf

Ejemplo de uso: application/pdf|20200504/filename.pdf para enviar un archivo que se encuentra en etc/IntegraServer/web/attachments/20200504/filename.pdf

Image Removed
Image Added

SendEmail

Permite enviar emails.

Image RemovedImage Added
  • template
    Nombre del template de email que se desea utilizar.

  • variables
    Dentro del template podremos tener variables a reemplazar ${ejemplo}, en este campo debemos indicar todas las variables del template a reemplazar y el valor que poseerán con el siguiente formato:
    ejemplo:valor

Las variables del template pueden ser reemplazadas por otras variables que poseamos en el bot incluso por variables globales.

Image Removed
Image Added

GoToFunction

Esta actividad permite anidar tanto bots como bots functions.

Suponga que se cuenta con un bot denominado B y un bot function denominado BF y B tiene la actividad GoToFunction y en el campo name tiene asignado name= “BF”.

Al momento de ejecutar la actividad GoToFunction se detiene la ejecución del bot B y se comienza a ejecutar BF. Luego de que termine de ejecutar BF, se retornará a B para seguir ejecutando las actividades siguientes.

Es de esta forma que se logra anidar varios bots o bots functions a un bot inicial.

Image RemovedImage Added
  • name
    Campo que contiene el nombre del bot o del bot function al cual se pasará el control una vez que se ejecute esta actividad.


FuzzySearch

En el primer parámetro queda guardada la respuesta, la segunda variable es un string, y la tercera variable es un arreglo de palabras. En la respuesta se devuelve un JSON que se ordena por mayor coincidencia de palabras, y por cada coincidencia se devuelve un score que indica el porcentaje de coincidencia.

Image RemovedImage Added

WaitBot

Deja pausado un bot hasta que se ejecuta la actividad Resume desde un Webhook o channel provider.

Info

La actividad WaitBot puese ser usada, unicamente, desde un bot o un bot function.

Image RemovedImage RemovedImage Added
Image Added

ExecCommand

Ejecuta el comando ingresado y deja el resultado en la variable.

Image RemovedImage RemovedImage Added
Image Added

SetData

 SetData recibe el GUID de una interacción, y le setea esa data de la interacción y a la variable global VARIABLES del bot, lo que esta guardado en el campo “data”.

Note
  • El campo ‘data’ debe ser un JSON.

  • El GUID debe ser uno existente.

Image RemovedImage RemovedImage Added
Image Added

ExecQuery

Aquí podremos realizar consultas a la base de datos.

Image RemovedImage Added
  • variable
    Nombre que poseerá la variable que contenga el resultado de la consulta.

  • área en blanco
    Aquí es donde se redacta la consulta SQL.

Info

Es importante recordar que en la consulta se debe ingresar la BD desde la cual se tomarán los datos.


Variantes globales

Hay ciertos datos del cliente que se obtienen de la interacción, los mismos pueden ser utilizados en distintas actividades.

Las variables globales son:

Para todos los canales

  • CHANNEL
    Canal por el cual se contacta el cliente.

  • CAMPAIGN
    Campaña de la interacción.

  • GUID
    Guid único de la interacción.

  • CLIENT_ID

    • SMS/WhatsApp
      Número de teléfono del cliente.

    • Webchat
      Contenido del campo Email de webchat.

    • Messenger

Webchat

  • PHONE_NUMBER
    Contenido del campo Teléfono de webchat.

  • CLIENT_NAME
    Contenido del campo Nombre de webchat.

  • INITIAL_MESSAGE
    Contenido del campo mensaje.

SMS/WhatsApp

  • SMS_PROVIDER_TYPE
    Proveedor de SMS por el cual llega la interacción.

  • INITIAL_MESSAGE
    Mensaje que inició la interacción.

Messenger

  • CLIENT_NAME
    Nombre del cliente en facebook.

  • PAGE_NAME
    Nombre de la página por la cual llega la interacción.

  • INITIAL_MESSAGE
    Mensaje que inició la interacción.

Email

  • EMAIL_SUBJECT
    Contiene el texto correspondiente al asunto del email recibido.

  • EMAIL_BODY
    Contiene el cuerpo del email recibido.

Note
  • Al crear el primer flujo para bots, se creará también el contexto bots, en él se listan todos los flujos creados para bots.

  • Previo a crear el primer flujo el contexto bots no existe.

  • Cuando crea un bot para emails recuerde contemplar las posibles respuestas a los mails enviados.

Vea cómo crear su primer flujo de bots o descargue un flujo de ejemplo para comenzar a trabajar.

Bots functions

Los bots function son bots que se utilizan como funciones. Su propósito es poder modularizar ciertas secciones de los bots para poder facilitar el desarrollo, las pruebas y el mantenimiento de los mismos. 

Los bots function no consumen licencias de bots y se suben al servidor con el contexto ‘botsFunction’.

Info

El contexto 'botsFunction' no existirá hasta que sea creado el primer BotFunction.

En los BotFunctions se pueden utilizar todas las actividades de bots, pero iniciarán con BotFunctionStartActivity en lugar de BotStartActivity.


BotFunctionStartActivity

Para poder crear un bot function se cuenta con la actividad BotFunctionStartActivity. 

Image RemovedImage Added

Esta actividad, a diferencia de la BotStartActivity, únicamente posee el campo ‘nombre’.

Es decir, la actividad inicial de un bot function no posee el campo ‘bot_timeout’, ni tampoco el campo ‘timeout_message’, lo que significa que el timeout que se tomará en cuenta es el del bot que llama al bot function.

Image Removed
Image Added

GoToFunction

Esta actividad permite anidar tanto bots como bots functions.

Suponga que se cuenta con un bot denominado B y un bot function denominado BF y B tiene la actividad GoToFunction y en el campo name tiene asignado name= “BF”.

Al momento de ejecutar la actividad GoToFunction se detiene la ejecución del bot B y se comienza a ejecutar BF. Luego de que termine de ejecutar BF, se retornará a B para seguir ejecutando las actividades siguientes.

Es así que se logra anidar varios bots o bots functions a un bot inicial.

Image RemovedImage Added

  • name
    Campo que contiene el nombre del bot o del BotFunction al cual se pasará el control una vez que se ejecute esta actividad.


Administración del bot

A partir de la actualización 6.275 en la configuración de campañas de SMS, WebChat y Messenger, veremos un menú desplegable llamado Nombre de bot, al desplegarlo se listan todos los bots creados.

Image RemovedImage Added

Tras seleccionar el bot deseado para la campaña, simplemente presiona el botón Guardar y su campaña comenzará a trabajar con bots.

Warning
  • Las interacciones que se encuentren abiertas al momento del cambio no se verán afectadas, lo mismo aquellas que se encuentren en la queue.

  • A una campaña con bots no es necesario incluirle agentes, ya que el bot tomará las interacciones y las pueden distribuir a otras campañas más específicas.

Tip
  • Las interacciones que se generen luego de hacer el cambio, sí comenzarán a utilizar el bot.

  • Los chats con los bots quedan grabados y pueden ser consultados en las grabaciones de su respectivo canal.

  • Los bots cumplen la función de un agente, esto nos permite realizar incluso reportes obteniendo los datos del bot.

  • En las tabla de mensajes de cada canal el parámetro agent es el nombre del bot.


¿Cómo crear el primer bot?

En esta sección veremos cómo crear un flujo básico, a modo de ejemplo y práctica, que contenga las siguientes acciones:

  • Presentación - SendMessage

  • Opciones - SendMessage

  • Obtener respuesta - ReadMessage

  • Evaluar la respuesta - Evaluate

  • Finalizar interacción tipificando - Disposition

  • Insertar un usuario en una tabla - ExecQuery

  • Transferir a una campaña - TransferBot

  • Consultar la versión del sistema y guardar la variable - LogOp

  • Utilizar la variable en una respuesta y finalizar la interacción - SendMessage

Comenzaremos por agregar la acción de BotStartActivity y ponerle un nombre al bot.

Este nombre es el mismo que se mostrará en el menú desplegable de configuraciones.


Luego agregaremos dos SendMessage que se enviarán seguidos.

El primero será nuestra presentación. En él advertimos al usuario de que debe seleccionar una de las opciones que le daremos a continuación.

En el segundo daremos las opciones, haciendo una por línea y comenzando con número y guión.

Image RemovedImage RemovedImage AddedImage Added

En esta instancia el bot espera la respuesta del cliente, para ello debemos agregar la actividad ReadMessage y nuestro flujo será como el siguiente:

Ahora le agregamos los Evaluate para analizar la respiuesta obtenida. Cómo colocamos cuatro opciones, utilizaremos cuatro.

En cada uno indicaremos la condición que debe tener la variable para que sea válido.

Image RemovedImage Added


Para cada opción le agregamos su destino, es decir, en el segundo y cuarto Evaluate utilizaremos ExecQueryJSON y en el tercero un TransferBot.

En el primer ExecQuery escribiremos un insert, en el desplegable seleccionamos la base de datos en la que se realiza y en la variable le pondremos un nombre para utilizar luego en la respuesta, en este caso es respond.

En el segundo realizará una consulta por versión del sistema, en el desplegable seleccionamos la base de datos en la que se realiza; y en la variable pondremos el mismo nombre que se utilizará luego en la respusta, en este caso es respond.

Image RemovedImage Added

En el TransferBot pondremos el nombre de la campaña a la cual será transferido el cliente.

Image RemovedImage Added

Hasta aquí solo resta agregar un SendMessage devolviendo la respuesta, seguido de un FinishInteraction.

Ahora solo resta unir nuestros flows, o ajustarlo a nuestras necesidades agregando tipificaciones. logs o WS, y quedaría algo similar a lo siguiente:

Tip

Luego de terminado simplemente lo activamos, agregamos a la campaña y tus bots comenzarán a funcionar.


Enviar correo a través de WS de uContact

Si deseas enviar un correo desde una campaña específica y un destinatario específico, debes configurar lo siguiente:

  • Añade la aplicación ExecWebService a tu workflow:

  • Ingresa a su configuración:

  • Llena el body con la siguiente información:

    Code Block
    body={"campaign": "Email","to": "adress@ucontactcloud.com","cc":"example@example.com",
    	"cco":"example@example.com,example2@example2.com",
    	"subject": "Subject",
    	"body": "This is an email body can be HTML",
        "attachments": ["020212/738hbjk-h73894algo.jgp", "020212/738hbjk-h73894algo.jgp"],
        "reports":["<generated_report_guid>.pdf"],
    	"schedule": {
    		"title": "Date title",
    		"organizer": "Myself",
    		"from": "2018-08-24 00:00:00",
    		"to": "2018-08-24 01:00:00"
    	},
    	"template": "templateName",
    	"variables": {
    		"var1":"value",
    		"var2":"value2"
    	}
    }&agent=nombreAgente

Ejemplo:

Code Block
body={"campaign": "Comercial","to": "gmorales@integraccs.com","cc":"mauricio@cleverideas.com.mx","subject":"Cliente en espera de ser atendido","template": "CleverBOToffline","variables": {"cliente": "${CLIENT_ID}", "texto": "${msgoffline}"}}&agent=generalBot

Y en la URL debemos setear lo siguiente:

Code Block
http://localhost:8085/IntegraChannels/resources/Forms/SendMailv2

Por último, setear POST en nuestro método y x-www-form-urlencoded para el content type.


Log de flows

Se utiliza log4j2 como librería para el log de flows, y el archivo donde se puede ver todo lo relacionado con los bots se encuentra en var/log/IntegraFlows.log.

Este archivo no solo loguea los errores, sino que de manera similar a lo que se hace en el https://integra-scm.atlassian.net/l/c/nY4voq0m , loguea todas las actividades que se van recorriendo a medida que se recorre el flow.

El formato en que se imprime la información en IntegraFlows.log es el siguiente:

AAAA-MM-DD HH:mm:ss - [Número de thread] - [Nombre del flow - guid del flow] [Número de paso de la actividad]

Primero se va a loguear la ejecución de la actividad y luego se loguean los parámetros de la actividad que se ejecutó.

Cuando el flow finaliza se imprime el mensaje FINISH.

Ejemplo:


Logger

Una vez que se carga un flujo con contexto bots, channel providers o webhooks en Workflow Designer, se puede visualizar la opción Logger, la cual permite ver el log de todas las ejecuciones del flow que está cargado.

Por defecto, el logger está desactivado, para activarlo hay que presionar en el interruptor que se encuentra en la esquina superior izquierda.

También cuenta con la posibilidad de filtrar los mensajes en la consola del workflow según nivel de error. Los niveles disponibles son Info, Warning y Severe.

Ejemplo de Logger:

Image RemovedImage Added


Ejemplo de bot simple:

View file
nameBotShow.json