En el turno de conversación de un agente, este debe responder al usuario final con la respuesta a una pregunta, una consulta de información o la finalización de la sesión. Es posible que tu agente también tenga que ponerse en contacto con tu servicio para generar respuestas dinámicas o llevar a cabo acciones en un turno. Fulfillment se usa para conseguir todo esto.
Una respuesta puede contener cualquiera de los siguientes elementos:
- Mensajes de respuesta estáticos.
- Llamadas de webhook para obtener respuestas dinámicas o realizar acciones.
- Preajustes de parámetros para definir o anular valores de parámetros.
Durante el turno de un agente, es posible (y a veces recomendable) llamar a varias implementaciones, cada una de las cuales puede generar un mensaje de respuesta. Conversational Agents (Dialogflow CX) mantiene estas respuestas en una cola de respuestas. Una vez que termina el turno del agente, los agentes conversacionales (Dialogflow CX) envían las respuestas ordenadas al usuario final.
Casos prácticos de tramitación
El cumplimiento se usa en todos los casos en los que se necesita un mensaje de respuesta:
- Cumplimiento de la entrada de la página
- Rutas
- Controladores de eventos
- Peticiones iniciales para formularios
- Controladores de repetición de peticiones para formularios
En cada uno de estos casos prácticos, la consola abrirá un panel de edición de la respuesta.
Respuestas del agente (opciones de diálogo)
Los mensajes de respuesta del agente son respuestas que defines en tiempo de diseño. Se definen al crear el cumplimiento. En el tiempo de ejecución, estas respuestas se añaden a la cola de respuestas.
Hay varios tipos de mensajes de respuesta, que se describen en las siguientes subsecciones. Cuando se usa la consola, un panel de respuesta tiene una tarjeta inicial Diálogo del agente, pero puedes hacer clic en + Añadir respuesta de diálogo para añadir más tarjetas de otros tipos de mensajes de respuesta.
Respuesta de texto estático
Los mensajes de respuesta de texto estático envían un diálogo de texto al usuario final. Si tus llamadas a la API detectIntent o a la integración usan la síntesis de voz, este texto se usará para generar contenido de audio. En este caso, el texto proporcionado puede usar de forma opcional el lenguaje de marcas de síntesis de voz (SSML).
Puedes definir varias tarjetas de respuesta de texto y varias respuestas de texto en cada tarjeta. Si defines varias tarjetas, se concatenarán para obtener una sola respuesta durante el tiempo de ejecución. Si defines varias respuestas en una tarjeta, se elegirá aleatoriamente uno de los mensajes de la tarjeta en el tiempo de ejecución.
Estos mensajes de texto pueden contener referencias de parámetros y funciones del sistema insertadas.
Carga útil personalizada
Algunas integraciones admiten una respuesta de carga útil personalizada para gestionar respuestas enriquecidas. Estas cargas útiles personalizadas deben proporcionarse en el formato JSON definido en la documentación de la integración. Por ejemplo, consulta el formato de carga útil personalizada de Messenger de Dialogflow CX.
Puede incluir referencias de parámetros en el JSON de la carga útil personalizada. Deben tratarse como valores de cadena JSON, por lo que debes incluirlos entre comillas dobles. Por ejemplo:
{ "someField": "$session.params.date" }
También puedes enviar una carga útil personalizada a las integraciones que desarrolles. No se procesará con agentes conversacionales (Dialogflow CX), por lo que tendrás que gestionarlo en tu propia lógica empresarial.
Consulta también la siguiente sección sobre plantillas de carga útil personalizadas.
Traspaso a agente humano
Esta respuesta indica al llamante de la API Detect Intent que la conversación debe transferirse a un agente humano. Conversational Agents (Dialogflow CX) solo usa esta señal para identificar las conversaciones que se transfieren con fines de medición y no altera el estado de la sesión de ninguna manera. Tu sistema o integración puede usar esta señal para tomar las medidas necesarias para transferir la conversación. Agentes conversacionales (Dialogflow CX) no impone ninguna estructura a estos datos, por lo que puede elegir la que mejor se adapte a su sistema.
Metadatos de éxito de la conversación
Esta respuesta indica al llamador de la API Detect Intent que la conversación con el agente Conversational Agents (Dialogflow CX) se ha completado correctamente. Conversational Agents (Dialogflow CX) solo usa esta señal para identificar las conversaciones que se han completado correctamente con fines de medición y no altera el estado de la sesión de ninguna manera. Tu sistema o integración puede usar esta señal para llevar a cabo las acciones necesarias. Conversational Agents (Dialogflow CX) no impone ninguna estructura a estos datos, por lo que puedes elegir la que mejor se adapte a tu sistema.
Reproducir audio pregrabado
Esta respuesta reproduce un archivo de audio para las integraciones que admiten esta función.
Los requisitos de formato de los archivos de audio pueden variar en función de la integración. Por ejemplo, consulta los requisitos de la pasarela de telefonía de Dialogflow CX.
En el caso de las integraciones de telefonía de partners, el partner debe poder acceder a la URL del archivo de audio. El partner siempre puede acceder a una URL disponible públicamente, como un archivo público de Cloud Storage. El partner también puede proporcionar acceso restringido a los archivos de audio. Para obtener más información, consulta la documentación para partners.
Texto de salida de audio
Esta respuesta es similar a la respuesta text, pero solo se aplica a la síntesis de voz. Si tu agente puede gestionar sesiones de texto y de voz, puedes usar respuestas de texto y texto de audio de salida únicas para crear una experiencia de usuario diferente para el texto y la voz. Si se proporciona texto de audio de salida para una sesión de voz, las respuestas de texto sin formato se ignoran.
Si tu agente gestiona sesiones de texto y de voz, y quieres que los mensajes de respuesta sean los mismos, usa respuestas de texto tanto para las sesiones de texto como para las de voz.
El texto de salida de audio se concatena de forma similar a las respuestas de texto. Si las respuestas de texto de 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 forma coherente.
Respuesta condicional
Este tipo de respuesta se usa para las respuestas condicionales. El formato general es:
if [condition] [response] elif [condition] [response] elif [condition] [response] else [response] endif
donde:
[condition]
tiene el mismo formato que las condiciones de ruta.[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
Tanto [condition]
como [response]
pueden usar funciones del sistema insertadas 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 ruta. El
[condition]
se resuelve en función del estado de la sesión al principio del
cumplimiento. Si el [response]
depende del estado de la sesión, se resuelve en función del estado de la sesión actualizado al final del cumplimiento.
En el caso de los agentes multilingües, [condition]
es común a todos los idiomas, mientras que [response]
es específico de cada idioma. Cuando cambias [condition]
de un idioma en la consola, esta parte se actualiza en todos los idiomas del agente y, como se convierte en una condición nueva, [response]
se borra en todos los idiomas, excepto en el que hayas seleccionado al actualizar [condition]
.
Llamada de transferencia de telefonía
En algunas integraciones de telefonía, puedes especificar un número de teléfono de EE. UU. para la transferencia de llamadas. En el tiempo de ejecución, cuando el agente virtual de Conversational Agents (Dialogflow CX) llama a un fulfillment con transferencia de llamada, la llamada se transfiere al número especificado y se suspende la gestión del agente virtual.
Respuesta de la herramienta de almacén de datos
Este tipo de respuesta configura las respuestas del agente devueltas por las herramientas de almacén de datos vinculadas. Si has configurado una herramienta de almacenamiento de datos en este cumplimiento, se rellenará automáticamente una tarjeta de respuesta de la herramienta de almacenamiento de datos.
- Enlaces de origen: te permite definir el número máximo de citas que se devolverán al usuario después de la respuesta. Una cita es un enlace a la fuente de información del almacén de datos, que se muestra como botones. El valor predeterminado es 1.
- Citas insertadas: en lugar de enlaces que se muestran después de la respuesta, este campo te permite limitar el número de citas insertadas que se devuelven por frase.
- Respuesta alternativa generativa: si marcas esta casilla, el agente intentará generar una respuesta con IA si el almacén de datos devuelve un resultado vacío. Si falla, se pasará a las respuestas estáticas.
- Respuestas estáticas: puedes introducir respuestas de texto estáticas en el último campo. Se envían al usuario palabra por palabra.
Mensajes de respuesta específicos de un canal
Al definir la respuesta, puedes crear mensajes de respuesta específicos de cada canal, de modo que puedes crear respuestas específicas para el chat de texto, la voz, los SMS, las integraciones específicas que admiten canales, etc. Los mensajes de respuesta que no son específicos de un canal se denominan mensajes de respuesta predeterminados.
En el tiempo de ejecución, Conversational Agents (Dialogflow CX) seleccionará el mensaje de respuesta predeterminado o un mensaje de respuesta específico del canal cuando una solicitud de detección de intención especifique un canal. Como práctica recomendada, debes definir mensajes de respuesta predeterminados, aunque utilices mensajes de respuesta específicos de un canal. Los mensajes de respuesta predeterminados pueden actuar como alternativa cuando tu sistema no proporcione un canal válido.
El nombre de un canal es un campo personalizado que puedes definir con cualquier texto. Si usas la API Conversational Agents (Dialogflow CX) directamente para las llamadas de tiempo de ejecución, puedes usar los nombres de canal que quieras. Si usas una integración que ya tengas, debes usar los nombres de canal que reconozca la integración.
Configurar mensajes de respuesta específicos de un canal en tiempo de diseño
Para proporcionar mensajes de respuesta específicos de un canal para las peticiones cuando se usa la consola, sigue estos pasos:
- Haz clic en Añadir canal después de añadir mensajes de respuesta predeterminados. La interfaz de usuario te permitirá añadir mensajes de respuesta específicos de cada canal. Vuelve a hacer clic en Añadir canal para añadir otro canal.
Para proporcionar mensajes de respuesta específicos de un canal para el cumplimiento al usar la API, sigue estos pasos:
- Define el campo
Fulfillment.messages[i].channel
en el canal que quieras para cada mensaje de respuesta. Si no se define este campo, la respuesta es un mensaje de respuesta predeterminado.
Utilizar mensajes de respuesta específicos de un canal en el tiempo de ejecución
Para recibir un mensaje de respuesta específico de un canal, este debe especificarse en el mensaje de solicitud de detección de intenciones.
Consulta el campo queryParams.channel
en el método detectIntent
del tipo Sessions
.
Seleccione un protocolo y una versión para la referencia de la 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 el fulfillment, los agentes conversacionales (Dialogflow CX) devolverán el mensaje de respuesta predeterminado.
Plantillas de carga útil personalizadas
Si usas cargas útiles personalizadas a menudo, deberías usar plantillas de cargas útiles personalizadas. Las cargas útiles personalizadas a veces son grandes y complejas, por lo que usar plantillas puede facilitar el proceso de creación de agentes.
Puedes proporcionar estas plantillas en los ajustes de tu agente, lo que hará que estén disponibles para seleccionarlas cada vez que crees una respuesta para tu agente.
Por ejemplo, la carga útil JSON de los botones "Sí" y "No" se puede definir como plantillas de carga útil personalizadas. Cuando crees una respuesta que requiera estos botones, solo tienes que seleccionar la plantilla al crear la respuesta.
Cuando selecciona una plantilla para una carga útil personalizada de cumplimiento, el contenido de la plantilla se inserta en la carga útil. Después, puedes editar la carga útil según lo necesites.
Si cambia una plantilla, el cambio no se propagará automáticamente a todas las cargas útiles de respuesta donde se haya hecho referencia a ella.
Para crear una plantilla de carga útil personalizada, consulta la sección Configuración general del agente.
Para seleccionar una plantilla de carga útil personalizada al crear un cumplimiento, haz clic en Seleccionar plantilla al crear una carga útil personalizada de cumplimiento.
Llamadas de webhook
Cuando se llama a un cumplimiento y este tiene un webhook, el agente envía una solicitud a tu webhook. Tu webhook puede llevar a cabo las acciones necesarias en tu servicio, proporcionar un mensaje de respuesta dinámico, anular los valores de los parámetros y cambiar la página actual.
A continuación, se describen los ajustes de webhook para la respuesta:
Término | Definición |
---|---|
Habilitar webhook | De esta forma, se habilita el webhook para el cumplimiento. |
Webhook | Selecciona el recurso de webhook. |
Etiqueta | La etiqueta de texto que proporciones aquí se rellenará en el campo WebhookRequest.fulfillmentInfo.tag de la solicitud de webhook enviada a tu servicio de webhook. Se puede usar para controlar el comportamiento de la webhook de forma específica para la respuesta. |
Devolver una respuesta parcial | Permite cancelar la reproducción de una respuesta parcial. Para obtener más información, consulta los ajustes avanzados de voz. |
Preajustes de parámetros
Puedes usar un cumplimiento para proporcionar preajustes que definan o anulen los valores de los parámetros actuales. Estos ajustes predefinidos se aplicarán antes de resolver los mensajes de respuesta estáticos o de llamar a un webhook.
También puedes usar funciones del sistema para predefinir el parámetro con un valor generado dinámicamente.
Por ejemplo:
Definir el parámetro
now
en la hora actual:Parámetro Valor ahora $sys.func.NOW() Incrementar en 1 el valor de un parámetro
counter
:Parámetro Valor contador $sys.func.ADD($session.params.counter, 1) Asignar el parámetro
new-cost
al valor del parámetroother-cost
sin dejar de mantener el valor completo del objeto compuesto:Parámetro Valor new-cost $sys.func.IDENTITY($session.params.other-cost)
Herramientas de almacén de datos
Consulta la documentación sobre las herramientas de almacenamiento de datos para obtener más información sobre esta función.
Ajustes de voz avanzados
Estos ajustes avanzados de voz pueden anular opcionalmente los mismos ajustes de voz de la página, ajustes de voz del flujo y ajustes de voz del agente.
Cola de respuestas
Durante el turno de un agente, es posible (y a veces recomendable) llamar a varias implementaciones, cada una de las cuales puede generar un mensaje de respuesta. Conversational Agents (Dialogflow CX) mantiene estas respuestas en una cola de respuestas.
Respuesta parcial de la API de streaming
De forma predeterminada, los agentes conversacionales (Dialogflow CX) solo envían las respuestas ordenadas al usuario final una vez que termina el turno del agente. También puedes habilitar la opción Devolver respuesta parcial en el procesamiento para devolver las respuestas que estén en cola como respuesta parcial al usar las APIs de streaming. Consulta más información sobre el ciclo de vida de una página.
Por ejemplo, si es probable que tu webhook se ejecute durante mucho tiempo, puedes añadir una respuesta estática en el fulfillment y habilitar la respuesta parcial. De esta forma, Conversational Agents (Dialogflow CX) vacía la cola de respuestas y envía todos los mensajes como una respuesta parcial antes de llamar al webhook.
Actualmente, no se admiten respuestas parciales para lo siguiente, pero se admitirán más adelante:
- Entradas de audio en el simulador.
- En este momento, es posible que las integraciones de telefonía de partners admitan o no respuestas parciales. Consulta la documentación del partner para verificarlo.
Para probar esta función en el simulador, debes activar la respuesta parcial.
En el siguiente ejemplo, supongamos que tu webhook tarda 5 segundos en completarse y que no habilitas la respuesta parcial. El turno de conversación del agente de Conversational Agents (Dialogflow CX) no termina hasta que se completa el webhook. Durante este turno de 5 segundos, las respuestas se ponen en cola mientras se espera el webhook y no se devuelven al usuario final hasta que se completa el turno. Esto provoca una mala experiencia de usuario.
Si habilitas la respuesta parcial en el primer cumplimiento, Conversational Agents (Dialogflow CX) devuelve el primer mensaje de cumplimiento rápidamente y llama al webhook. Una vez completado el webhook, Conversational Agents (Dialogflow CX) devuelve la respuesta final. En este caso, la experiencia del usuario final mejora, ya que se le indica que debe esperar poco tiempo. Además, la llamada al webhook se ejecuta simultáneamente con el envío de una respuesta al usuario final.
Lenguaje de marcas de síntesis de voz (SSML)
Puedes usar el lenguaje de marcas de síntesis de voz (SSML) en los campos de texto o de texto de audio de salida de la respuesta. De esta forma, puedes personalizar la respuesta de audio proporcionando detalles sobre las pausas y el formato de audio de acrónimos, fechas, horas, abreviaturas o texto que deba censurarse.
Para obtener información sobre la sintaxis, consulta la documentación de SSML de texto a voz.