Gerenciar contextos

Na maioria dos casos, você configura contextos no momento do projeto (ao criar um agente). Por exemplo, quando você tem uma frase de treinamento como: "Gostaria de adicionar pizza ao meu carrinho de compras".

Em alguns cenários avançados, talvez você queira escrever um código que busque e defina alguns contextos no ambiente de execução (durante uma conversa ativa). Por exemplo, você detectou um local do dispositivo e o adicionou ao contexto, para que possa se referir ao local posteriormente.

Este documento descreve como conseguir e definir contextos no momento do projeto e no ambiente de execução usando o Console do Dialogflow, a API ou fulfillment.

Nomenclatura de contexto

As regras a seguir se aplicam a contextos de nomenclatura:

Regra Examples
Use nomes alfanuméricos. mycontext1
Use - ou _ em vez de espaços. my-context-1
Os nomes não diferenciam maiúsculas de minúsculas. Abc123 e abc123 são considerados equivalentes.
Ao usar a API, todos os nomes de contexto ficam em letras minúsculas. abc123

Definir contextos no momento do projeto

Console

  1. Acesse o Console do Dialogflow ES.
  2. Selecione um agente.
  3. Selecione Intents no menu da barra lateral à esquerda.
  4. Expanda a seção Contexts dos dados do intent.
  5. Clique no campo Add output context ou Add input context nos dados do intent.
  6. Insira um nome para o contexto e pressione Return.
  7. Para contextos de saída, clique no círculo de duração e altere-a. Snapshot da IU da duração
  8. Adicione mais contextos conforme necessário.
  9. Clique em Save.

API

Consulte a referência sobre intents.

Definir contextos no ambiente de execução

Fulfillment

Quando o serviço de webhook enviar um WebhookResponse, defina o outputContexts para os contextos ativos desejados.

API

A solicitação para uma chamada detectIntent do tipo Sessionstem um campo queryParameters.contexts, que é usado para definir contextos ativos.

Veja a seguir um exemplo de REST JSON de uma solicitação 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"
        }
      }]
  }
}

A qualquer momento, você também pode chamar os métodos create, delete e update no tipo Contexts.

Buscar contextos no ambiente de execução

Fulfillment

Quando seu serviço de webhook recebe um WebhookRequest, o campo queryResult.outputContexts contém os contextos ativos.

API

A resposta a uma chamada detectIntent do tipo Sessions tem um queryResult.outputContexts, que fornece a lista de contextos ativos.

Veja a seguir um exemplo REST JSON de uma resposta 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",
  }
}

Também é possível chamar os métodos get e list no tipo Contexts a qualquer momento.