Se aplican contextos de entrada y salida a los intents. En conjunto, estos contextos controlan el flujo de la conversación:
- Los contextos de salida controlan los contextos activos. Cuando se detecta una coincidencia con un intent, se activan los contextos de salida configurados para ese intent.
- Los contextos de entrada controlan la detección de coincidencias con intents. Mientras hay contextos activos, Dialogflow es más propenso a detectar coincidencias con intents configurados con contextos de entrada que sean un subconjunto de los contextos activos en el momento.
Los contextos te permiten hacer lo siguiente:
- Controlar el orden de detección de coincidencias con intents
- Crear intents para contextos específicos con las mismas frases de entrenamiento
Por ejemplo, considera los siguientes intents:
Nombre del intent | Frases de entrenamiento | Parámetros | Contextos de entrada | Contextos de salida | Respuesta |
---|---|---|---|---|---|
pet-init | “What do they look like?” (¿Qué aspecto tienen?) | - | - | - | “What kind of pet do you like?” (¿Qué tipo de mascota te gusta?) |
pet-select-dogs | “I like dogs” (Me gustan los perros) | - | - | perros | "What do you want to know about dogs?" (¿Qué quieres saber sobre los perros?) |
pet-select-cats | “I like cats” (Me gustan los gatos) | - | - | gatos | “What do you want to know about cats?” (¿Qué quieres saber sobre los gatos?) |
dog-show | “What do they look like?” (¿Qué aspecto tienen?) | - | perros | - | “Here is a picture of a dog” (Aquí tienes una foto de un perro). |
cat-show | “What do they look like?” (¿Qué aspecto tienen?) | - | gatos | - | “Here is a picture of a cat.” (Aquí tienes una foto de un gato.) |
Cuando el usuario final dice I like dogs
:
- Se detecta la coincidencia con el intent
pet-select-dogs
. - El contexto de salida es
dogs
, por lo que se convierte en el contexto activo.
Cuando el usuario final dice I like cats
, sucede lo siguiente:
- Se detecta la coincidencia con el intent
pet-select-cats
. - El contexto de salida es
cats
, por lo que se convierte en el contexto activo.
Cuando el usuario final dice What do they look like?
, existen las posibilidades que se mencionan a continuación:
- Si
dogs
es el contexto activo, sucede lo siguiente:- Se detecta la coincidencia con el intent
dog-show
. - Se le muestra una foto de un perro al usuario final.
- Se detecta la coincidencia con el intent
- Si
cats
es el contexto activo, sucede lo siguiente:- Se detecta la coincidencia con el intent
cat-show
. - Se le muestra una foto de un gato al usuario final.
- Se detecta la coincidencia con el intent
- Si no hay un contexto activo, sucede lo siguiente:
- Se detecta la coincidencia con el intent
pet-init
. - Se le pregunta al usuario final qué tipo de mascota le gusta.
- Se detecta la coincidencia con el intent
Contextos de salida
Se pueden aplicar varios contextos de salida a un intent. Cuando se detecta una coincidencia con un intent, se activan los contextos de salida aplicados a ese intent.
Referencias de parámetros para contextos activos
Cuando se detecta una coincidencia con un intent con contexto de salida, se pueden usar los valores de los parámetros recopilados como almacenamiento temporal con referencias de parámetros para contextos activos. Se podrá acceder a estos valores durante futuras operaciones de coincidencia de intents, siempre y cuando el contexto permanezca activo.
Por ejemplo, considera la siguiente variación del ejemplo anterior sobre mascotas:
Nombre del intent | Frases de entrenamiento | Parámetros | Contextos de entrada | Contextos de salida | Respuesta |
---|---|---|---|---|---|
pet-init | “What do they look like?” (¿Qué aspecto tienen?) | - | - | - | “What kind of pet do you like?” (¿Qué tipo de mascota te gusta?) |
pet-select | “I like dogs” (Me gustan los perros), “I like cats” (Me gustan los gatos) | pet | - | pet-chosen | “What do you want to know about $pet?” (¿Qué quieres saber sobre $pet?) |
pet-show | “What do they look like?” (¿Qué aspecto tienen?) | - | pet-chosen | - | “Here is a picture of a #pet-chosen.pet.” (Aquí tienes la foto de #pet-chosen.pet) |
Cuando el usuario final dice I like dogs
o I like cats
, sucede lo siguiente:
- Se detecta la coincidencia con el intent
pet-select
. - El parámetro
pet
se establece en el tipo de mascota elegido. - El contexto de salida es
pet-chosen
, por lo que se convierte en el contexto activo.
Cuando el usuario final dice What do they look like?
, existen las posibilidades que se mencionan a continuación:
- Si
pet-chosen
es el contexto activo, sucede lo siguiente:- Se detecta la coincidencia con el intent
pet-show
. - Si el usuario final seleccionó
dogs
en el turno de conversación anterior, se muestra la imagen de un perro. - Si el usuario final seleccionó
cats
en el turno de conversación anterior, se muestra la imagen de un gato.
- Se detecta la coincidencia con el intent
- Si no hay un contexto activo, sucede lo siguiente:
- Se detecta la coincidencia con el intent
pet-init
. - Se le solicita al usuario final que seleccione un tipo de mascota.
- Se detecta la coincidencia con el intent
Vida útil
Cada contexto activo tiene una vida útil que define la cantidad de turnos de conversación durante los que el contexto permanece activo. La vida útil predeterminada es de cinco turnos de conversación para los intents normales y de dos turnos de conversación en el caso de los intents de seguimiento. Puedes anular la duración predeterminada de cualquier contexto. Además, todos los contextos caducan 20 minutos después de su activación. Cuando se detecta una coincidencia con un intent que tiene un contexto de salida ya activo, se restablecen la vida útil y el temporizador de vencimiento de ese contexto.
Por ejemplo, considera las siguientes descripciones de intent para un agente de información sobre mascotas:
Nombre del intent | Frases de entrenamiento | Parámetros | Contextos de entrada | Contextos de salida | Respuesta |
---|---|---|---|---|---|
pet-init | “What do they look like?” (¿Qué aspecto tienen?), “What do they sound like?” (¿Qué sonido hacen?), “How big are they?” (¿Qué tan grandes son?) | - | - | - | “What kind of pet do you like?” (¿Qué tipo de mascota te gusta?) |
pet-select | “I like dogs” (Me gustan los perros), “I like cats” (Me gustan los gatos) | pet | - | pet-chosen (vida útil = 2) | “What do you want to know about $pet?” (¿Qué quieres saber sobre $pet?) |
pet-show | “What do they look like?” (¿Qué aspecto tienen?) | - | pet-chosen | - | “Here is a picture of a #pet-chosen.pet. What else do you want to know?" (Aquí tienes una foto de #pet-chosen.pet. ¿Qué más quieres saber?) |
pet-audio | “What do they sound like?” (¿Qué sonido hacen?) | - | pet-chosen | - | “Here is a #pet-chosen.pet sound. What else do you want to know?" (Aquí tienes una foto de #pet-chosen.pet. ¿Qué más quieres saber?) |
pet-size | “How big are they?” (¿Qué tan grandes son?) | - | pet-chosen | - | “Here is a #pet-chosen.pet size chart. What else do you want to know?" (Aquí tienes una foto de #pet-chosen.pet. ¿Qué más quieres saber?) |
En la siguiente tabla, se muestra un diálogo de ejemplo para este agente de información sobre mascotas, que ilustra la vida útil del contexto pet-chosen
:
Turno | Diálogo | Explicación |
---|---|---|
1 | Agente: ¿Qué tipo de mascota te gusta? | Se detecta la coincidencia con el intent pet-init . |
2 | Usuario: Me gustan los gatos. Agente: ¿Qué quieres saber sobre los gatos? |
Se detecta la coincidencia con el intent pet-select . El contexto de salida pet-chosen se convierte en el contexto activo. |
3 | Usuario: ¿Qué aspecto tienen? Agente: Aquí tienes la foto de un gato. ¿Qué más quieres saber? |
El intent pet-show tiene pet-chosen como contexto de entrada, por lo que se detecta la coincidencia con él. El contexto pet-chosen (gatos) está activo desde hace 1 turno. |
4 | Usuario: ¿Qué sonido hacen? Agente: Aquí tienes el sonido de un gato. ¿Qué más quieres saber? |
El intent pet-audio (audio-gato) tiene pet-chosen (gatos) como contexto de entrada, por lo que se detecta la coincidencia con él. El contexto pet-chosen (gatos) está activo desde hace 2 turnos. |
5 | Usuario: ¿Qué tamaño tienen? Agente: ¿Qué tipo de mascota te gusta? |
Vuelve a asignarse el intent pet-init porque el contexto pet-chosen ya no está activo. |
Contextos de entrada
Mientras hay contextos activos, Dialogflow es más propenso a detectar coincidencias con intents configurados con contextos de entrada que correspondan a los contextos activos en ese momento. Las reglas detalladas de detección de coincidencia con intents son las siguientes:
- La lista de contextos de entrada de un intent debe ser un subconjunto de la lista de contextos activos en este momento para que se detecte la coincidencia. Esto también se aplica a los intents que no tienen contextos de entrada.
- En el caso de los intents que satisfacen la regla 1, es más probable que se detecte una coincidencia con aquellos cuya lista de contextos de entrada sea más similar a la lista de contextos activos en el momento.
Por ejemplo:
- Los intents sin contextos de entrada pueden coincidir en cualquier momento.
- Si no hay contextos activos, solo se pueden detectar coincidencias con intents que no tengan contextos de entrada.
- Si están activos los contextos “A” y “B”, no se puede detectar una coincidencia con un intent que tenga los contextos de entrada “A” y “C”.
- Si están activos los contextos “A”, “B” y “C”, puede detectarse una coincidencia con un intent que tenga los contextos de entrada “A” y “B”.
- Si están activos los contextos “A” y “B”, es más probable que se detecte una coincidencia con un intent que tenga los contextos de entrada “A” y “B” que con un intent que no tenga contextos de entrada o solo tenga el contexto de entrada “A”.