Introducción
La biblioteca de bloques fue creada para facilitar el día a día de quien necesita construir un contacto inteligente sin tener un profundo dominio técnico y necesita velocidad para publicar. Con ella, será posible aplicar tanto habilidades deterministas básicas como Onboarding, LGPD, Inactividad, Cascada de validación, Algo más, Finalización y CSAT, como estructuras utilizando los agentes builder.
Conceptos básicos
La estructura para la utilización de los bloques listos está pensada en la arquitectura de enrutador para el buen funcionamiento, en la que cada conjunto de bloques listos quedará dentro de un builder/Studio conectado a un enrutador. De esta forma, el contacto inteligente resulta fácil de mantener y evolucionar.
¿Es posible utilizar los bloques listos dentro de un único builder/Studio? Sí, es posible, pero existirá un desafío para realizar evoluciones y mantenimientos debido a la interconexión entre los bloques, ya que, si se necesita editar una parte específica de la estructura, será necesario entender qué otras partes están conectadas a la parte que será editada o evolucionada, causando así un elevado gasto de tiempo para configurar.
Visión macro
Es importante, antes de comenzar a utilizar la biblioteca, tener bien definida la estructura conversacional que se realizará y cómo las partes de esa conversación interactuarán entre sí. Normalmente, una conversación tiene un inicio, medio y fin, siguiendo un objetivo principal. La visión macro es muy parecida a los diagramas de flujo de BPMN. En esta visión, es importante visualizar los caminos, los gatillos de decisión y tener símbolos que representen los eventos dentro de la estructura de la conversación.
La biblioteca
La biblioteca de bloques está dividida en Habilidades, Agentes y Casos de uso.
Habilidad es un conjunto de bloques estándar con un objetivo específico dentro de la conversación del contacto inteligente.
Agente puede ser un bloque de agente o un conjunto de bloques agentes y bloques estándar, siendo que los bloques de agente son fundamentales para el objetivo específico dentro del contacto inteligente.
Caso de uso es un conjunto de habilidades y agentes para un objetivo específico dentro de una jornada del contacto inteligente.
Cada opción dentro de la biblioteca tiene una etiqueta y puede ser buscada en la barra de búsqueda como se representa en la imagen a continuación:
Bloques listos
| Habilidades: | |
|
|
| Agente: | Caso de uso: |
|
|
Habilidades
Onboarding
Orienta y da la bienvenida al usuario, explicando cómo comenzar a usar el servicio y realiza las gestiones de saludo o retorno y verifica si la LGPD ya ha sido respondida.
|
Bloque | [LOGIC] A.1.0.0 Validación de entrada Se utiliza la variable {isNewUser} dentro de las condiciones de salida para entender si es la primera vez que la persona está conversando con el contacto y dirigirla al bloque correspondiente. Acción de registro de eventos de origen.
Bloque | [MSG] A.2.0.0 Sí validación Contenido de mensaje del primer acceso del usuario, acciones de registro de eventos de origen y visualización, y definición de la variable {isNewUser} en las acciones. La condición de salida es solo si la respuesta del usuario existe.
Bloque | [MSG] A.3.0.0 No validación Contenido de mensaje de retorno del usuario, acciones de registro de eventos de origen y visualización. La condición de salida es solo si la respuesta del usuario existe.
Bloque | [LOGIC] LP.1.0.0 - LGPD Validación Validación de si la persona ya respondió los términos de la LGPD. A través de la validación de si la variable {userAceptedPrivacyPolicy} existe y si es igual a si la respuesta del usuario fue sí o no a la aceptación. Acción de registro de eventos de origen, LGPD validación y LGPD no respondió.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio hacia otro servicio/habilidad dentro de la acción de salida. |
LGPD:
Explica brevemente qué es la LGPD y recolecta la aceptación del usuario para que el Contacto Inteligente pueda recolectar datos sensibles.
|
Bloque | [START] Entrada de la habilidad utilizando la condición de salida si la variable {input.content@redirectId} existe y direcciona por el ID del bloque.
Bloque | [INPUT] LP.2.0.0 - LGPD Descripción sobre la LGPD con el enlace para ver con más detalle junto con las opciones para que la persona seleccione si acepta, no acepta y saber más.
Bloque | [LOGIC] LP.2.0.0 - [No] Aceptación LGPD Realiza la validación a través de un script de la opción elegida. Bloque | GOTO LP.2.0.0 - Service Name Redirecciona al servicio/habilidad en caso de que la persona haya aceptado los términos del acuerdo.
Bloque | [INPUT] LP.3.0.0 - No está de acuerdo con la LGPD Si la persona no acepta los términos, se muestra un mensaje reforzando que es necesaria la aceptación para continuar con la conversación. Presenta las mismas opciones sí, no y saber más.
Bloque | LP.4.0.0 - Saber Más Detalle sobre la LGPD.
Bloque | [LOGIC] LP.3.0.0 - No está de acuerdo con la LGPD Realiza la validación a través de un script de la opción elegida.
Bloque | GOTO LP.3.0.0 - Service Name Redirecciona al servicio/habilidad en caso de que la persona haya aceptado los términos del acuerdo.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio a otro servicio/habilidad dentro de la acción de salida.
Bloque | Redirect Inactividad Redireccionamiento a la habilidad de inactividad y retorno al punto donde se está esperando un input del usuario. |
Inactividad:
Envía un mensaje para rescatar la conversación del usuario con el Contacto Inteligente después de un periodo inactivo.
|
Bloque | [INPUT] I.1.0.0 - Inactividad Muestra el mensaje y solicita si la persona quiere continuar en la conversación.
Bloque | [LOGIC] I.1.0.0 - Inactividad A través de la variable {setValidation}, se realiza la validación para entender si la persona continuará o no en el flujo.
Bloque | [INPUT] I.1.2.0 Cierre Contenido de mensaje de finalización.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio a otro servicio/habilidad dentro de la acción de salida. |
Opt-In/Out:
Gestiona la autorización del usuario para recibir o no comunicaciones.
|
Bloque | [INPUT] I.1.0.0 - optin Contenido de mensaje solicitando si a la persona le gustaría recibir una notificación.
Bloque | [LOGIC] I.1.0.0 - OPT-IN Validación de la opción elegida a través de un script.
Bloque | OPT 1.0.1 - Aceptación de Opt-in Mensaje cuando la persona acepta recibir la notificación.
Bloque | OPT 2.0.0 - Opt out Mensaje cuando la persona quiere dejar de recibir la notificación, informando que el nombre fue retirado de la lista de envío.
Bloque | OPT.1.0.2 - No aceptación Mensaje cuando la persona no quiere recibir la notificación.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio a otro servicio/habilidad dentro de la acción de salida.
Bloque | Redirect Inactividad Redireccionamiento a la habilidad de inactividad y retorno al punto donde se está esperando un input del usuario. |
Algo Más:
Verifica si la persona desea agregar información o conversar sobre otro asunto.
|
Bloque | [INPUT] AM.1.0.0 - Algo más Contenido de mensaje preguntando si la persona necesita algo más.
Bloque | [LOGIC] AM.1.0.0 - Algo más Validación de la opción elegida por medio de un script.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio a otro servicio/habilidad dentro de la acción de salida.
Bloque | Redirect Inactividad Redireccionamiento a la habilidad de inactividad y retorno al punto donde se está esperando un input del usuario. |
Finalización:
Concluye la atención de forma clara, confirmando el cierre de la interacción pudiendo dejar abierta la posibilidad de retorno de la conversación.
|
Bloque | F.1.0.0 - Finalización Contenido de mensaje informando la finalización de la conversación e informando la forma de retornar a la conversación.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio a otro servicio/habilidad dentro de la acción de salida. |
CSAT:
Recolecta la evaluación de satisfacción del usuario después de la atención.
|
Bloque | [START] Entrada de la habilidad utilizando la condición de salida si la variable {input.content@redirectId} existe y direcciona por el ID del bloque.
Bloque | [MSG] C.1.0.0 Pregunta Resolutividad Contenido de mensaje preguntando si la solicitud fue atendida.
Bloque | [LOGIC] C.1.0.0 Pregunta Resolutividad Validación de la opción elegida a través de un script utilizando la variable {userInput} utilizada en las condiciones de salida.
Bloque | [MSG] C.1.0.1 Resolutividad negativa Contenido de mensaje preguntando qué puede ser mejorado.
Bloque | [MSG] C.1.1.1 Pregunta CSAT Contenido de mensaje preguntando la nota de evaluación.
Bloque | [LOGIC] C.1.1.1 Pregunta CSAT Validación de la nota de evaluación enviada a través de un script utilizando la variable {userInput}.
Bloque | [MSG] C.1.1.2 Finaliza CSAT Contenido de mensaje de finalización.
Bloque | Redirect Finish Acción de redireccionamiento de servicio a la habilidad de finalización.
Bloque | Redirect Inactividad Redireccionamiento a la habilidad de inactividad y retorno al punto donde se está esperando un input del usuario. |
Transferencia humana:
Deriva la atención a un humano cuando sea necesario.
|
Bloque | Customer service Bloque de atención con las configuraciones de atención cuando no haya ninguna atención o fuera de la atención.
Bloque | ATH.1.0.0 Ningún agente disponible Contenido de mensaje informando que no hay agente disponible y preguntando si a la persona le gustaría esperar.
Bloque | ATH 1.1.0 Espere Contenido de mensaje informando a la persona que espere.
Bloque | ATH 1.2.0 Despedida Contenido de mensaje finalizando e informando el disparador para volver a la conversación.
Bloque | ATH2.0.0 Fuera de horario Contenido de mensaje informando que está fuera del horario de atención junto con los horarios de atención.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio a otro servicio/habilidad dentro de la acción de salida.
Bloque | Redirect Inactividad Redireccionamiento a la habilidad de inactividad y retorno al punto donde se está esperando un input del usuario. |
Datos personales:
Solicita, valida y organiza información personal del usuario con seguridad. CPF - Nombre - Email - Teléfono
|
Bloque | [START] Entrada de la habilidad utilizando la condición de salida si la variable {input.content@redirectId} existe y direcciona por el ID del bloque.
Bloque | [MSG] Mensaje intro Contenido de mensaje informando que se realizará la recolección de algunas informaciones.
Bloque | [LOGIC] DC.1.0.0 ¿Pedir cpf? En las acciones de entrada se define la variable {dadosPessoais} para entender cuáles serán las informaciones que se recolectarán. Validación de si será necesario pedir el CPF.
Bloque | [MSG] DC.1.0.1 Pedir CPF Contenido de mensaje solicitando CPF.
Bloque | [MSG] DC.1.0.1 Pedir CPF Validación Validación del formato y de si es un CPF válido a través de un script utilizando la variable isValidCpf y agregado en la acción de definir contacto en el parámetro documento.
Bloque | [LOGIC] DC.1.1.0 ¿Pedir Nombre? Valida si el valor nombre está activo en la variable {dadosPessoais}.
Bloque | [MSG] DC.1.1.1 Pedir Nombre Contenido de mensaje solicitando Nombre.
Bloque | [LOGIC] DC.1.1.1 Pedir Nombre Validación Validación de formato básico de nombre a través de un script utilizando la variable nameValidation y agregado en la acción de definir contacto en el parámetro nombre.
Bloque | [LOGIC] DC.1.2.0 ¿Pedir E-mail? Valida si el valor e-mail está activo en la variable {dadosPessoais}.
Bloque | [MSG] DC.1.2.1 Pedir E-mail Contenido de mensaje solicitando Email.
Bloque | [LOGIC] DC.1.2.1 Pedir E-mail validación Validación del formato y de si es un email válido a través de un script utilizando la variable hasEmail y agregado en la acción de definir contacto en el parámetro email.
Bloque | [LOGIC] DC.1.3.0 ¿Pedir Teléfono? Valida si el valor e-mail está activo en la variable {dadosPessoais}.
Bloque | [MSG] DC.1.3.1 Pedir Teléfono Contenido de mensaje solicitando Teléfono.
Bloque | [MSG] DC.1.3.1 Pedir Teléfono validación Validación del formato y de si es un teléfono válido a través de un script utilizando la variable phoneNumber y agregado en la acción de definir contacto en el parámetro email.
Bloque | [MSG] Mensaje transición Contenido de mensaje informando que los datos fueron recolectados.
Bloque | REDIRECT SERVICE Acción de redireccionamiento de servicio a otro servicio/habilidad dentro de la acción de salida.
Bloque | Redirect Inactividad Redireccionamiento a la habilidad de inactividad y retorno al punto donde se está esperando un input del usuario. |
Cascada de Validación:
Proceso en etapas para confirmar datos proporcionados, validando cada información antes de proseguir con la siguiente.
| Jerarquía de Validación | |
| Atributos | Descripción |
| customized_errors | Utilizado para validaciones personalizadas que las otras etapas no contemplan, ej: formato de datos solicitados por el bot. |
| api_error | Utilizado para validar si el usuario fue redireccionado a partir de una falla de llamada HTTP. Si es así, no deberá proseguir con las demás etapas de la cascada. |
| validation_media_error | Utilizado para identificar errores de multimedia. |
| audio_error | Agrega una etapa específica para la validación de audio, si existe. Ej: Blip speech to text. |
| link_error | Valida si el texto contiene solo un enlace. Cuando existe solo texto o texto con enlaces, prosigue a la siguiente etapa. Si tiene solo un enlace, presenta un mensaje y retorna a la habilidad anterior. |
| emoji_error | Valida si el texto contiene solo emojis. Cuando existe solo texto o texto con emojis, prosigue a la siguiente etapa. Si tiene solo emojis, presenta un mensaje y retorna a la habilidad anterior. |
| botxbot_error | Valida si el usuario es un bot. Si los últimos inputs (cantidad ajustable) son idénticos O el último input coincide con el regex de mensajes automáticos, el usuario es considerado un bot. Para proseguir debe enviar un texto específico; de lo contrario, se cierra la sesión. |
| non_talkables_error | Gestión de términos sensibles. Deben definirse las variables: {{config.utilsApiUrl}}, {{config.utilsApiAuth}}, {{config.globalSheetsId}}, {{config.connectionTalksSheetsTabName}}, {{config.connectionTalksSheetsTabRange}}. |
| clear_text | Utilizado para la limpieza de texto antes de que la etapa de regex sea llamada al proveedor de NLP. |
| global_regex_error | Validação de regex global para inputs em qualquer ponto do bot. |
| long_message_error | Validación de regex global para inputs en cualquier punto del bot. Utilizado para validar si el mensaje es demasiado largo para ser enviado al NLP. Cantidad máxima de caracteres actualmente: 100. |
| connection_talks_error |
Funcionalidad conectada al servicio de Smalltalks. Es responsable de identificar una small talk y definir el mensaje que se enviará al usuario en caso de coincidencia. Además, también es posible definir el bot y el bloque de destino tras la recepción del mensaje. Deben definirse las variables: {{config.utilsApiUrl}}, {{config.utilsApiAuth}}, {{config.globalSheetsId}}, {{config.nonTalkableSheetsTabName}}, {{config.nonTalkableSheetsTabRange}}. |
| short_message | Utilizado para impedir llamadas al proveedor de NLP en caso de que el mensaje sea muy corto. Verifica si contiene 3 o más letras. |
| nlp_error | Utilizado en caso de que haya integración con un proveedor de NLP en el bot. Deben definirse las variables de configuración: {{config.AuthorizationApiKeyIA}} y {{config.commandsUrl}}. |
| content_assistent | Utilizado en caso de que haya integración con un asistente de contenido. Deben definirse las variables de configuración: {{config.AuthorizationApiKeyIA}} y {{config.commandsUrl}}. |
En los atributos non_talkables_error y connection_talks_error existe conexión con sistemas externos para buscar una respuesta de acuerdo con el contexto y punto de la conversación.
Tan pronto como la cascada sea agregada dentro del área del Studio a través de la biblioteca, busque el bloque [REQ] set variables:
En la pestaña de acciones dentro del script Process ExceptionHierarchy, es posible determinar qué validación estará activa (true) o desactivada (false) dentro de la conversación.
Los atributos non_talkables_error y connection_talks_error están desactivados de forma predeterminada. Si desea activarlos, basta con colocar true y guardar. Pero recuerde configurar estas validaciones de acuerdo con su contexto.
Configuración de las Habilidades
Paso a paso:
Crear un chatbot
Acceder a la biblioteca
Agregando una habilidad
Instrucciones Habilidades
Cada habilidad importada al área del builder tendrá un bloque llamado "comece aqui" (comience aquí). En ese bloque habrá instrucciones de configuración de la skill importada; basta con aplicar las configuraciones y la habilidad estará funcionando.
Normalmente los bloques de bienvenida y error estándar, que ya vienen tan pronto como se crea el chatbot, pueden ser borrados.
Agente Registro
El agente listo para usar dentro de la biblioteca de bloques es un agente de registro de información básica como nombre, correo electrónico y teléfono; después de la recolección, es dirigido a un bloque estándar para dar continuidad a la conversación.
| Imagen | Prompt |
|
<objetivo>Recolectar y validar NOMBRE, EMAIL y TELÉFONO del usuario en pt-BR.</objetivo> <directrices> <flujo> <campos> Puede ser solo nombre y apellido</pregunta> <campo id="email"> <campo id="telefono"> <mensagens> ¿Son correctos?</resumo> |
Caso de uso - Calificación de Leads
Al ser un caso de uso, un conjunto de habilidades quedará todo dentro de un único builder como en la imagen de abajo:
Utilizar un único builder para colocar todas las habilidades puede facilitar por el hecho de estar todo dentro de un único ambiente de trabajo, pero en contrapartida habrá un desafío en caso de que necesite evolucionar o agregar cosas nuevas en la estructura conversacional: será tener un cuidado redoblado en las conexiones entre los bloques.
Para conocer más detalles sobre cómo usar y algunos consejos de utilización de la biblioteca de bloques, tenemos un AMA en nuestro canal de YouTube.