En la mayoría de los casos, los contextos se configuran en el momento del diseño (cuando compilas un agente). Por ejemplo, cuando tengas una frase de entrenamiento como: “Me gustaría agregar una pizza a mi carrito de compras”.
En algunas situaciones avanzadas, también se recomienda escribir un código que obtenga y establezca algunos contextos en el entorno de ejecución (durante una conversación en vivo). Un ejemplo de ello sería que detectaste la ubicación del dispositivo y la agregaste al contexto, por lo que puedes consultar la ubicación en otro momento.
En este documento se describe cómo obtener y establecer contextos en el tiempo de ejecución y de diseño mediante la consola de Dialogflow, la API o la entrega.
Asigna un nombre al contexto
Las siguientes reglas se aplican a la asignación de nombres de los contextos:
Regla | Ejemplos |
---|---|
Usa nombres alfanuméricos. | mycontext1 |
Use - o _ en lugar de espacios. |
my-context-1 |
No se distinguen mayúsculas de minúsculas. | Abc123 y abc123 se consideran equivalentes. |
Los nombres de los contextos están en minúscula cuando se usa la API. | abc123 |
Establece contextos en el momento del diseño
Console
- Ve a la consola de Dialogflow ES.
- Selecciona un agente.
- En el menú de la barra lateral izquierda, selecciona Intents.
- Expande la sección Contexts (Contextos) de los datos del intent.
- Haz clic en el campo Add output context (Agregar contexto de salida) o Add input context (Agregar contexto de entrada) de los datos del intent.
- Ingresa un nombre para el contexto y presiona Return (Volver).
- Para los contextos de salida, puedes hacer clic en el círculo de la vida útil a fin de cambiarla.
- Agrega más contextos, según sea necesario.
- Haz clic en Save (Guardar).
API
Consulta la documentación de referencia sobre los intents.
Establece contextos en el tiempo de ejecución
Fulfillment
Cuando el servicio del webhook envíe una WebhookResponse
, establece el campo outputContexts
en los contextos activos que desees.
API
La solicitud de una llamada detectIntent
de tipo Sessions
tiene un campo queryParameters.contexts
, que se usa para establecer contextos activos.
El siguiente es 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 para el tipo Contexts
.
Obtén contextos en el tiempo de ejecución
Fulfillment
Cuando el servicio de webhook recibe una WebhookRequest
, los contextos activos se muestran en el campo queryResult.outputContexts
.
API
La respuesta a una llamada detectIntent
de tipo Sessions
tiene un campo queryResult.outputContexts
, que proporciona la lista de contextos activos.
El siguiente es 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 para el tipo Contexts
.