Administra contextos

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

Consola

  1. Ve a la consola de Dialogflow ES.
  2. Selecciona un agente.
  3. En el menú de la barra lateral izquierda, selecciona Intents.
  4. Expande la sección Contexts (Contextos) de los datos del intent.
  5. 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.
  6. Ingresa un nombre para el contexto y presiona Return (Volver).
  7. Para los contextos de salida, puedes hacer clic en el círculo de la vida útil a fin de cambiarla.Instantánea de la IU de vida útil
  8. Agrega más contextos, según sea necesario.
  9. Haz clic en 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.