Ahora que tienes tu entidad de secuencia, puedes crear las intenciones para recoger la secuencia del usuario final. Deberías tener al menos tres intents con estas responsabilidades:
- Una intención principal "Sequence"
- Detecta las expresiones para iniciar la colección de secuencias.
- Se invoca mediante eventos de seguimiento para seguir capturando secuencias hasta que el usuario final diga que ha terminado.
- Una intención contextual "Sequence - Edit"
- Detecta las expresiones para corregir la última secuencia recogida.
- Vuelve de forma programática a la intención "Sequence" para recoger la secuencia corregida.
- Una intención contextual "Sequence - Done"
- Detecta las expresiones que indican que la secuencia se ha completado.
En la siguiente sección, verás cómo conectará webhook todos estos elementos, pero primero vamos a configurar los intents.
Crea el intent "Sequence"
Este es el objetivo principal de la recogida de secuencias. Configúrelo de la siguiente manera:
- Deja los contextos de entrada vacíos para que los usuarios finales puedan activar esta intención al inicio de la llamada.
- Añade un contexto de salida "collecting-sequence". Usaremos este contexto para habilitar las intenciones de corrección y finalización durante el flujo.
- Añade un contexto de salida "editing-sequence" y asigna el valor 0 a su tiempo de vida. Activaremos este contexto con un tiempo de vida del intent "Sequence - Edit" en la siguiente sección. Es importante borrar este contexto aquí para que el contexto "editing-sequence" solo esté activo inmediatamente después de activar el intent "Edit".
Añade un evento "continue-sequence" para que tu webhook pueda repetir este intent y recoger todas las secuencias parciales.
Añade frases de entrenamiento para que el usuario final pueda activar esta intención para iniciar el flujo. En este ejemplo, se usan frases como "¿Cuál es el estado de mi pedido?", "Seguir mi pedido", "¿Dónde está mi pedido?", etc.
Añade el nombre de la acción "handle-sequence" para que el webhook sepa cuándo activarse. Codificarás el webhook en la siguiente sección de este tutorial, después de configurar todos los intents.
Añada el parámetro obligatorio "new_sequence" con la entidad de expresión regular que ha creado para recoger secuencias parciales en la sección anterior. Asigna el valor "@alphanumeric" al tipo de entidad y "$new_sequence" al valor.
Añade el parámetro opcional "existing_sequence" con el valor "#continue-sequence.existing_sequence" para extraer la nueva secuencia del evento. Puedes dejar el tipo de entidad vacío.
Añade el parámetro opcional "previous_sequence" con el valor "#continue-sequence.previous_sequence" para extraer la secuencia anterior del evento. Puedes dejar el tipo de entidad vacío.
Habilita la llamada de webhook para esta intención y la llamada de webhook para rellenar ranuras.
Crear el intent "Sequence - Edit"
Este intent detecta las expresiones que indican que el agente no ha entendido la secuencia anterior. Configúralo de la siguiente manera:
- Añade un contexto de entrada "collecting-sequence" para que esta intención solo se invoque cuando estemos en medio del flujo de la secuencia. Es el mismo contexto activado por la intención "Sequence".
- Añade un contexto de salida "editing-sequence" para que nuestro webhook de respuesta pueda hacer referencia a él. Cuando se active este intent, el webhook devolverá a Dialogflow al intent principal "Sequence" para recoger la siguiente secuencia. El webhook de la asignación de ranuras de la intención "Sequence" comprobará si hay un contexto "editing-sequence" activo para proporcionar una respuesta de "inténtalo de nuevo" al usuario final.
Añade frases de entrenamiento como "no", "no es correcto", etc.
Añade el nombre de la acción "handle-sequence". Es la misma acción que la intención "Sequence", por lo que podemos reutilizar la misma lógica de webhook.
Añade un parámetro "new_sequence" con el valor "#collecting-sequence.previous_sequence" para extraer la secuencia anterior del contexto, lo que deshace la última expresión. No añadimos ningún parámetro "existing_sequence" para que el webhook sobrescriba la secuencia anterior con la nueva.
Habilita la llamada de webhook para esta intención.
Crea una intención "Sequence - Done".
- Añadir un contexto de entrada "collecting-sequence"
- Añade un contexto de salida "collecting-sequence" y asigna el valor 0 al tiempo de vida para borrar el contexto. Si lo borras, se evita que las intenciones "Editar" y "Hecho" se activen de nuevo ahora que el agente ha terminado de recoger la secuencia.
Añade frases de entrenamiento como "ya está", "terminado", etc.
Añade un parámetro "sequence" con el valor "#collecting-sequence.existing_sequence" para extraer la secuencia final del contexto.
Habilita la llamada de webhook para esta intención.
Vincular las intenciones mediante webhook
Ahora tienes todo lo que necesitas para codificar la lógica de estas intenciones. En la siguiente sección, verá cómo codificar el webhook para usar todos estos contextos, acciones, parámetros y eventos para completar el flujo de validación de la secuencia.