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
.