Entregas

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. Dialogflow mantiene estas respuestas en una cola de respuestas. Una vez que el turno del agente termina, Dialogflow envía las respuestas ordenadas al usuario final.

La entrega de ES se limita a conectar un servicio de webhook. Se aumentó el alcance de la entrega para CX, por lo que ahora abarca todos los tipos de mensajes y respuestas.

Casos prácticos de entrega

La entrega se usa en todas partes en que se necesita un mensaje de respuesta:

Para cada uno de estos casos de uso, la consola abrirá un panel de edición de entregas.

Captura de pantalla de la entrega

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 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. Dialogflow no se encargará del procesamiento, por lo que tendrás que manejarlo con tu propia lógica empresarial.

También consulta la sección sobre plantillas de carga útil personalizada 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. Dialogflow solo usa esta señal para identificar las conversaciones que se entregarán con fines de medición y no altera 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. Dialogflow no impone 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 Dialogflow se realizó correctamente. Dialogflow solo usa esta señal para identificar las conversaciones que se completaron de forma correcta con fines de medición y no altera 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. Dialogflow no impone 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 variar según las distintas integraciones. Por ejemplo, consulta los requisitos para la puerta de enlace telefónica de Dialogflow CX.

En el caso de las integraciones de telefonía del socio, el socio debe poder acceder a la URL del archivo de audio. El socio siempre puede acceder a una URL disponible de forma pública, 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 del socio para obtener más detalles.

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 y else 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. [condition] se resuelve en función del estado de la sesión al comienzo de la entrega. Si [response] se basa en el estado de la sesión, se resuelve en función del 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 Dialogflow 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 defines la entrega, puedes crear mensajes de respuesta específicos del canal, de modo que puedas crear respuestas orientadas para chat de texto, voz, SMS, 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.

En el entorno de ejecución, Dialogflow 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 como cualquier texto. Si usas la API de Dialogflow directamente para las llamadas al 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 la integración reconozca.

Cómo configurar mensajes de respuesta específicos del canal en el momento del diseño

Si quieres 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 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 un canal diferente.

Si quieres proporcionar mensajes de respuesta específicos de canales 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 establece este campo, la respuesta es un mensaje de respuesta predeterminado.

Usa mensajes de respuesta específicos del canal durante el tiempo de ejecución

Para recibir un mensaje de respuesta específico del canal, se debe especificar el canal 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 la sesión Recurso de la sesión
RPC Interfaz de la sesión Interfaz de la 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
Rita No disponible No disponible

Si no se define ningún canal en una solicitud o si no se encuentra ningún canal coincidente en la entrega, Dialogflow mostrará el mensaje de respuesta predeterminado.

Plantillas de carga útil personalizadas

Si usas cargas útiles personalizadas con frecuencia, debes usar plantillas de cargas útiles personalizadas. Las cargas útiles personalizadas a veces son grandes y complejas, por lo que el uso de plantillas puede facilitar el proceso de creación del agente.

Puedes proporcionar estas plantillas en la configuración de tu agente, lo que las pone a disposición para su selección cada vez que crees una 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 personalizada. Cuando crees una entrega que requiera estos botones, solo deberás 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 de forma automática a todas las cargas útiles de entrega a las que se le hace 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.

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 de webhook para la entrega:

Término Definición
Habilitar webhook Esto habilita un 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 envió a tu servicio de webhook. Esto se puede usar para controlar el comportamiento del webhook de una manera específica de la entrega.

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)
  • Configurar un parámetro new-cost como el valor del parámetro other-cost y, al mismo tiempo, mantener el valor completo del objeto compuesto:

    Parámetro Valor
    costo nuevo $sys.func.IDENTITY($session.params.other-cost)

Configuración avanzada de voz

Esta configuración 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. Dialogflow mantiene estas respuestas en una cola de respuestas.

Respuesta parcial para la API de transmisión

De forma predeterminada, Dialogflow solo envía las respuestas ordenadas al usuario final una vez que el turno del agente termina. 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 Dialogflow limpie la cola de respuestas y envíe 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:

Para probar esta función en el simulador, debes activar la respuesta parcial.

Captura de pantalla de la respuesta parcial del simulador

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 Dialogflow 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.

Sin respuesta parcial.

Si habilitas la respuesta parcial en la primera entrega, Dialogflow muestra el primer mensaje de entrega con rapidez y llama al webhook. Una vez que se completa el webhook, Dialogflow muestra 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.

Con respuesta parcial.

Lenguaje de marcación de síntesis de voz (SSML)

Puedes usar el lenguaje de marcación de síntesis de voz (SSML) en los campos de entrega de texto de salida o texto. De esta manera, puedes personalizar tu respuesta de audio, ya que proporciona detalles sobre las pausas y el formato de audio para acrónimos, fechas, horas, abreviaturas o texto que se debe censurar.

Para obtener más detalles sobre la sintaxis, consulta la documentación de SSML de texto a voz.