Para el turno de conversación de un agente, este debe responder al usuario final con una respuesta a una pregunta, una consulta de información o una finalización de la sesión. Es posible que el agente también deba comunicarse con el servicio para generar respuestas dinámicas o tomar medidas durante un turno. La entrega se usa para lograr todo esto.
Una entrega puede contener cualquiera de los siguientes elementos:
- Mensajes de respuesta estática.
- Webhook llama para obtener respuestas dinámicas o para realizar acciones.
- Ajustes predeterminados de parámetros para establecer o anular los valores del parámetro
Durante el turno de un agente, es posible (y, a veces, conveniente) llamar a varias entregas, cada una de las cuales puede generar un mensaje de respuesta. Los agentes conversacionales (Dialogflow CX) mantienen estas respuestas en una cola de respuestas. Una vez que finaliza el turno del agente, los agentes conversacionales (Dialogflow CX) envían las respuestas ordenadas al usuario final.
Casos prácticos de entrega
La entrega se usa en todas partes en que se necesita un mensaje de respuesta:
- Entrega de entrada de página
- Rutas
- Controladores de eventos
- Mensajes iniciales para formularios
- Controladores de solicitudes nuevas para formularios
Para cada uno de estos casos de uso, la consola abrirá un panel de edición de entregas.
Mensajes de respuesta estática (opciones de diálogo)
Los mensajes de respuesta estáticos son respuestas del agente que defines en el momento del diseño. Se definen durante la creación de la entrega. En el entorno de ejecución, estas respuestas se agregan a la cola de respuestas.
Existen varios tipos de mensajes de respuesta, que se describen en las subsecciones que siguen. Cuando uses la consola, un panel de entregas tendrá una tarjeta inicial de mensaje de respuesta de texto, pero puedes hacer clic en Agregar opción de diálogo para agregar más tarjetas para otros tipos de mensajes de respuesta.
Texto
Los mensajes de respuesta de texto envían el diálogo al texto al usuario final. Si tus llamadas a la API de detección de intent o las llamadas de integración usan síntesis de voz, este texto se usará para generar contenido de audio. En este caso, en el texto proporcionado, se puede usar el lenguaje de marcación de síntesis de voz (SSML) de forma opcional.
Puedes definir varias tarjetas de respuesta de texto y varias respuestas de texto dentro de cada tarjeta. Si defines varias tarjetas, se concatenan para una sola respuesta en el entorno de ejecución. Si defines varias respuestas dentro de una tarjeta, uno de los mensajes de la tarjeta se elige de forma aleatoria en el entorno de ejecución.
Estos mensajes de texto pueden contener referencias de parámetros y funciones del sistema intercaladas.
Carga útil personalizada
Algunas integraciones son compatibles con una respuesta de carga útil personalizada para administrar respuestas enriquecidas. Estas cargas útiles personalizadas se suministran en un formato JSON definido en la documentación de la integración. Por ejemplo, consulta el formato de carga útil personalizado de Dialogflow CX Messenger.
Puedes incluir referencias de parámetros en el JSON de carga útil personalizado. Deben tratarse como valores de string JSON, por lo que debes colocarlos entre comillas dobles. Por ejemplo:
{ "someField": "$session.params.date" }
También puedes enviar una carga útil personalizada a las integraciones que desarrollas. Los agentes conversacionales (Dialogflow CX) no se encargarán del procesamiento, por lo que tendrás que manejarlo en tu propia lógica empresarial.
Consulta también la sección plantillas de cargas útiles personalizadas a continuación.
Transferencia del agente humano
Esta respuesta le indica al emisor de la API de detección de intent que la conversación se debe transferir a un agente humano. Los agentes conversacionales (Dialogflow CX) solo usan esta señal para identificar las conversaciones que se entregan con fines de medición y no alteran el estado de la sesión de ninguna manera. El sistema o la integración pueden usar esta señal para realizar cualquier acción que sea necesaria para transferir la conversación. Los agentes conversacionales (Dialogflow CX) no imponen ninguna estructura en estos datos, por lo que puedes elegir cualquier estructura que se adapte a tu sistema.
Metadatos de la conversación correcta
Esta respuesta le indica al emisor de la API de detección de intent que la conversación con el agente de agentes conversacionales (Dialogflow CX) se realizó correctamente. Los agentes conversacionales (Dialogflow CX) solo usan esta señal para identificar las conversaciones que se completaron de forma correcta con fines de medición y no alteran el estado de la sesión de ninguna manera. El sistema o la integración pueden usar esta señal para realizar cualquier acción que sea necesaria. Los agentes conversacionales (Dialogflow CX) no imponen ninguna estructura en estos datos, por lo que puedes elegir cualquier estructura que se adapte a tu sistema.
Reproduce el audio grabado previamente
Esta respuesta reproduce un archivo de audio para las integraciones que admiten esta característica.
Los requisitos de formato de archivo de audio pueden diferir según las diferentes integraciones. Por ejemplo, consulta los requisitos de la puerta de enlace telefónica de Dialogflow CX.
En el caso de las integraciones de telefonía de socios, el socio debe poder acceder a la URL del archivo de audio. El socio siempre puede acceder a una URL disponible públicamente, como un archivo público en Cloud Storage. El socio también puede proporcionar acceso restringido a los archivos de audio. Consulta la documentación para socios para obtener más información.
Texto de audio de salida
Esta respuesta es similar a la texto, sin embargo, solo se aplica a la síntesis de voz. Si tu agente puede manejar sesiones de texto y de voz, puedes usar respuestas únicas de texto y texto de audio de salida a fin de crear una experiencia del usuario diferente para texto en comparación con voz Si se proporciona texto de audio de salida para una sesión de voz, se ignoran las respuestas de texto sin formato.
Si tu agente maneja sesiones de texto y voz, y deseas los mismos mensajes de respuesta, solo usa respuestas de texto para sesiones de texto y voz.
El texto de audio de salida se concatena entre las respuestas de texto. Si las respuestas de texto del audio de salida son una mezcla de texto y SSML, el resultado concatenado se trata como SSML. Lo ideal es que el diseñador del agente use texto o SSML de manera coherente.
Respuesta condicional
Este tipo de respuesta se usa para las respuestas condicionales. El formato general es el siguiente:
if [condition] [response] elif [condition] [response] elif [condition] [response] else [response] endif
Donde:
[condition]
es el mismo formato que se usa para las condiciones de enrutamiento.[response]
es una respuesta de texto- Los bloques
elif
yelse
son opcionales
Por ejemplo:
if $session.params.user-age >= 21 Ok, you may enter. else Sorry, you cannot enter. endif
[condition]
y [response]
pueden usar funciones del sistema intercaladas para generar valores dinámicos durante las conversaciones.
Para obtener más información, consulta las referencias de las funciones del sistema y las condiciones de enrutamiento. El [condition]
se resuelve en función del estado de la sesión al comienzo de la entrega. Si [response]
depende del estado de la sesión, se resuelve según el estado actualizado de la sesión al final de la entrega.
En el caso de los agentes multilingües, [condition]
es común para todos los idiomas, mientras que [response]
es específico de un idioma. Cuando cambias [condition]
para un idioma en la consola, esta parte se actualiza en todos los idiomas del agente y, desde que se vuelve una condición nueva, se borra [response]
para todos los idiomas que no sea el idioma que seleccionaste cuando actualizaste [condition]
.
Llamada de transferencia telefónica
En algunas integraciones de telefonía, puedes especificar un número de teléfono de EE.UU. para la transferencia de llamadas. En el entorno de ejecución, cuando el agente virtual de agentes conversacionales (Dialogflow CX) llama a una entrega con transferencia de llamadas, la llamada se transfiere al número especificado y se suspende el control del agente virtual.
Mensajes de respuesta específicos del canal
Cuando definas la entrega, podrás crear mensajes de respuesta específicos del canal para crear respuestas segmentadas para el chat de texto, la voz, los SMS, las integraciones específicas que admiten canales, etcétera. Los mensajes de respuesta que no son específicos de un canal se denominan mensajes de respuesta predeterminados.
Durante el tiempo de ejecución, Agentes conversacionales (Dialogflow CX) seleccionará el mensaje de respuesta predeterminado o un mensaje de respuesta específico del canal cuando una solicitud de detección de intent especifique un canal. Como práctica recomendada, debes definir mensajes de respuesta predeterminados, incluso si usas mensajes de respuesta específicos del canal. Los mensajes de respuesta predeterminados pueden actuar como resguardo cuando el sistema no proporciona un canal válido.
El nombre del canal es un campo personalizado que puedes configurar con cualquier texto. Si usas la API de agentes conversacionales (Dialogflow CX) directamente para las llamadas del entorno de ejecución, puedes usar cualquier nombre de canal que desees. Si usas una integración existente, debes usar los nombres de los canales que reconoce la integración.
Cómo configurar mensajes de respuesta específicos del canal en el momento del diseño
Para proporcionar mensajes de respuesta específicos del canal para la entrega cuando usas la consola, haz lo siguiente:
- Haz clic en Agregar canal después de agregar los mensajes de respuesta predeterminados. La interfaz de usuario te permitirá agregar mensajes de respuesta específicos del canal. Vuelve a hacer clic en Agregar canal para agregar otro canal.
Para proporcionar mensajes de respuesta específicos del canal para la entrega cuando usas la API, haz lo siguiente:
- Establece el campo
Fulfillment.messages[i].channel
en el canal deseado para cada mensaje de respuesta. Si no se configura este campo, la respuesta es un mensaje de respuesta predeterminado.
Cómo usar mensajes de respuesta específicos del canal durante el tiempo de ejecución
Para recibir un mensaje de respuesta específico del canal, debes especificarlo en el mensaje de solicitud de detección de intent.
Consulta el campo queryParams.channel
en el método detectIntent
del tipo Sessions
.
Selecciona un protocolo y una versión para la referencia de sesión:
Protocolo | V3 | V3beta1 |
---|---|---|
REST | Recurso de sesión | Recurso de sesión |
RPC | Interfaz de sesión | Interfaz de sesión |
C++ | SessionsClient | No disponible |
C# | SessionsClient | No disponible |
Go | SessionsClient | No disponible |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | No disponible | No disponible |
Python | SessionsClient | SessionsClient |
Ruby | No disponible | No disponible |
Si no se define ningún canal en una solicitud o no se encuentra ningún canal coincidente en la entrega, los agentes conversacionales (Dialogflow CX) mostrarán el mensaje de respuesta predeterminado.
Plantillas de carga útil personalizada
Si usas cargas útiles personalizadas con frecuencia, debes usar plantillas de cargas útiles personalizadas. A veces, las cargas útiles personalizadas son grandes y complejas, por lo que usar plantillas puede facilitar el proceso de creación de agentes.
Puedes proporcionar estas plantillas en la configuración de tu agente, lo que las hace disponibles para su selección cada vez que creas la entrega para tu agente.
Por ejemplo, la carga útil de JSON para los botones "sí" y "no" se puede definir como plantillas de carga útil personalizadas. Cuando crees una entrega que requiera estos botones, solo debes seleccionar la plantilla cuando crees la entrega.
Cuando seleccionas una plantilla para una carga útil personalizada de entrega, el contenido de la plantilla se inserta en la carga útil. Luego, puedes editar la carga útil según sea necesario.
Si cambias una plantilla, el cambio no se propaga automáticamente a todas las cargas útiles de entrega a las que se hizo referencia.
Para crear una plantilla de carga útil personalizada, consulta la configuración general del agente.
Para seleccionar una plantilla de carga útil personalizada cuando crees la entrega, haz clic en Seleccionar plantilla cuando crees una carga útil personalizada de entrega.
Llamadas de webhook
Cuando se llama a una entrega y esta tiene un webhook, el agente envía una solicitud a tu webhook. El webhook puede realizar cualquier acción necesaria dentro de tu servicio, proporcionar un mensaje de respuesta dinámica, anular los valores de los parámetros y cambiar la página actual.
A continuación, se describe la configuración delwebhook para la entrega:
Término | Definición |
---|---|
Habilita el webhook | Esto habilita el webhook para la entrega. |
Webhook | Selecciona el recurso de webhook. |
Etiqueta | La etiqueta de texto que proporciones aquí se propagará en el campo WebhookRequest.fulfillmentInfo.tag de la solicitud de webhook que se envía a tu servicio de webhook. Esto se puede usar para controlar el comportamiento del webhook de una manera específica de la entrega. |
Cómo mostrar una respuesta parcial | Permite cancelar la reproducción de una respuesta parcial. Consulta la configuración de voz avanzada para obtener más detalles. |
Ajustes predeterminados de los parámetros
Puedes usar una entrega para proporcionar ajustes predeterminados que establezcan o anulen los valores de parámetros actuales. Estos ajustes predeterminados se aplicarán antes de resolver los mensajes de respuesta estática o llamar a un webhook.
También puedes usar las funciones del sistema para ajustar el parámetro a un valor generado de forma dinámica.
A continuación, se muestran algunos ejemplos:
Establece un parámetro
now
en la hora actual:Parámetro Valor ahora $sys.func.NOW() Incrementa un parámetro existente
counter
en 1:Parámetro Valor contador $sys.func.ADD($session.params.counter, 1) Establece un parámetro
new-cost
en el valor del parámetroother-cost
y, al mismo tiempo, mantén el valor completo del objeto compuesto:Parámetro Valor new-cost $sys.func.IDENTITY($session.params.other-cost)
Configuración avanzada de voz
Esta configuración avanzada de voz puede anular de manera opcional la misma configuración de voz de página, configuración de voz de flujo y configuración de voz del agente.
Cola de respuestas
Durante el turno de un agente, es posible (y, a veces, conveniente) llamar a varias entregas, cada una de las cuales puede generar un mensaje de respuesta. Los agentes conversacionales (Dialogflow CX) mantienen estas respuestas en una cola de respuestas.
Respuesta parcial para la API de transmisión
De forma predeterminada, los agentes conversacionales (Dialogflow CX) solo envían las respuestas ordenadas al usuario final una vez que finaliza el turno del agente. También puedes habilitar la opción Mostrar una respuesta parcial en la entrega para que muestre respuestas en cola como una respuesta parcial cuando usas las API de transmisión. Consulta Ciclo de vida de una página para obtener más detalles.
Por ejemplo, si tu webhook probablemente se ejecute por mucho tiempo, puedes agregar una respuesta estática en la entrega y habilitar la respuesta parcial. Esto hace que los agentes conversacionales (Dialogflow CX) borren la cola de respuestas y envíen todos los mensajes como una respuesta parcial antes de llamar al webhook.
Por el momento, no se admite la respuesta parcial para lo siguiente, pero se admitirá más adelante:
- Entradas de audio en el simulador
- Por el momento, es posible que las integraciones de telefonía de socios admitan o no la respuesta parcial. Consulta la documentación del socio para verificarlo.
Para probar esta función en el simulador, debes activar la respuesta parcial.
En el siguiente ejemplo, considera que tu webhook tarda 5 segundos en completarse y que no habilitas la respuesta parcial. El turno de conversación del agente de agentes conversacionales (Dialogflow CX) no se completará hasta que se complete el webhook. Durante este turno de 5 segundos, las respuestas se ponen en cola mientras esperan el webhook y no se muestran al usuario final hasta que se completa el turno. Esto genera una mala experiencia del usuario.
Si habilitas la respuesta parcial en la primera entrega, los agentes conversacionales (Dialogflow CX) muestran el primer mensaje de entrega con rapidez y llaman al webhook. Una vez que se completa el webhook, los agentes conversacionales (Dialogflow CX) muestran la respuesta final. La experiencia del usuario final se mejora en esta situación, ya que se les pide que esperen una breve espera. Además, la llamada de webhook se ejecuta de forma simultánea con una respuesta que se envía al usuario final.
Lenguaje de marcación de síntesis de voz (SSML)
Puedes usar el lenguaje de marcado de síntesis de voz (SSML) en campos de entrega de texto o audio de texto. Esto te permite personalizar tu respuesta de audio mediante la entrega de detalles sobre las pausas y el formato de audio para las siglas, las fechas, las horas, las abreviaturas o el texto que se debe censurar.
Para obtener detalles sobre la sintaxis, consulta la documentación de SSML de texto a voz.