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 | Exemplos |
|---|---|
| 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
- Acesse o console do Dialogflow ES.
- Selecione um agente.
- Selecione Intents no menu da barra lateral à esquerda.
- Expanda a seção Contexts dos dados do intent.
- Clique no campo Add output context ou Add input context nos dados do intent.
- Insira um nome para o contexto e pressione Return.
- Para contextos de saída, clique no círculo de duração e altere-a.

- Adicione mais contextos conforme necessário.
- 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.