La carga útil personalizada para Dialogflow CX te permite mejorar la experiencia de tu agente virtual más allá de las interacciones y el chat basados en texto simple. Si usas cargas útiles personalizadas en Dialogflow CX, puedes configurar tu agente virtual para que renderice respuestas y citas personalizadas.
Tipos de mensajes de respuesta personalizados
Respuestas personalizadas te permite renderizar los siguientes tipos de mensajes:
Texto
Botones intercalados
Botones que se pegan
Imágenes
Videos
Documentos
Vistas complejas (combinación de uno o más tipos de mensajes)
Las acciones personalizadas permiten que los agentes virtuales realicen las siguientes acciones:
Derivaciones a agentes humanos
Transferencias planificadas a agentes humanos
Finalizar sesión de asistencia
Carga útil de Contact Center AI Platform (plataforma de CCAI)
Se usará en Dialogflow CX como carga útil personalizada. En el siguiente ejemplo, se muestra el formato de las respuestas en el SDK web con Dialogflow CX.
{ "ujet": { "type": "text|inline_button|sticky_button|image|video|document|complex|action", "action": "escalation|end", "title": "message displayed on the top of the message", "escalation_reason": "by_consumer|by_virtual_agent", "session_variable": { "capture_target": "payload|end_user_response", "capture_key": "key", "payload": { } }, "messages": [ "Hello", "How can I help you?" ], "buttons": [ { "title": "Button 1", "action": "quick_reply" }, { "title": "Button 2", "action": "quick_reply" } ], "images": [ { "url": "https://image.url", "text": "an alternate text for an image for when failed to load an image" }, { "url": "https://image.url", "text": "an alternate text for an image" } ], "videos": [ { "url": "https://video.url", "text": "an alternate text for a video for when failed to load a video" }, { "url": "https://video.url", "text": "an alternate text for a video" } ], "documents": [ { "url": "https://document.url", "text": "an alternate text for a document for when failed to load a document" }, { "url": "https://document.url", "text": "an alternate text for a document" } ], "components": [ { "type": "text", "messages": [ "We need the information for helping you.", "Could you please choose the following options?" ] }, { "type": "inline_button", "buttons": [ { "title": "Button 1", "action": "quick_reply" }, { "title": "Button 2", "action": "quick_reply" } ] }, { "type": "image", "images": [ { "url": "https://image.url", "text": "an alternate text for an image for when failed to load an image" }, { "url": "https://image.url", "text": "an alternate text for an image" } ] } ] } }
Formato del mensaje de chat para la carga útil personalizada
Se usa con el SDK de CCAI Platform para mostrar una IU adecuada. Es igual al formato de carga útil personalizada de Dialogflow CX, pero no tiene el campo "ujet" en la raíz.
Consulta los siguientes ejemplos para obtener más detalles.
Ejemplos
En las siguientes secciones, se incluyen ejemplos de cargas útiles que se pueden usar en Dialogflow CX.
Texto
{
"ujet": {
"type": "text",
"messages": [
"Hello",
"How can I help you?"
]
}
}
Derivación a la misma fila
A través del agente virtual:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_virtual_agent"
}
}
Por usuario final:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_consumer"
}
}
El valor de escalation_reason se registra en los paneles.
Derivación a la fila de destino
A través del agente virtual:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_virtual_agent",
"menu_id": 100,
"language": "ko"
}
}
Por usuario final:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_consumer",
"menu_id": 100,
"language": "ko"
}
}
El valor de escalation_reason se registra en los paneles.
Finalizar conversación
{
"ujet": {
"type": "action",
"action": "end"
}
}
Botón intercalado
{
"ujet": {
"type": "inline_button",
"title": "Select a menu",
"buttons": [
{
"title": "Lorem Ipsum",
"action": "quick_reply"
},
{
"title": "Lorem Ipsum Dolor Sit Amet",
"action": "escalation"
}
]
}
}
Ejemplo

Botón fijo
{
"ujet": {
"type": "sticky_button",
"title": "Select a menu",
"buttons": [
{
"title": "Lorem Ipsum",
"action": "quick_reply"
},
{
"title": "Lorem Ipsum Dolor Sit Amet",
"action": "escalation"
}
]
}
}
Ejemplo

Vista de imagen
{
"ujet": {
"type": "image",
"title": "Please see the following images",
"images": [
{
"url": "https://image1.url",
"text": "an alternate text for an image for when failed to load an image"
},
{
"url": "https://image2.url",
"text": "an alternate text for an image"
}
]
}
}
Vista de video
{
"ujet": {
"type": "video",
"title": "Please see the following videos",
"videos": [
{
"url": "https://video1.url",
"text": "an alternate text for a video for when failed to load a video"
},
{
"url": "https://video2.url",
"text": "an alternate text for a video"
}
]
}
}
Vista del documento
{
"ujet": {
"type": "document",
"title": "Please see the following document",
"documents": [
{
"url": "https://document1.url",
"text": "an alternate text for a document for when failed to load a document"
},
{
"url": "https://document2.url",
"text": "an alternate text for a document"
}
]
}
}
Vista compleja
{
"ujet": {
"type": "complex",
"type": "Welcome to CCAI Platform world!",
"components": [
{
"type": "text",
"messages": [
"We need the information for helping you.",
"Could you please choose the following options?"
]
},
{
"type": "inline_button",
"buttons": [
{
"title": "Button 1",
"action": "quick_reply"
},
{
"title": "Button 2",
"action": "quick_reply"
}
]
},
{
"type": "image",
"images": [
{
"url": "https://image1.url",
"text": "an alternate text for an image for when failed to load an image"
},
{
"url": "https://image2.url",
"text": "an alternate text for an image"
}
]
}
]
}
}
Cómo configurar una carga útil personalizada en Dialogflow
Para obtener más información sobre cómo configurar tu carga útil personalizada con Dialogflow, consulta los recursos de respuestas de carga útil personalizada (Dialogflow ES) o carga útil personalizada (Dialogflow CX).
Para obtener más información, consulta Variables de sesión personalizadas para el procesamiento de cargas útiles personalizadas.
Transferencia del agente virtual a un número de teléfono o un extremo SIP
Puedes usar cargas útiles personalizadas de Dialogflow CX para transferir llamadas de un agente virtual de voz al número de teléfono o al extremo SIP que especifiques. Si la conexión se realiza correctamente, se quitará el agente virtual de la llamada y esta continuará. Si la conexión falla, se reproduce un mensaje de falla de transferencia y la llamada continúa con el agente virtual.
Las transferencias de agentes virtuales funcionan para llamadas internas y externas. Las transferencias de agentes virtuales se registran como Planned Transfers en los informes.
Cómo transferir una llamada a un número de teléfono
Para transferir una llamada de un agente virtual a un número de teléfono, usa una carga útil de Dialogflow CX similar al siguiente muestra de código:
{
"ujet": {
"type": "action",
"action": "deflection",
"deflection_type" : "phone",
"phone_number": "+16509424879"
}
}
Transfiere una llamada a un extremo SIP
Para transferir una llamada de un agente virtual a un extremo SIP de la manera estándar, usa una carga útil de Dialogflow CX similar a la siguiente muestra de código:
{
"ujet": {
"type": "action",
"action": "deflection",
"deflection_type" : "sip",
"sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
}
}
Transfiere una llamada a un extremo SIP con el método SIP REFER
Para transferir una llamada de un agente virtual a un extremo SIP con el método SIP REFER, usa una carga útil de Dialogflow CX similar a la siguiente muestra de código. Con el método REFER de SIP, puedes pasar información útil con las propiedades del encabezado.
{
"ujet": {
"type": "action",
"action": "deflection",
"deflection_type" : "sip"
"sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
"sip_refer": true
"sip_parameters": {
"x-header": "value",
"x-header": "value"
}
}
}
Variables de sesión personalizadas para el control de cargas útiles personalizadas
Usa variables de sesión personalizadas para capturar valores de la respuesta de la intención y la respuesta del usuario final. Luego, recopila todos los valores y súbelos al CRM como un comentario. Para obtener más información, consulta Carga útil de Dialogflow para variables de sesión personalizadas.
Captura de la respuesta del usuario final
Flow
La plataforma de CCAI solicita la respuesta a Dialogflow CX.
Dialogflow CX puede realizar una devolución de llamada al servidor del cliente a través de Fulfillment.
Se supone que el servidor del cliente debe completar el campo session_variable en la respuesta.
Dialogflow CX devuelve la respuesta con la carga útil personalizada que incluye el campo
session_variablecon capture_target =end_user_response.Un usuario final envía un mensaje.
La plataforma de CCAI conserva el mensaje del usuario final que se envió en el paso anterior.
CCAI Platform publicará todas las variables de sesión que se hayan capturado en la sesión de chat en el CRM como un comentario cuando un agente virtual abandone un chat.
Formato de carga útil personalizado
{
"ujet": {
"session_variable": {
"capture_target": "end_user_response",
"capture_key": "key"
}
}
}
El siguiente mensaje del usuario final inmediatamente después de que un agente virtual envíe una carga útil personalizada se capturará como una variable de sesión con la clave "key".
Captura de la respuesta del intent
Flow
La plataforma de CCAI solicita la respuesta a Dialogflow CX.
Dialogflow CX puede volver a llamar al servidor del cliente a través de Fulfillment.
Se supone que el servidor del cliente debe completar el campo
session_variableen la respuesta.
Dialogflow CX devuelve la respuesta con la carga útil personalizada, incluido el campo
session_variableconcapture_target = "payload".El servidor de CCAI Platform conserva el objeto
payloaden el paso 2.
CCAI Platform publicará todas las variables de sesión que se hayan capturado en la sesión de chat en el CRM como un comentario cuando un agente virtual abandone un chat.
Formato de carga útil personalizado
{
"ujet": {
"session_variable": {
"capture_target": "payload",
"capture_type": [
"comment",
"agent"
],
"payload": {
"status": "STATUS",
"order_id": "ORDER_ID",
"personal_id": "PERSONAL_ID"
},
"invisible_to_agent": ["INVISIBLE_TO_AGENT"],
"display_order_in_adapter": ["DISPLAY_ORDER_IN_ADAPTER"]
}
}
}
Reemplaza lo siguiente:
STATUS: Es el estado del pedido.ORDER_ID: Es el ID del pedido.PERSONAL_ID: Es un identificador del usuario final.INVISIBLE_TO_AGENT: Es un array de propiedades que no quieres que se vean en el adaptador del agente. Por ejemplo, un valor de"personal_id"aquí evitaría que la propiedadpersonal_idse muestre en el adaptador del agente. Para obtener más información, consulta Cómo mostrar variables de sesión del agente virtual.DISPLAY_ORDER_IN_ADAPTER: Es un array de propiedades para especificar el orden en que deben aparecer las variables de sesión en el adaptador del agente y en los registros del CRM. Para obtener más información, consulta Cómo mostrar variables de sesión del agente virtual.
Carga de variables de sesión personalizadas en el CRM
Para cada variable de sesión, se supone que el servidor recopila todas las variables de sesión de forma interna y, luego, las sube al CRM cuando se cierra un agente virtual.
Ejemplo de mensaje de CRM
###########################
Chat ID: 1
Menu ID: 1
Chatbot Platform: Platform Name
Chatbot Workflow: Workflow Name
Virtual Agent: Virtual Agent Name
###########################
Intent: Intent Captured from End User Response
Captured At: 2020-06-25 14:54:19
Captured Variables
request: Cancel Order
###########################
Intent: Intent Captured from Payload
Captured At: 2020-06-25 14:58:23
Captured Variables
status: Cancelled
order_id: #12345
###########################
Situación de ejemplo
A continuación, se muestra una conversación de ejemplo que ilustra los diferentes pasos y los mensajes intercambiados entre el agente virtual y el usuario final.
Paso 1
Mensaje de chat del agente virtual
How can I help you?
(Button) Show my orders
(Button) Cancel an order
Respuesta de intención (carga útil personalizada)
{
"ujet": {
"type": "inline_button",
"title": "How can I help you?",
"buttons": [
{
"title": "Show my orders",
"action": "quick_reply"
},
{
"title": "Cancel an order",
"action": "quick_reply"
}
]
}
}
Variable de sesión capturada
Ninguno
Paso 2
Mensaje de chat del usuario final
Click "Cancel an order" button.
Variable de sesión capturada
Ninguno
Paso 3
Mensaje de chat del agente virtual
Can you provide the order id please
Respuesta de intención (carga útil personalizada)
{
"ujet": {
"type": "text"
"messages": [
"Can you provide the order id please"
],
"session_variable": {
"capture_target": "end_user_response",
"capture_key": "order_id";
}
}
}
Variable de sesión capturada
Ninguno
Paso 4
Mensaje de chat del usuario final
Order id is #12345
Variable de sesión capturada
order_id: "Order ID is #12345"
Paso 5
Mensaje de chat del agente virtual
Order #12345 is cancelled.
Do you need anything else?
Respuesta de intención (carga útil personalizada)
{
"ujet": {
"type": "text",
"messages": [
"Order #12345 is canceled.",
"Do you need anything else?"
],
"session_variable": {
"capture_target": "payload",
"capture_type": [
"agent",
"comment",
"event"
],
"payload": {
"order_id": "#12345",
"order_status": "cancelled"
}
}
}
}
Variable de sesión capturada
order_id: "#12345",
order_status: canceled
Paso 6
Mensaje de chat del usuario final
I would like to speak with a human agent.
Paso 7
Mensaje de chat del agente virtual
Virtual Agent is left from the conversation.
{
"ujet": {
"type": "escalation",
"escalation_reason": "by_consumer"
}
}
Carga de variables de sesión personalizadas en el CRM
En el caso anterior, se publica el siguiente comentario en el ticket del CRM:
---------------------------------
Chat ID: 1
Menu ID: 1
Chatbot Platform: Platform Name
Chatbot Workflow: Workflow Name
Virtual Agent: Virtual Agent Name
--------------------------------
Intent: Intent Captured from End User Response
Captured At: 2020-06-25 14:54:19
Captured Variables
order_id: Order id is #12345.
--------------------------------
Intent: Intent Captured from Payload
Captured At: 2020-06-25 14:58:23
Captured Variables
order_id: #12345
order_status: canceled
--------------------------------
Configura las tarjetas de contenido
Las tarjetas de contenido muestran contenido conciso y visualmente atractivo en un formato similar a una tarjeta, lo que crea interacciones más simples para que el usuario final consuma la información presentada. Puedes crear tarjetas de contenido con Dialogflow CX y personalizarlas con títulos, subtítulos y texto.
En el siguiente ejemplo, se usan tarjetas de contenido para mostrar opciones de restaurantes al usuario final:

Propiedades de la tarjeta de contenido
| Nombre de la propiedad | Descripción | Obligatorio | Tipo |
|---|---|---|---|
title |
Es el título de la tarjeta. | Sí | String |
subtitle |
Es el subtítulo de la tarjeta. | No | String |
body |
Es la descripción de la tarjeta de contenido. | Sí | String |
link |
Un vínculo a una página web o un vínculo directo El SDK usará las capacidades del SO para abrirlo. | No | String |
event_params |
Es un diccionario que contiene información adicional sobre el evento de clic. El SDK usará este valor. | No | Diccionario |
Carga útil de Dialogflow CX: Agrega validación y acepta el tipo de tarjeta de contenido
Un tipo de carga útil específico de Dialogflow CX controla las tarjetas de contenido cuando se reciben mensajes de usuarios finales a través del servidor del chatbot. A continuación, se muestra un ejemplo de una carga útil de Dialogflow CX:
{
"ujet": {
"type": "content_card",
"cards": [
{
"title": "Title",
"subtitle": "Subtitle",
"body": "Body",
"link": "app://page",
"event_params": {} # for deep-link click event
}
]
}
}
Información sobre las tarjetas de contenido en el historial de chat del CRM
La información del título de la tarjeta se registra para hacer un seguimiento de las tarjetas en las que hizo clic el usuario final. Esta información se registra en el historial de chat del CRM.
En el siguiente ejemplo, el historial de mensajes de chat en el CRM muestra la interacción de la tarjeta de contenido.
[Chat message history]
ID: 305 | 2023-07-06 PDT
--------------------------------------------------
[01:13:32 VA] Welcome message
[01:14:35 Mobile U.] Content Cards:
- Title 1
- Title 2
Registra eventos de clic en el título de la tarjeta de contenido
Para registrar cuando un usuario final hace clic en el título de una tarjeta de contenido, usa el siguiente formato para capturar el evento:
{end_user_name} clicked on the '{title}' card.
Note Title: Content Card click
Note Comment: 'John Doe' clicked on the 'See our new website' card.
Crea un evento de clic en una tarjeta de contenido con la API de End User Event
Cuando un usuario final hace clic en el título de una tarjeta de contenido, puedes registrar este evento enviando una solicitud POST a la URL especificada junto con el título de la tarjeta en la que se hizo clic.
Extremo de API: POST /api/v2/chat/:id/end_user_event
Uso: Crea un evento de clic en la tarjeta de contenido.
URL: /api/v2/chats/:id/end_user_event
Método: POST
Parámetros:
| Campo | Tipo | Descripción |
|---|---|---|
event |
objeto | |
event.name |
cadena | Para los eventos de clic en tarjetas de contenido, usa content_card_clicked. |
event.payload |
objeto | |
event.payload.title |
cadena | Ingresa el título de la tarjeta en la que se hizo clic. |
(Opcional) end_user_name |
cadena | Ingresa el nombre del usuario final. Si se deja en blanco, el nombre se recuperará del CRM. |
Ejemplo de solicitud:
{
"event": {
"name": "content_card_clicked",
"payload": {
"title": "New our website"
}
},
"end_user_name": "consumer 1" ## optional
}
Respuesta: Status: 202 Accepted