Crear un agente de Dialogflow CX

En esta guía, se muestra cómo usar la consola de Dialogflow CX para compilar y probar un agente simple de pedido de camisas. Cuando interactúas con este agente, puedes solicitar la ubicación de la tienda, obtener el horario de atención o realizar un pedido de camisas.

En la consola, se mostrarán gráficos como los siguientes del agente completado de esta guía:

Captura de pantalla del gráfico del agente

Antes de comenzar

Debes hacer lo siguiente antes de leer esta guía:

  1. Lee los conceptos básicos de Dialogflow CX.
  2. Realiza los pasos de configuración.

Crea un agente

Crea un agente nuevo para esta guía:

  1. Abre la consola de Dialogflow CX.
  2. Crea o elige un proyecto.
  3. Haz clic en Create Agent.
  4. Selecciona Build your own.
  5. Completa el formulario de configuración básica del agente.
    1. Puedes elegir cualquier nombre visible.
    2. Selecciona tu ubicación preferida. Haz clic en el botón Edit si deseas cambiar la configuración de la ubicación avanzada.
    3. Selecciona tu zona horaria preferida.
    4. Selecciona el idioma predeterminado para tu agente.
    5. De manera opcional, habilita Stackdriver Logging.
  6. Haz clic en Guardar.

Importación opcional de agentes

En esta guía, se explican los pasos necesarios para compilar un agente simple de pedido de camisas. Si deseas omitir los pasos de la consola, puedes descargar el agente y, luego, importarlo.

Intents y flujos predeterminados

Los siguientes intents y flujos se crean de forma automática para un agente nuevo. Para encontrar los intents, haz clic en Administrar y, luego, en Intents. Para encontrar el flujo, haz clic en Compilar.

Término Definición
Intent de bienvenida predeterminado El intent de bienvenida predeterminado tiene frases de entrenamiento simples, como "Hola" o "Saludos", que están pensados para coincidir con la entrada inicial del usuario final. Puedes editar este intent como desees.
Intent negativo predeterminado El intent negativo predeterminado se puede usar para agregar frases de entrenamiento a este intent que actúan como ejemplos negativos.
Flujo de inicio predeterminado El flujo de inicio predeterminado se puede usar como el único flujo. Es el único flujo que se usará en esta guía. Para los agentes más complejos, puedes agregar más flujos. Este flujo tiene una ruta de intent predeterminada con el intent de bienvenida predeterminado como un requisito de intent.

Prueba el mensaje de respuesta de bienvenida predeterminado

El flujo y los intents predeterminados pueden manejar una conversación básica con solo un mensaje de bienvenida. Para probar el agente nuevo, sigue estos pasos:

  1. Haz clic en el botón Probar agente para abrir el simulador.
  2. Ingresa hello en la entrada de texto y presiona Intro.
  3. El agente contesta con una respuesta de bienvenida predeterminada.
  4. Cierra el simulador.

Captura de pantalla del simulador

El agente realizó los siguientes pasos para esta entrada del usuario final:

  1. Cuando proporcionaste la entrada, el flujo de inicio predeterminado era el flujo activo y la página de inicio del flujo era la página activa. Cada uno de los controladores de estado aplicados al flujo activo estaban dentro del alcance, por lo que el agente los evalúa.
  2. Una de las rutas evaluadas tiene el intent de bienvenida predeterminado como un requisito de intent. La entrada coincidió con este intent, por lo que se llamó a la ruta.
  3. La ruta a la que se llamó tiene varios mensajes de respuesta de entrega. El agente eligió uno al azar y lo agregó a la cola de respuestas.
  4. La ruta a la que se llamó no tiene un objetivo de transición, por lo que el flujo y la página activos no cambiaron.
  5. El agente respondió con el contenido de la cola de respuestas.

Edita el mensaje de respuesta de bienvenida

Puedes cambiar este mensaje de bienvenida. Para editar el mensaje de respuesta de bienvenida, haz lo siguiente:

  1. Haz clic en la pestaña Compilar.
  2. Selecciona el flujo de inicio predeterminado en la sección Flujos.
  3. Haz clic en el nodo Start en el gráfico. Esta es la página de inicio del Flujo de inicio predeterminado.
  4. Busca la ruta del intent con el intent de bienvenida predeterminado como un requisito de intent y haz clic en él. Esto abrirá un panel para editar la información de la ruta del intent.
  5. Busca la sección de entrega, borra todos los mensajes de respuesta y, luego, agrega Hello, this is a shirt ordering virtual agent. How can I help you? como la única respuesta.
  6. Haz clic en Guardar.
  7. Cierra el panel de edición de la ruta del intent.

Captura de pantalla de la respuesta del agente

Prueba el mensaje de respuesta de bienvenida actualizado

Para probar la respuesta actualizada, sigue estos pasos:

  1. Haz clic en el botón Probar agente para abrir el simulador.
  2. Ingresa hello en la entrada de texto y presiona Intro.
  3. El agente responde con el mensaje nuevo.
  4. Cierra el simulador.

Página de ubicación de la tienda

Una conversación de Dialogflow CX (sesión) se puede describir y visualizar como una máquina de estado. Los estados de una sesión de CX se representan con páginas. Hasta ahora, solo tienes una página, por lo que el agente no es muy útil. En esta sección, debes crear otra página que maneje preguntas sobre la ubicación de la tienda.

Crea el intent de ubicación

Un intent categoriza la intención del usuario final en un turno de conversación. Para crear un intent que coincida cuando la entrada del usuario final solicite la ubicación de la tienda:

  1. Selecciona la pestaña Administrar.
  2. Haz clic en Intents.
  3. Haz clic en Crear.
  4. Ingresa store.location para el nombre visible del intent.
  5. Ingresa las siguientes frases de entrenamiento:
    • Where is the store?
    • Directions
    • Tell me the address
    • Where do I pick up my order?
    • How do I get there?
    • Where is the store located?
    • What street are you on?
    • What is your address?
    • How do I get to your store?
    • Where are you located?
  6. Haz clic en Guardar.

Captura de pantalla del intent

Crea la página de ubicación

Ahora, debes crear la página nueva. Puedes agregar una entrega de entrada en esta página a la que se llame cada vez que la página se vuelva activa. Esta entrega de entrada debe tener un mensaje de respuesta que proporcione la ubicación de la tienda. Para crear la página de ubicación de la tienda, haz lo siguiente:

  1. Haz clic en la pestaña Compilar.
  2. Selecciona el flujo de inicio predeterminado en la sección Flujos.
  3. Haz clic en el botón Agregar  de la sección Páginas. Aparecerá una entrada de texto para el nombre visible de la página.
  4. Ingresa Store Location para el nombre visible de la página y presiona Intro.
  5. Haz clic en el botón de opciones junto al nombre visible de la página.
  6. Selecciona Editar para abrir el panel de edición de la página.
  7. Busca Entrega de la entrada y haz clic en Editar entrega.
  8. Ingresa Our store is located at 1007 Mountain Drive, Gotham City, NJ. en el campo El agente dice.
  9. Haz clic en Guardar.
  10. Cierra el panel de edición de la página.

Captura de pantalla de la página

Agrega una ruta de intent de ubicación al flujo

Ahora debes crear una ruta que tenga la página de ubicación de la tienda como un objetivo de transición. Cuando se llama a esta ruta, la sesión pasa a la página de ubicación de la tienda. Esta ruta se aplica en el flujo de inicio predeterminado, por lo que está dentro del alcance mientras el flujo esté activo. En el caso de un agente de un solo flujo, esto significa que la ruta siempre está dentro del alcance. En cualquier momento de la conversación, el usuario final puede solicitar la ubicación de la tienda y se llamará a esta ruta.

Para crear esta ruta, haz lo siguiente:

  1. Haz clic en la pestaña Compilar.
  2. Selecciona el flujo de inicio predeterminado en la sección Flujos.
  3. Haz clic en el nodo Start en el gráfico. Esta es la página de inicio del Flujo de inicio predeterminado.
  4. Agrega la siguiente ruta de intent:
    • Intent: store.location
    • Página de transición: Store Location
  5. Haga clic en Save.
  6. Cierra el panel de edición de la ruta del intent.

Captura de pantalla de la ruta del intent

Cuando cierres los paneles de edición, verás que la página nueva tiene un nodo en el grafo. La flecha del nodo de Inicio al nodo de la Ubicación de la tienda indica cómo la sesión puede pasar de un nodo a otro.

Prueba la página de ubicación de la tienda

Para probar la página, haz lo siguiente:

  1. Haz clic en el botón Probar agente para abrir el simulador.
  2. Ingresa What is the store location? y presiona Intro.
  3. El agente proporciona la dirección.
  4. Cierra el simulador.

El agente realizó los siguientes pasos para la entrada del usuario final:

  1. Cuando proporcionaste la entrada, el flujo de inicio predeterminado era el flujo activo y la página de inicio del flujo era la página activa. Cada uno de los controladores de estado aplicados al flujo activo estaban dentro del alcance, por lo que el agente los evalúa.
  2. Una de las rutas evaluadas tiene store.location como requisito de intent. La entrada coincidió con este intent, por lo que se llamó a la ruta.
  3. La ruta llamada no tiene mensajes de respuesta de entrega, por lo que no agregó nada a la cola de respuestas.
  4. La ruta llamada tiene un objetivo de transición, por lo que la página activa cambió a la página de ubicación de la tienda.
  5. La página de ubicación de la tienda tiene una entrega de entrada, por lo que el mensaje de respuesta de la entrega se agregó a la cola de respuesta (la dirección).
  6. El agente respondió con el contenido de la cola de respuestas.

Página de horarios de la tienda en la que se usa la creación intercalada

En esta sección, debes crear una página de Horarios de la tienda que administre las preguntas de los usuarios finales sobre el horario de la tienda. En las secciones anteriores, creaste intents y páginas desde las pestañas Build (Compilar) y Manage (Administrar). En esta sección, se muestra una forma más rápida de crear estos tipos mediante la creación intercalada.

Para crear una ruta del intent, un intent y una página de forma intercalada, haz lo siguiente:

  1. Haz clic en el nodo Start en el gráfico.
  2. Haz clic en el botón para agregar la Ruta del intent. Se abrirá el panel de edición de ruta del intent.
  3. En la sección Intent, selecciona Nuevo intent. Se abrirá el panel de edición del intent.
  4. Crea un intent store.hours con las siguientes frases de entrenamiento:

    • What are your store hours?
    • What time do you close?
  5. Haz clic en Guardar para guardar el intent. Se cerrará el panel de edición del intent.

  6. Desplázate hacia abajo hasta la sección Transición en el panel de edición de la ruta del intent.

  7. En la transición de la Página, selecciona Página nueva.

  8. Ingresa Store Hours en la entrada de texto que aparece.

  9. Haz clic en Guardar. La nueva página aparece en el gráfico, porque ahora hay una transición que lleva hasta ella.

  10. Cierra el panel de edición de la ruta del intent.

  11. Agrega una entrega de entrada que proporcione el horario de la tienda, de forma similar a los pasos realizados para la ubicación de la tienda.

  12. Cierra cualquier panel de edición abierto.

Página de elementos pedidos

A continuación, deberás crear una página que use parámetros de formulario. Cuando el usuario final solicite un nuevo pedido de camisas, la sesión pasará a esta página. Cuando está activa, esta página recopila el tamaño y el color del pedido de camisas.

Crea un tipo de entidad personalizada para el tamaño de la camisa

Los tipos de entidades se usan para controlar cómo se extraen los datos de la entrada del usuario final. Dialogflow proporciona entidades del sistema predefinidas que pueden hacer coincidir muchos tipos de datos comunes. Por ejemplo, hay entidades del sistema que hacen coincidir fechas, horarios, colores, direcciones de correo electrónico y demás. Usted también puede crear sus propias entidades personalizadas para detectar coincidencias en datos personalizados.

En este agente, puedes usar una entidad del sistema para el color de la camisa, pero debes crear una entidad personalizada para el tamaño de la camisa. El tipo de entidad de tamaño debe tener las siguientes entradas de entidad:

Entidad Sinónimos
pequeño pequeño, diminuto, chico
Media medio, regular, promedio
Grande grande, enorme, gigante

Para crear esta entidad, haz lo siguiente:

  1. Selecciona la pestaña Administrar.
  2. Haz clic en Tipos de entidades.
  3. Haz clic en +Crear.
  4. Configura el nombre visible como size.
  5. Agrega las entradas de entidad que se enumeran en la tabla anterior.
  6. Haz clic en Guardar.

Crea un intent de pedido con parámetros de intent

Necesitas un intent que coincida cuando el usuario final solicite un pedido de camisas nuevo. Este intent también debe capturar de manera opcional el color o el tamaño deseados para la camisa que proporciona el usuario final, en el caso de que proporcione esa información por adelantado.

Los parámetros se usan a fin de capturar y hacer referencia a los valores que proporcionó el usuario final durante una sesión. Cada parámetro tiene un nombre visible y un tipo de entidad. A diferencia de la entrada sin procesar del usuario final, los parámetros son datos estructurados que se pueden usar con facilidad para realizar alguna lógica o generar respuestas.

Para controlar cómo se extraen los datos del usuario final con la coincidencia de intents, puedes anotar partes de las frases de entrenamiento y configurar los parámetros de intents asociados. Por ejemplo, considera una frase de entrenamiento como “¿Cuál es el pronóstico para mañana en Tokio?” Debes anotar “mañana” con un parámetro date y “Tokio” con un parámetro location. Cuando anotas fragmentos de una frase de entrenamiento, Dialogflow reconoce que estos fragmentos son solo ejemplos de valores reales que proporcionarán los usuarios finales en el entorno de ejecución. En una entrada del usuario final como “¿Cuál es el pronóstico para el viernes en Sídney?”, Dialogflow extraería el parámetro date de “Viernes” y el parámetro location de “Sídney”.

Para anotar una frase de entrenamiento con la consola, haz lo siguiente:

  1. Selecciona el fragmento de la frase de entrenamiento que deseas anotar.
  2. Selecciona el tipo de entidad deseado de la lista.
  3. Se crea un parámetro para ti en la tabla de parámetros a continuación.

Crea un intent similar al de los pasos que seguiste antes. Asigna el nombre order.new a este intent. Para cada frase que contiene un color, anota el color con un parámetro color y el tipo de entidad del sistema @sys.color. Para cada frase que contiene un tamaño de camisa, anota el tamaño con un parámetro size y el tipo de entidad personalizada @size que creaste en los pasos anteriores. Las frases y parámetros de entrenamiento deberían ser similares a los siguientes:

Captura de pantalla del intent

Crea una página de pedido

Siga pasos similares a los pasos anteriores para crear la nueva página de pedidos:

  • Nombre visible: New Order
  • Entrega de entrada: Ok, let's start a new order.

Agrega un formulario a la página de pedido

Para cada página, puedes definir un formulario, que es una lista de parámetros que se deben recopilar del usuario final. El agente interactúa con el usuario final durante varios turnos de conversación hasta que haya recopilado todos los parámetros del formulario necesarios, que también se conocen como parámetros de página. Para cada parámetro del formulario, también proporcionas mensajes que el agente usa a fin de solicitar esa información del usuario final. Esto se denomina proceso para completar formularios.

Cuando un usuario final proporciona parámetros de intent para una coincidencia de intent, estos se convierten en parámetros de sesión. Cuando una página se activa en un principio, todos los parámetros de su formulario se rellenan de forma previa con cualquier parámetro de sesión con un nombre similar. Por lo tanto, si el usuario final proporciona el tamaño o el color cuando coincide el intent order.new, estos valores se completarán de forma automática para el formulario.

Para la página de pedido nueva, debes definir dos parámetros obligatorios del formulario:

Requeridos Nombre visible Tipo de entidad Es una lista Mensaje
color @sys.color ¿Qué color quieres?
size @size ¿Qué tamaño quieres?

Para agregar este formulario, haz lo siguiente:

  1. Haz clic en la página Pedido nuevo en el gráfico.
  2. Haz clic en el botón para agregar los Parámetros. Se abrirá el panel de edición de los parámetros.
  3. Agrega los parámetros como se describe en la tabla anterior.
  4. Haz clic en Guardar.
  5. Cierra el panel de edición de los parámetros.

Agrega una ruta de intent de pedido al flujo

De manera similar a como hiciste en los pasos que seguiste antes, agrega una ruta al flujo de inicio predeterminado. Esta ruta se debe llamar cuando el usuario final desea realizar un pedido nuevo:

  • Intent: order.new
  • Página del objetivo de transición: pedido nuevo

Página de confirmación

La página final solo confirmará el pedido y finalizará la sesión.

Crea la página de confirmación

Crea una página de confirmación con una respuesta en la que se usen los parámetros de sesión para confirmar el pedido:

  • Nombre visible: Order Confirmation
  • Entrega de entrada: You can pick up your order for a $session.params.size $session.params.color shirt in 7 to 10 business days. Goodbye.

Agrega rutas de condición a la página de pedido

También puedes usar conditions para determinar si se llama una ruta. Por lo general, las condiciones se usan con el fin de verificar si un formulario está completo o si está configurado para que se lo llame siempre que se evalúe.

Para establecer las condiciones en la consola de CX, revisa la documentación sobre cómo establecer condiciones.

Agrega la siguiente ruta a la página de pedido, que se llamará cuando se complete el formulario de la página de pedido. Observa cómo esta ruta de condición usa referencias de parámetros en su respuesta al usuario final y cómo pasa la sesión a la página de confirmación del pedido.

  • Condición: $page.params.status = "FINAL"
  • El agente dice: You have selected a $session.params.size, $session.params.color shirt.
  • Página de transición: Order Confirmation

Agrega la siguiente ruta a la página de pedidos, que se llamará en cada turno de conversación en el que la página esté activa y se evalúe la ruta de condición. Cuando se evalúa y se llama la condición anterior, la página queda inactiva, por lo que esta ruta de condición verdadera no se evalúa:

  • Condición: true
  • El agente dice: I'd like to collect a bit more information from you.

Crea una ruta de condición para finalizar la sesión

Agrega la siguiente ruta de condición a la página Confirmar pedido para finalizar la sesión una vez que se haya activado esa página y se procese su entrega de entrada:

  • Condición: true
  • Objetivo de transición: Página: End Session

Prueba el agente completado

Prueba el agente mediante el siguiente diálogo:

Diálogo Explicación
Usuario final: Hola
Agente: Hola, soy un agente virtual de pedido de camisas. ¿Cómo puedo ayudarte?
  1. Se llama a la ruta del Intent de bienvenida predeterminado en el Flujo de inicio predeterminado.
  2. La entrega para este controlador de estado ("Hola, soy…") se agrega a la cola de respuestas.
  3. El agente envía la cola de respuestas al usuario final.
Usuario final: Quiero comprar una camisa azul
Agente: De acuerdo, vamos a iniciar un pedido nuevo.
Agente: Me gustaría recopilar más información acerca de ti.
Agente: ¿Qué tamaño quieres?
  1. Se evalúa la ruta del intent order.new en el Flujo de inicio predeterminado.
  2. Se establece la coincidencia con el intent order.new y se establece el parámetro del intent color en "blue".
  3. La sesión pasa a la página New Order y el parámetro del intent color se convierte en un parámetro de sesión.
  4. La página del pedido nuevo tiene una entrega de entrada (“Comencemos…”), por lo que se agrega a la cola de respuestas.
  5. El parámetro de sesión color se usa para completar el parámetro del formulario con nombre similar.
  6. La ruta de condición verdadera de la página del pedido nuevo se evalúa y se llama. Tiene un mensaje de respuesta ("Me gustaría recopilar…"), por lo que se agrega a la cola de respuestas.
  7. El formulario de la página no se completa, por lo que el agente usa el mensaje de tamaño ("¿Qué tamaño…") y lo agrega a la cola de respuestas.
  8. El agente envía la cola de respuestas al usuario final.
Usuario final: grande
Agente: Seleccionó una camisa azul grande.
Agente: Puedes retirar tu pedido de una camisa azul grande en un plazo de 7 a 10 días hábiles. Adiós.
  1. La entrada del usuario final completa el parámetro size que solicitó el agente en el turno de la conversación anterior.
  2. La ruta de finalización del formulario de la página del pedido nuevo se evalúa y se llama. Tiene una entrega ("Seleccionó…"), que se agrega a la cola de respuestas con las referencias del parámetro resueltas con los valores reales que proporcionó el usuario final.
  3. La sesión pasa a la página Confirmación de pedido.
  4. La página Confirmación de pedido tiene una entrega de entrada ("Puedes retirar..."), que se agrega a la cola de respuestas.
  5. El agente envía la cola de respuestas al usuario final.
  6. La sesión pasa a End Session.

Producción

Antes de ejecutar el agente en producción, asegúrate de implementar las prácticas recomendadas de producción.

¿Qué sigue?