En la mayoría de los casos, los contextos se configuran en tiempo de diseño (cuando se crea un agente). Por ejemplo, si tienes una frase de entrenamiento como: "Me gustaría añadir pizza a mi carrito de la compra".
En algunos casos avanzados, también puedes escribir código que obtenga y defina algunos contextos en tiempo de ejecución (durante una conversación en directo). Por ejemplo, has detectado la ubicación de un dispositivo y la has añadido al contexto para poder hacer referencia a ella más adelante.
En este documento se describe cómo obtener y definir contextos en tiempo de diseño y de ejecución mediante la consola de Dialogflow, la API o cumplimiento.
Nombres de contexto
Se aplican las siguientes reglas a los contextos de nombres:
| Regla | Ejemplos |
|---|---|
| Usa nombres alfanuméricos. | mycontext1 |
Usa - o _ en lugar de espacios. |
my-context-1 |
| Los nombres no distinguen entre mayúsculas y minúsculas. | Abc123 y abc123 se consideran equivalentes. |
| Todos los nombres de contexto están en minúsculas cuando se usa la API. | abc123 |
Definir contextos en tiempo de diseño
Consola
- Ve a la consola de Dialogflow ES.
- Selecciona un agente.
- Selecciona Intenciones en el menú de la barra lateral de la izquierda.
- Despliega la sección Contextos de los datos de la intención.
- En los datos de la intención, haz clic en el campo Añadir contexto de salida o Añadir contexto de entrada.
- Introduce un nombre para el contexto y pulsa Retorno.
- En el caso de los contextos de salida, puedes hacer clic en el círculo de tiempo de vida y cambiarlo.

- Añade más contextos según sea necesario.
- Haz clic en Guardar.
API
Consulta la referencia de intents.
Definir contextos en el tiempo de ejecución
Fulfillment
Cuando tu servicio de webhook envíe un WebhookResponse,
define el campo outputContexts con los contextos activos que quieras.
API
La solicitud de una llamada de tipo detectIntent Sessions
contiene un campo queryParameters.contexts, que se usa para definir contextos activos.
A continuación, se muestra un ejemplo de JSON de REST de una solicitud detectIntent:
POST https://dialogflow.googleapis.com/v2/{session=projects/*/agent/sessions/*}:detectIntent
{
"queryInput": {
"text": {
"languageCode": "en-US",
"text": "I would like to add pizza to my shopping cart."
}
},
"queryParams": {
"contexts": [{
"name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
"lifespanCount": 5,
"parameters": {
"product": "Pizza",
"device-location" "@52.3377871,4.8698096,17z"
}
}]
}
}
En cualquier momento, también puedes llamar a los métodos create, delete y update en el tipo Contexts.
Obtener contextos en el tiempo de ejecución
Fulfillment
Cuando tu servicio de webhook recibe un WebhookRequest,
el campo queryResult.outputContexts contiene los contextos activos.
API
La respuesta a una llamada de tipo detectIntent de Sessions
contiene un campo queryResult.outputContexts, que proporciona la lista de contextos activos.
A continuación se muestra un ejemplo de JSON de REST de una respuesta detectIntent:
{
"responseId": "response-id",
"queryResult": {
"queryText": "I would like to add pizza to my shopping cart.",
"parameters": {
"product": "pizza"
},
"allRequiredParamsPresent": true,
"fulfillmentText": "The product has been added.",
"fulfillmentMessages": [
{
"text": {
"text": [
"The product has been added."
]
}
}
],
"outputContexts": [
{
"name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
"lifespanCount": 5,
"parameters": {
"product": "Pizza",
"device-location" "@52.3377871,4.8698096,17z"
}
}
],
"intent": {
"name": "projects/project-id/agent/intents/intent-id",
"displayName": "buy-product"
},
"intentDetectionConfidence": 0.8057143,
"languageCode": "en",
}
}
En cualquier momento, también puedes llamar a los métodos get y list del tipo Contexts.