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 Sessions
tem 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.