Gestionar contextos

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

  1. Ve a la consola de Dialogflow ES.
  2. Selecciona un agente.
  3. Selecciona Intenciones en el menú de la barra lateral de la izquierda.
  4. Despliega la sección Contextos de los datos de la intención.
  5. En los datos de la intención, haz clic en el campo Añadir contexto de salida o Añadir contexto de entrada.
  6. Introduce un nombre para el contexto y pulsa Retorno.
  7. En el caso de los contextos de salida, puedes hacer clic en el círculo de tiempo de vida y cambiarlo. Vista general de la interfaz de usuario de la duración
  8. Añade más contextos según sea necesario.
  9. 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.