Los contextos de entrada y salida se aplican a las intenciones. Trabajan conjuntamente para controlar el flujo de la conversación:
- Contextos de salida controla los contextos activos. Cuando se encuentra una coincidencia con una intención, se activan todos los contextos de salida configurados para esa intención.
- Los contextos de entrada controlan la concordancia de intents. Mientras los contextos están activos, es más probable que Dialogflow coincida con las intenciones configuradas con contextos de entrada que sean un subconjunto de los contextos activos.
Con los contextos, puedes hacer lo siguiente:
- Controlar el orden de la coincidencia de intención.
- Crea intenciones específicas del contexto con las mismas frases de entrenamiento.
Por ejemplo, considera las siguientes intenciones:
Nombre del intent | Frases de preparación | Parámetros | Contextos de entrada | Contextos de salida | Respuesta |
---|---|---|---|---|---|
pet-init | "¿Qué aspecto tienen?" | - | - | - | "¿Qué tipo de mascota te gusta?" |
pet-select-dogs | "Me gustan los perros" | - | - | perros | "¿Qué quieres saber sobre los perros?" |
pet-select-cats | "Me gustan los gatos" | - | - | gatos | "¿Qué quieres saber sobre los gatos?" |
dog-show | "¿Qué aspecto tienen?" | - | perros | - | "Aquí tienes una imagen de un perro". |
cat-show | "¿Qué aspecto tienen?" | - | gatos | - | "Aquí tienes una imagen de un gato". |
Cuando el usuario final dice I like dogs
:
- Se ha detectado 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
:
- Se ha detectado 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?
:
- Si
dogs
es el contexto activo:- Se ha detectado el intent
dog-show
. - Se muestra una imagen de un perro al usuario final.
- Se ha detectado el intent
- Si
cats
es el contexto activo:- Se ha detectado el intent
cat-show
. - Se muestra una imagen de un gato al usuario final.
- Se ha detectado el intent
- Si no hay ningún contexto activo:
- Se ha detectado el intent
pet-init
. - Se le pregunta al usuario final qué tipo de mascota le gusta.
- Se ha detectado el intent
Contextos de salida
Se pueden aplicar varios contextos de salida a un intent. Cuando se encuentra una coincidencia con una intención, se activan los contextos de salida que se hayan aplicado a la intención.
Referencias de parámetros de contextos activos
Cuando se encuentra una intención con un contexto de salida, los valores de los parámetros recogidos pueden servir como almacenamiento temporal con referencias de parámetros para los contextos activos. Se puede acceder a estos valores durante la coincidencia de intenciones posterior mientras el contexto siga activo.
Por ejemplo, veamos la siguiente variación del ejemplo de mascota anterior:
Nombre del intent | Frases de preparación | Parámetros | Contextos de entrada | Contextos de salida | Respuesta |
---|---|---|---|---|---|
pet-init | "¿Qué aspecto tienen?" | - | - | - | "¿Qué tipo de mascota te gusta?" |
pet-select | "Me gustan los perros", "Me gustan los gatos" | mascota | - | Elegido por la mascota | "¿Qué quieres saber sobre $pet?" |
pet-show | "¿Qué aspecto tienen?" | - | Elegido por la mascota | - | "Aquí tienes una foto de #pet-chosen.pet". |
Cuando el usuario final dice I like dogs
o I like cats
:
- Se ha detectado el intent
pet-select
. - El
pet
parámetro se asigna al 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?
:
- Si
pet-chosen
es el contexto activo:- Se ha detectado el intent
pet-show
. - Si el usuario final ha seleccionado
dogs
en la conversación anterior, se le mostrará una imagen de un perro. - Si el usuario final ha seleccionado
cats
en la conversación anterior, se le mostrará una imagen de un gato.
- Se ha detectado el intent
- Si no hay ningún contexto activo:
- Se ha detectado el intent
pet-init
. - Se pide al usuario final que seleccione un tipo de mascota.
- Se ha detectado el intent
Duración
Cada contexto activo tiene un tiempo de vida que define el número de turnos de conversación durante los cuales el contexto permanece activo. La duración predeterminada es de cinco turnos de conversación para las intenciones normales y de dos turnos de conversación para las intenciones de seguimiento. Puedes anular el tiempo de vida predeterminado de cualquier contexto. Además, todos los contextos caducan 20 minutos después de activarse. Cuando una intención coincide con un contexto de salida que ya está activo, se restablecen el tiempo de vida y el temporizador de vencimiento.
Por ejemplo, considera las siguientes descripciones de intenciones para un agente de información sobre mascotas:
Nombre del intent | Frases de preparación | Parámetros | Contextos de entrada | Contextos de salida | Respuesta |
---|---|---|---|---|---|
pet-init | "¿Qué aspecto tienen?", "¿Qué sonido hacen?", "¿Qué tamaño tienen?" | - | - | - | "¿Qué tipo de mascota te gusta?" |
pet-select | "Me gustan los perros", "Me gustan los gatos" | mascota | - | Mascota elegida (vida útil = 2) | "¿Qué quieres saber sobre $pet?" |
pet-show | "¿Qué aspecto tienen?" | - | Elegido por la mascota | - | "Aquí tienes una foto de un #pet-chosen.pet. ¿Qué más quieres saber?" |
pet-audio | "¿Qué sonido hacen?" | - | Elegido por la mascota | - | "Aquí tienes el sonido #pet-chosen.pet. ¿Qué más quieres saber?" |
pet-size | "¿Qué tamaño tienen?" | - | Elegido por la mascota | - | "Aquí tienes una tabla de tallas de #pet-chosen.pet. ¿Qué más quieres saber?" |
En la siguiente tabla se muestra un ejemplo de diálogo con este agente de información sobre mascotas, que ilustra el tiempo de conservación del pet-chosen
contexto:
Girar | Cuadro de diálogo | Explicación |
---|---|---|
1 | Agente: ¿Qué tipo de mascota te gusta? | Se ha detectado el intent pet-init . |
2 | Usuario: Me gustan los gatos. Agente: ¿Qué quieres saber sobre los gatos? |
Se ha detectado el intent pet-select . El contexto de salida pet-chosen se convierte en el contexto activo. |
3 | Usuario: ¿Cómo es? Agente: Aquí tienes una imagen de un gato. ¿Qué más quieres saber? |
La intención pet-show tiene un contexto de entrada pet-chosen , por lo que se corresponde. El contexto pet-chosen ha estado activo durante un turno. |
4 | Usuario: ¿Cómo suenan? Agente: Aquí tienes el sonido de un gato. ¿Qué más quieres saber? |
La intención pet-audio tiene un contexto de entrada pet-chosen , por lo que se corresponde. El contexto de pet-chosen ha estado activo durante 2 turnos. |
5 | Usuario: ¿Qué tamaño tienen? Agente: ¿Qué tipo de mascota te gusta? |
Se vuelve a detectar la intención pet-init porque el contexto pet-chosen ya no está activo. |
Contextos de entrada
Mientras los contextos están activos, es más probable que Dialogflow coincida con las intenciones configuradas con contextos de entrada que correspondan a los contextos activos en ese momento. Las reglas detalladas de coincidencia de intenciones son las siguientes:
- Para que se pueda asociar una intención, su lista de contextos de entrada debe ser un subconjunto de la lista de contextos activos. Esto también se aplica a las intenciones sin contextos de entrada.
- En el caso de las intenciones que cumplan la regla 1, es más probable que se correspondan con aquellas que tengan una lista de contextos de entrada que se ajuste más a la lista de contextos activa.
Por ejemplo:
- Las intenciones sin contextos de entrada se pueden asociar en cualquier momento.
- Si no hay ningún contexto activo, solo se pueden asociar las intenciones que no tengan contextos de entrada.
- Si los contextos "A" y "B" están activos, no se puede encontrar una coincidencia con una intención que tenga los contextos de entrada "A" y "C".
- Si los contextos "A", "B" y "C" están activos, se puede encontrar una coincidencia con una intención que tenga los contextos de entrada "A" y "B".
- Si los contextos "A" y "B" están activos, es más probable que se detecte un intent con los contextos de entrada "A" y "B" que un intent sin contexto de entrada o un intent con solo "A" como contexto de entrada.