Introducción
Diálogos es la funcionalidad que te permitirá crear Chatbots y Chatbots de Encuesta a través de WhatsApp. Cuando el cliente envía un mensaje al chatbot, este analiza el contenido y responde de forma automática. El usuario recibe respuestas instantáneas, de acuerdo con instrucciones predefinidas, las que se establecen teniendo en cuenta sus intereses y necesidades.
Crear un chatbot
Para crear un Chatbot, es importante saber qué objetivo quieres conseguir. Recuerda que no es lo mismo un chatbot para atención al cliente que uno para ventas.
Para empezar, dirígete a la sección Diálogos - Crear diálogo.
Al ingresar al constructor de diálogos, encontrarás a la izquierda el menú de acciones y nodos que podrás utilizar para la creación del chatbot.
Veamos a continuación qué función podrás ejecutar con cada uno de los nodos:
Entrada
Escucha: podrás configurar Key Words o palabras claves que activan el diálogo. Puedes seleccionar un porcentaje de aproximación con relación a la palabra clave activadora.
Controles
Condición: El nodo de Condición permite controlar el flujo de un diálogo evaluando la respuesta del usuario. Si la respuesta coincide con un listado de palabras definidas, el flujo continúa por el camino verdadero; si no hay coincidencia, sigue por el camino falso.
Verificar Valores Vacíos o Null: En el nodo de Condición, tambien puedes seleccionar la opción "vacío" o "null" para verificar rápidamente si un dato, como por ejemplo el nombre del contacto, ya ha sido capturado. Esto permite hacer preguntas más específicas solo cuando es necesario, evitando la repetición de la misma pregunta a lo largo de la conversación.
Variable de sesión: Este nodo también puede interactuar con variables de sesión, es decir, datos capturados durante la conversación o generados mediante el nodo de código. Esto permite crear condiciones dinámicas sin necesidad de almacenar la información en el perfil del contacto, utilizando datos temporales obtenidos en tiempo real dentro de la sesión del chatbot.
A/B Split: el nodo A/B Split se utiliza para dividir la audiencia en dos grupos y mostrarles diferentes caminos de conversación para evaluar cuál es más efectivo.
Conexión de nodo: te permitirá redireccionar a los usuarios hacia una instancia previa del diálogo automático cuando los usuarios quieran "volver o regresar hacia atrás" sobre el menú de opciones brindado anteriormente.
Conexión de diálogo: te permitirá establecer una conexión con otro chatbot existente. Este nodo se convierte en un puente que conecta dos flujos de chatbot, facilitando la continuación de la interacción.
Acciones
Texto: el nodo de tipo texto permite enviar mensajes de texto plano a los usuarios, y a su vez tambien permite utilizar variables internas obtenidas ya sea desde nodos de captura de datos o eventos. Puedes agregar archivos adjuntos y capturar variables para cada usuario.
💡¿Cómo capturar una variable?
Habilita la función captura de variables y escribe el nombre de la variable que quieres solicitarle al usuario. Por ejemplo, puede ser: nombre, apellido, email, cumpleaños, ubicación, etc.
En regla, indica qué tipo de entrada es: texto, numero, email, patrón personalizado, fecha, ubicación.
Luego indica la cantidad de intentos que el usuario puede completar correctamente el dato, para poder avanzar en el flujo del chatbot.
Finalmente, configura los mensajes de fallido en caso de que la información ingresada por el usuario sea erronea.
Lista: el nodo de lista es normalmente utilizado para enviar al usuario un listado con opciones de selección. Puedes incluir hasta 10 opciones por cada sección del mensaje.
Nota: Este nodo tambien permite activar la función captura de variables para capturar las respuestas de tus contactos y almacenarlas en variables de sesión. Te servirán para actualizar datos de tus contactos y/o personalizar tus próximos mensajes.
Boton: te permite agregar opciones de seleccion rápida
Nota: Este nodo tambien permite activar la función captura de variables para capturar las respuestas de tus contactos y almacenarlas en variables de sesión. Te servirán para actualizar datos de tus contactos y/o personalizar tus próximos mensajes.
Llamada a la acción: el nodo de llamada a la acción permite enviar un mensaje con una URL en un botón para que el contacto se redirija a un sistema web externo.
Este nodo también tiene una configuración avanzada que permite utilizar estos enlaces externos para que se realice una acción en la página externa y que continúe el flujo solo cuando se complete esa acción (puede ser un pago, un registro, etc.).
Para configurar esta espera hay que activar la opción "Permitir retomar el flujo"
Al activar esta opción, lo que sucede es que el diálogo va a esperar a recibir un evento externo para continuar la conversación con el contacto del sistema al que redirijamos en el CTA. El sistema será responsable de avisar a Convos para así avanzar.
Documentación técnica.
Adjunto: el nodo de adjunto permite enviar tanto documentos como archivos multimedia al usuario.
Contacto: el nodo de contacto envía al usuario un mensaje en formato contacto con los datos ingresados.
Mapa: permite enviar al usuario una ubicación geográfica.
Webhook: el nodo de webhook es un componente flexible que permite enviar peticiones a endpoints para notificaciones y consumo externo.
Debes configurar:
URL: <URL de la API destino>.
METHOD: Puedes configurar el verbo HTTP necesario para la comunicación (POST, GET, PUT, PATCH, DELETE)
HEADERS: Puedes configurar los headers necesarios para la integración de los sistemas.
BODY: Puedes configurar el JSON que tu API necesite para la integración de los sistemas.
Dentro del body puede utilizar datos dinámicos que vayas colectando en el diálogo o datos que ya tenga el contacto en el sistema.
Dentro del body puede utilizar datos dinámicos del contacto en el sistema.
{
name: "{{contact.name}}",
campo_personalizado_1: "{{contact.field_1}}",
... (puedes agregar los campos que necesites)
}
Tags: sirven para asignar etiquetas a contactos o conversaciones para luego poder filtrar sobre ellos y mantenerlos clasificados.
Campos: sirve para guardar datos en los perfiles de contacto. Por ejemplo, si le preguntas ¿Cuál es tu nombre? en un nodo de texto, luego debes adicionar este nodo de campo para guardar el dato en el perfil del contacto.
Código: es un nodo que permite dar solución a ideas o necesidades avanzadas. Este nodo permite escribir código de programación en JavaScript, dicho esto podrías desarrollar un código que dependiendo tus necesidades en ciertos momentos del diálogo puedas interactuar con API externas, lógicas avanzadas, generación de mensajes dinámicas, etc.
Para ver la información completa de este nodo avanzado puede ver el siguiente articulo.
Por otro lado, vas a tener a disposición los datos que vayan solicitando al cliente con los nodos de pregunta, también podemos utilizar los datos del contacto que ya existen en el sistema de Convos.
Para finalizar el script se tiene que llamar a la función output, dicha función finaliza el nodo código y le indica al sistema diferentes acciones.
output({
state: {
wait: false
},
variables: {},
messages: []
})
En caso de que necesites enviar mensajes, puedes agregar una key messages con las cantidades de mensajes que tu proceso necesite.
Ejemplos de mensajes de texto simple.
output({
state: {
wait: false
},
variables: {},
messages: [
{
type: 'text',
text: {
body: `Hola`,
},
},
{
type: 'text',
text: {
body: `¿Cuál es tu edad?`,
},
}
]
})
En caso de que necesites crear variables que luego quieres utilizar en el diálogo o guardar en el sistema, debes agregar una key variables con la cantidad de variables que necesites. Puedes crear variables compuestas entre dos datos, o datos provenientes desde una API externa.
// code building variables.
const ageOfTheCustomer = 46
output({
state: {
wait: false,
},
variables: {
age: ageOfTheCustomer,
},
messages: [],
})
En caso de que necesites acceder a las variables en el código que se le solicita al usuario o bien si quieres acceder a variables del contacto que existen en el sistema.
let fullname = `${variables.firstname} ${variables.lastname}`
let age = null
if (contact.birthdate) {
age = new Date().getFullYear() - (new Date(contact.birthdate)).getFullYear()
}
output({
state: {
wait: false
},
variables: {
fullname: fullname,
age: age
},
messages: [
{
type: 'text',
text: {
body: `Hola ${fullname} 👋🏻, tienes ${age} años.`,
},
}
]
})
En caso de que necesites comunicarte con otra API, puedes utilizar el método fetch.
const params = {
header: {
'Content-Type': 'application/json',
Accept: 'application/json'
},
method: 'POST',
body: JSON.stringify({
variables
})
};
const response = await fetch('<API>', params);
const data = JSON.parse(response)
output({
state: {
wait: false,
},
messages: [
{
type: 'text',
text: {
body: `Dato desde la API ${data.info1}`,
},
}
]
});
En caso de que necesites realizar preguntas al cliente y que el nodo de código se siga ejecutando hasta que termines de resolver tu necesidad, puedes devolver stage.wait = true, así que la próxima vez que el usuario responda, el nodo de código se va a volver a ejecutar, aquí deberás tener en cuenta esto en tu código en particular, para que apliques una lógica que solo se ejecute la parte que necesites que sea ejecutada.
let stateInternal = {
wait: true
}
let messages = []
// Codigo que se ejecuta la primera vez.
if (!state.step) {
messages.push({
type: 'text',
text: {
body: `Primer mensaje`,
},
})
stateInternal.step = 2
}
// Codigo que se ejecutar la segunda vez.
if (state?.step == 2) {
messages.push({
type: 'text',
text: {
body: `Segundo mensaje`,
},
})
stateInternal.wait = false
}
output({
state: stateInternal,
variables: {},
messages: messages
});
Dentro de la variable de state puedes guardar datos que luego puedes utilizar para conocer información de la sesión, recomendamos esta variable para guardar una referencia de qué sección del código se debe ejecutar dentro de la lógica, es importante no declarar una variable con dicho nombre, ya que se va a disparar un error.
Para leer la respuesta de un usuario debes acceder a la variable inboundMessage o inboundMessageBody. La variable inboundMessage tiene toda la información en una estructura JSON y la variable inboundMessageBody es un acceso directo al mensaje de texto que el usuario escribe.
Como el nodo de código puede fallar, vamos a tener que escribir un mensaje de error para dar una respuesta al usuario.
Tiempo de espera: puedes utilizar este nodo para configurar tiempos de espera entre nodo y nodo para continuar con el flujo.
Gestion de contactos: te permitirá ejecutar acciones de segmentación de contactos, como copiar, mover o quitar de un grupo.
Bandeja: te permitirá redireccionar conversaciones a tus inbox de atención al cliente para que los Agentes operadores puedan brindar asistencia personalizada.
Otros
Comentario: utiliza el nodo de comentario para dejar notas/observaciones internas sobre la configuración del diálogo.
Final: configuralo siempre que desees terminar la sesión del diálogo automático
Guardar y configurar propiedades avanzadas del diálogo
Para guardar y publicar un bot, primero es necesario configurar sus propiedades avanzadas.
Cómo acceder a las propiedades avanzadas
Haz clic en el botón "Propiedades".
Se abrirá una ventana emergente con diversas configuraciones clave para el correcto funcionamiento del bot.
3. Se abrirá una ventana emergente con configuraciones avanzadas para el correcto funcionamiento del bot. Veamos las opciones disponibles:
Nombre: Define un nombre para el chatbot.
Etiquetas: Asigna una o más etiquetas para clasificar el bot.
Notas: Agrega una descripción sobre el propósito y funcionamiento de este flujo conversacional.
Habilitado: Activa esta opción para que el bot esté listo para su publicación. Puedes establecer una fecha de inicio (activación) y una fecha de finalización (desactivación). Si no configuras fechas, el flujo funcionará de manera indefinida por defecto.
Canal: Si tienes varios canales de mensajería conectados, decide si este flujo estará disponible en todos ellos o solo en algunos específicos.
Fallback: Si esta opción está activada, el bot responderá siempre, sin importar el mensaje inicial del usuario. Si está desactivada, priorizará la escucha del nodo configurado al inicio del flujo.
Uso externo: Permite que el bot escuche los mensajes entrantes de los destinatarios.
Prioridad sobre ticket activo: Activa esta opción solo si el bot está vinculado a una campaña transaccional.
Prueba: Publica el bot solo para ciertos contactos, ideal para probar el flujo antes de hacerlo visible a todos los usuarios.
Sesión: podrás configurar mensajes automáticos para incentivar que las conversaciones continúen cuando el cliente haya estado inactivo (con el bot) por un período determinado. Esta funcionalidad mejora la interacción al mantener la atención del usuario incluso después de un tiempo de inactividad, facilitando una experiencia de conversación más fluida.
Configura mensajes automáticos por inactividad en el Bot
Sesión (minutos): Define el tiempo máximo de duración de la sesión del bot.
Notificar inactividad luego de (minutos): Establece el tiempo de inactividad tras el cual el bot enviará un mensaje automático para reactivar la conversación.
Mensaje de inactividad: Redacta el mensaje que se enviará al usuario después de X minutos de inactividad, incentivando la continuación de la charla. Por ejemplo:
"Hola, aún estás ahí?"
Notificar cierre de sesión cuando falten (minutos): Define el tiempo restante antes de que la sesión de bot se cierre, para notificar al usuario que la conversación está por finalizar.
Mensaje de sesión por cerrar: Personaliza el mensaje que se enviará cuando la sesión esté por terminar, dándole al usuario una oportunidad para seguir conversando o finalizar la interacción. Por ejemplo:
"Ups! 😶 Detectamos cierta inactividad en la conversación, por lo que vamos a finalizarla. Recuerda que puedes escribirnos de nuevo cuando quieras para realizar gestiones virtuales. ¡Que tengas un lindo día! 👋"
Copiar un diálogo entre proyectos
¿Qué es esta funcionalidad?
Con esta funcionalidad, ahora puedes copiar un diálogo ya creado en un proyecto hacia otro proyecto dentro del sistema. Esto es especialmente útil si necesitas replicar lógicas similares entre proyectos, ahorrando tiempo y minimizando posibles errores al configurarlos manualmente.
¿Dónde lo encuentras?
Puedes acceder a esta funcionalidad en:
Sección de Diálogos > Menú de cada diálogo > Duplicar en otro proyecto
¿Cómo funciona?
Selecciona el diálogo a copiar
Dirígete a la sección de Diálogos.
Identifica el diálogo que deseas copiar hacia otro proyecto.
Accede al menú del diálogo
Haz clic en el menú desplegable del diálogo (generalmente representado por tres puntos o un ícono de acciones).
Selecciona la opción de copiar
En el menú, elige la opción "Duplicar en otro proyecto".
Selecciona el proyecto de destino
Aparecerá un listado de los proyectos disponibles en tu cuenta.
Elige el proyecto al que deseas duplicar el diálogo.
Confirma la acción
Revisa los datos y las configuraciones del diálogo que serán duplicados.
Haz clic en "Duplicar" para completar el proceso.
Beneficios para el cliente y el equipo
Ahorro de tiempo: Copiar diálogos existentes entre proyectos elimina la necesidad de configurarlos desde cero.
Minimización de errores: Al duplicar lógicas ya probadas, reduces el margen de error en la creación manual.
Eficiencia en el mantenimiento: Ideal para quienes gestionan múltiples proyectos con configuraciones similares.
¿Cuándo usar esta funcionalidad?
Si estás trabajando en varios proyectos que comparten las mismas lógicas o flujos de conversación.
Cuando necesitas implementar rápidamente un diálogo funcional y probado en un nuevo proyecto.
Para mantener la consistencia entre proyectos al reutilizar configuraciones exitosas.
Con esta herramienta, la gestión de múltiples proyectos será más sencilla y eficiente.

























