Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .
El enlace a la publicación original, lo encontrarás al final de este artículo.
…
En nuestrapublicación de blog anterior , presentamos la nueva y poderosa API de la plataforma Einstein Bots. En esta publicación, analizaremos cómo funcionan las transferencias de Einstein Bot y profundizaremos en cómo funcionan las transferencias de bot a bot y cómo compartir datos entre bots.
¿Qué es una transferencia de chat de Einstein Bot?
Una transferencia de chat de bot es un proceso automatizado mediante el cual el sistema transfiere al usuario a un chatbot diferente o a un agente humano. Las transferencias pueden ocurrir debido a varias razones, tales como:
- Debido a una solicitud del usuario
- Durante una sesión de chat, los usuarios pueden, por varias razones, solicitar ser transferidos a un agente humano
- Debido a una condición de error
- Al procesar una solicitud de chat de un usuario, si hay un error/excepción en el sistema (por ejemplo, si una llamada de servicio falló o se agotó el tiempo de espera), el bot iniciará una solicitud de transferencia
- Debido a una configuración predefinida
- El administrador del bot puede configurar el bot de tal manera que si el usuario escribe una determinada frase/intención, o el flujo de diálogo lleva el chat a una determinada condición, entonces se inicia automáticamente una transferencia.
Puede leer más sobre las transferencias de chat de Einstein Bot en la documentación .
¿Cómo funcionan las transferencias de chat?
Como se explicó en nuestrapublicación de blog anterior , todas las sesiones de chat que no son de API están configuradas para funcionar en canales administrados por Salesforce. Es decir, el chat se inicia en nombre del usuario y se cancela o transfiere a un bot diferente o a un ser humano mediante un sistema de administración de canales propiedad de Salesforce.
El siguiente diagrama de secuencia ilustra un escenario típico de transferencia de chat de bot a bot.
El contexto del diagrama anterior es que hay una sesión de chat en curso entre el usuario y Einstein Bot 1. La secuencia sigue estos pasos:
- El usuario envía un mensaje de chat destinado a Einstein Bot 1.
- El canal de Salesforce recibe el mensaje y luego lo retransmite a Einstein Bot 1.
- Einstein Bot 1 inicia una solicitud de transferencia de chat. El bot puede hacer esto por cualquiera de las tres razones principales que describimos anteriormente en esta publicación (consulte la sección "¿Qué es una transferencia de chat de Einstein Bot?").
- El objetivo de la transferencia puede ser un agente humano, una cola de Salesforce o un bot diferente. En este escenario, el destino de la transferencia es Einstein Bot 2, lo que lo convierte en un escenario típico de transferencia de bot a bot.
- Una vez que el canal de Salesforce correspondiente recibe la solicitud de transferencia de Einstein Bot 1, simplemente establece una nueva sesión de chat con el objetivo (Einstein Bot 2) de la misma manera que lo hizo con Einstein Bot 1.
- La respuesta de Einstein Bot 2 al inicio del chat se transmite al usuario, quien luego comienza a chatear con Einstein Bot 2.
Tenga en cuenta que la transferencia se realizó sin problemas sin que el usuario lo notara (a menos que el usuario lo solicite explícitamente)
Transferencias de chat con la API de la plataforma de bots de Einstein
Con la nueva API de Einstein Bot Platform, las transferencias de chat funcionan de manera diferente. No hay un canal de Salesforce para realizar una transferencia de chat automatizada, el sistema del cliente tiene que hacer la transferencia real.
Exploremos esto usando nuestro escenario de transferencia de bot a bot. El siguiente diagrama ilustra una transferencia de chat mediante la API de la plataforma de bots de Einstein.
Nuevamente, el contexto de este diagrama de secuencia es que hay una sesión de chat en curso entre el usuario y Einstein Bot 1. La secuencia sigue estos pasos:
- El cliente envía un mensaje de chat a Einstein Bot 1. Nota: aquí el cliente es en realidad un sistema (un servicio web/un cliente de chat) escrito por el usuario y no por Salesforce. El usuario final en realidad está interactuando con este cliente.
- Einstein Bot 1 inicia una solicitud de transferencia de chat. Esta respuesta de iniciación de transferencia es esencialmente un objeto de respuesta simple que contiene la información objetivo de la transferencia. Puede leer más sobre este objeto de respuesta en la guía del cliente de la API de Einstein Bots Platform .
- El destino de la transferencia en el caso anterior es Einstein Bot 2.
- Una vez que el cliente del cliente recibe esta respuesta, simplemente establece una nueva sesión de chat con el objetivo (Einstein Bot 2) de la misma manera que lo hizo con Einstein Bot 1.
Como se puede observar, la API de la plataforma Einstein Bots proporciona solo la información relevante al cliente para realizar la transferencia. La API por sí sola no realiza la transferencia real.
Las transferencias de chat con la API se explican en detalle con un ejemplo de transferencia de bot a caso en la guía del cliente de la API de la plataforma Einstein Bots.
Ahora exploremos un caso de uso específico: compartir datos entre bots durante una transferencia de bot a bot.
Transferencias de bot a bot
Al diseñar un sistema de automatización, como un chatbot que interactúa con los clientes, los administradores de bots a menudo dividen la solución en varios componentes/bots independientes. Por ejemplo, considere una aplicación web de comercio electrónico. El chatbot en un sitio web de este tipo tiene una gran cantidad de tareas que se pueden realizar de forma independiente entre sí. Por ejemplo, una tarea puede vender/realizar pedidos, otra tarea puede rastrear un pedido, otra puede recopilar comentarios de los clientes, etc. Cada una de estas tareas se puede realizar de forma independiente, y no hay necesidad de poner toda esa lógica en un solo bot, lo que terminaría siendo una pesadilla de mantenimiento. Básicamente, el administrador del bot puede definir varios bots más pequeños que realizan cada una de las tareas anteriores de forma independiente.
Con un grupo de bots que trabajan juntos para lograr un objetivo determinado, a menudo existe la necesidad de compartir algunos datos que son críticos para su funcionalidad. Por ejemplo, en el diseño del chatbot de comercio electrónico, el bot de seguimiento de pedidos necesitaría saber el número de pedido y, en lugar de solicitar esa información al cliente, este bot puede obtenerla del bot que realizó el pedido.
Las siguientes secciones describen cómo podemos compartir información de manera efectiva entre bots con la nueva API de Einstein Bots.
Comparta datos de chat entre bots durante una transferencia
Los datos se pueden compartir entre dos bots durante una transferencia de bot a bot a través de variables de bot . Para comprender mejor este concepto, exploraremos un escenario de ejemplo.
Primero, definamos dos bots: "Bot de variables" y "Bot receptor de variables". Las siguientes dos capturas de pantalla muestran las dos implementaciones de bot:
Para el bot de variables, hemos definido tres variables personalizadas:
- nombre
- empresa
Además, el último elemento del bot de variables es un elemento de Rules
que configura la respuesta de transferencia del bot. Puede obtener más información sobre cómo configurar esta respuesta de transferencia en la documentación .
Iniciemos una sesión de chat con el bot de variables y recopilemos las respuestas del usuario para las tres variables anteriores.
Inicie una sesión de chat con el Bot de Variables:
<dx-code-block title language code-block="curl -d '@body.json' -H 'Content-Type: application/json' -H 'Authorization: Bearer '$TOKEN -H 'X-Org-Id: ‘ https://runtime-api-na-east.prod.chatbots.sfdc.sh/v5.0.0/bots//sessions»>
El contenido de body.json
debería verse así:
<dx-code-block title language code-block="{ "forceConfig": { "endpoint": "" }, "externalSessionkey": "Random UUID"
}»>
Una salida de muestra del comando anterior sería algo como lo siguiente:
A continuación, respondamos todas las preguntas que hace el bot para recopilar todas las variables necesarias.
Recopile la variable Name
:
<dx-code-block title language code-block="curl -d '{"message": {"type":"text","text":"Test User","sequenceId":1}}' -H 'Content-Type: application/json' -H 'Authorization: Bearer '$TOKEN -H 'X-Org-Id: ‘ https://runtime-api-na-east.prod.chatbots.sfdc.sh/v5.0.0/sessions//messages»>
Recopile la variable de email
:
<dx-code-block title language code-block="curl -d '{"message": {"type":"text","text":"user@testing.com","sequenceId":1}}' -H 'Content-Type: application/json' -H 'Authorization: Bearer '$TOKEN -H 'X-Org-Id: ‘ https://runtime-api-na-east.prod.chatbots.sfdc.sh/v5.0.0/sessions//messages»>
Recoge la variable company
. De acuerdo con nuestra definición de bot, esta es la última entrada del usuario que solicitará el bot y luego devolverá un mensaje de respuesta de tipo escalate
. El mensaje de escalado contiene el bot-id
al que se debe transferir el chat en curso. Dado que esta es la última entrada de usuario esperada para el Bot de variables, ahora podemos incluir un parámetro en la solicitud que indica al Bot de variables que debe incluir todas las variables del Bot de variables en la respuesta.
El parámetro es el siguiente:
Por lo tanto, el comando de solicitud se parecería a lo siguiente:
<dx-code-block title language code-block="curl -d '{"message": {"type":"text","text":"Acme Inc","sequenceId":1},"responseOptions":{"variables":{"include":true,"onlyChanged":false}}}' -H 'Content-Type: application/json' -H 'Authorization: Bearer '$TOKEN -H 'X-Org-Id: 00D5e000003SihsEAC' https://runtime-api-na-east.prod.chatbots.sfdc.sh/v5.0.0/sessions//messages»>
La respuesta al comando anterior debe ser la siguiente:
La respuesta es de tipo escalate
con una propiedad de destino de tipo Salesforce:Core:Bot:Id
y su valor es el bot-id
del bot VariablesReceiver. La respuesta también incluye una matriz de variables
que contiene nuestras tres variables: name
, email
y company
. También contiene algunas variables adicionales entre las que se encuentra la VariableReceiver
VariableReceiver que creamos en el Bot de Variables para configurar nuestra transferencia de bot a bot.
NOTA: La transferencia aún no se ha realizado. El Bot de Variables acaba de proporcionar al cliente (nosotros) la información necesaria para realizar la transferencia. En este caso, esa información es la target property
.
Ahora haremos la transferencia real simplemente iniciando una nueva sesión de chat con la bot-id
(p. ej., 0Xx5e000000TglaCAC, que es el bot receptor de variables) que se proporcionó en la última respuesta del bot de variables.
El comando de inicio de chat sería el mismo que antes, solo que la bot-id
sería diferente. Además, dado que ahora queremos compartir datos del Bot de variables con el Bot de receptor de variables, también incluiremos la matriz de variables
en la solicitud. Puede leer más sobre la matriz de variables
en la guía del cliente de la API de Einstein Bots Platform.
El comando sería algo como lo siguiente:
<dx-code-block title language code-block="curl -d '@body.json' -H 'Content-Type: application/json' -H 'Authorization: Bearer '$TOKEN -H 'X-Org-Id: ‘ https://runtime-api-na-east.prod.chatbots.sfdc.sh/v5.0.0/bots//sessions»>
Pero esta vez, el contenido de body.json
sería el siguiente:
<dx-code-block title language code-block="{ "forceConfig": { "endpoint": "" }, "externalSessionkey": "Random UUID", "variables": [ { "name": "company", "type": "text", "value": "Acme Inc" }, { "name": "email", "type": "text", "value": "user@testing.com" }, { "name": "name", "type": "text", "value": "Test User" } ]
}»>
Y la respuesta del bot VariablesReceiver debería ser algo como lo siguiente:
A partir de la respuesta anterior, podemos ver que el bot VariablesReceiver ha recibido con éxito las tres variables que le pasamos en la solicitud de inicio de chat.
Conclusión
En esta publicación, discutimos cómo funcionan las transferencias de Einstein Bot a un alto nivel. Luego nos sumergimos profundamente en un caso de uso específico de transferencia de bot a bot, exploramos cómo funciona eso con un ejemplo y mostramos cómo compartir datos entre dos bots completamente independientes. A partir de la versión 242, el intercambio de datos entre bots solo es posible con la nueva API de Einstein Bots Platform. Además, con la API, puede compartir datos entre bots implementados en dos organizaciones de Salesforce completamente independientes.
Referencias:
Sobre el Autor
Makarand Bhonsle es ingeniero principal en Salesforce. Es el desarrollador principal de la API de la plataforma Einstein Bots.
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
Agregar a Slack Suscríbete a RSS
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2022/08/chat-transfers-and-data-sharing-with-the-einstein-bots-platform-api.html