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 se 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á debe 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:
|
|
Actividades de bots
Las actividades permiten controlar el funcionamiento del bot.
Expand | ||
---|---|---|
|
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.
name incluirá el nombre que poseerá 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 default son 30 minutos.
SendMessage
Con esta actividad interactuaremos con el cliente, permite enviar un mensaje luego de cada vez que escribe el cliente.
Este campo puede funcionar de 3 formas:
Enviar un mensaje simple
message
Escribimos el mensaje que se desea enviar, cuando se ejecute la actividad enviará el texto de este campo.
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 guión (Ej: 1- o 1 -)
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. |
IsOnTime
Esta acción permite evaluar una respuesta y activar un recorrido u otro dependiendo el horario que le sea introducido.
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.
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 opciones y por cada una se realicen acciones diferentes.
á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. |
ReadMessage
Con esta opción el bot leerá la respuesta enviada por el cliente para guardarla en una variable y así utilizarla en otras actividades.
variable
Nombre de la variable que poseerá la respuesta.timeout
Tiempo de espera para continuar el flujo, si se excede este tiempo el contenido de la variable será:
““.
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.
variable
Nombre de la variable que poseerá el archivo.
Procedure
Esta actividad permite ejecutar código JavaScript.
á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.
ExecWebService
Permite ejecutar un web service.
variable
Nombre que poseerá la variable que contenga la respuesta del WS.method
Método que utilizará 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 el WS, estos se indican header:contenido.content-type
El tipo de contenido que es enviado 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. |
ExecQuery
Aquí podremos realizar consultas a la base de datos.
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. |
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.
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. |
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.
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. |
LogOp
Permite imprimir el contenido de una variable en el IntegraServer.
log
Se ingresa la variable que quiere imprimir con el formato ${variable}
Tip |
---|
Esta actividad se utiliza normalmente para el desarrollo del bot. |
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.
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. |
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.
name
Nombre de la variable que se utilizará como CLIENT_NAME
Ejemplo:
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á el valor de la variable en SetClientName.
Cuando la interacción llega a un agente, será visible el nombre del cliente con el valor de la variable ingresada en SetClientName.
SendAttachment
A través de esta actividad se permite enviar archivos al cliente.
url
Los archivos serán subidos en la carpeta etc/IntegraServer/web/attachments y hay que indicar 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
SendEmail
Permite enviar emails.
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.
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.
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.
Para saber más sobre las actividades disponibles, dirigirse a https://integra-scm.atlassian.net/l/c/x5Ph7Q4n
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
VARIABLES: type Object
Aquí se almacenan las variables propias de la interacción y se mantienen mientras exista la interacción: es posible accederla desde cualquier bot o incluso formularios cuando la interacción esta asignada a un agente.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_SUBJECT
Contiene el texto correspondiente al asunto del email recibido.EMAIL_BODY
Contiene el cuerpo del email recibido.
Note |
---|
|
Vea cómo crear su primer flujo de bots o descargue un flujo de ejemplo para comenzar a trabajar con ellos!.
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. |
title | Actividades de BotFunctions |
---|
BotFunctionStartActivity
Para poder crear un bot function se cuenta con la actividad BotFunctionStartActivity.
Esta actividad, a diferencia de la BotStartActivity, únicamente posee el campo ‘nombre’.Es decir que 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.
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.
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 listarán listan todos los bots creados.
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 |
---|
|
Tip |
---|
|
¿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 . En él advertiremos 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 numero número y guión.
En esta instancia el bot esperará espera la respuesta del cliente, para ello debemos agregar la actividad ReadMessage y nuestro flujo se verá será como el siguiente:
Ahora le agregaremos agregamos los Evaluate para analizar la respuesta respiuesta obtenida.
Pusimos 4 opciones así que utilizaremos 4Cómo colocamos cuatro opciones, utilizaremos cuatro.
En cada uno indicaremos la condición que debe tener la variable para que sea válido.
Para cada opción le agregaremos agregamos su destino, es decir, en el segundo y cuarto Evaluate utilizaremos ExecQuery 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 result
respond
.
En el segundo realizará una consulta por la versión del sistema, en el desplegable seleccionamos la base de datos en la que se realiza; y en la variable le pondremos el mismo nombre para utilizar que se utilizará luego en la respuestarespusta, en este caso es result
respond
.
En el TransferBot simplemente pondremos el nombre de la campaña a la cual será transferido el cliente.
Hasta aquí solo resta agregar un SendMessage devolviendo la respuesta y , seguido de un FinishInteraction.
Ahora solo resta unir nuestros flows, o ajustarlo a nuestras necesidades agregando tipificaciones. logs o WS, y les 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 |
Expand |
---|
. |
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.
Configurar headers de interacción
Es posible desde el bot, configurar headers personalizados para que el agente pueda tener información adicional acerca de la interacción (numero de cliente, numero de caso etc) en la parte superior del cuadro en la unified inbox
(foto de la unified inbox con headers de ejemplo)
Es necesario setar un array en la variable VARIABLES.HEADERS y al mismo array agregarle la cantidad que se desee de objetos
Code Block |
---|
VARIABLES.HEADERS = [];
VARIABLES.HEADERS.push({icon: "fa-user", title: "Nombre de cliente", value: "Ernesto"}) |
Ejemplo de codigo ejecutado desde el bot
Ejemplo de bot simple:
View file | ||
---|---|---|
|
Hasta aquí llega la introducción a Bots.
Próximamente agregaremos posts y videos al respecto.