Na maioria dos casos, configura os contextos no momento da conceção (quando está a criar um agente). Por exemplo, quando tem uma expressão de treino como: "Quero adicionar pizza ao meu carrinho de compras."
Em alguns cenários avançados, também pode querer escrever código que obtenha e defina alguns contextos em tempo de execução (durante uma conversa em direto). Um exemplo pode ser ter detetado a localização de um dispositivo e tê-la adicionado ao contexto, para poder consultar a localização num momento posterior.
Este documento descreve como obter e definir contextos no momento da conceção e no tempo de execução através da consola do Dialogflow, da API ou do processamento.
Nomenclatura de contexto
Aplicam-se as seguintes regras aos contextos de nomenclatura:
Regra | Exemplos |
---|---|
Use nomes alfanuméricos. | mycontext1 |
Use - ou _ em vez de espaços. |
my-context-1 |
Os nomes não são sensíveis a maiúsculas e minúsculas. | Abc123 e abc123 são considerados equivalentes. |
Todos os nomes de contexto estão em minúsculas quando usa a API. | abc123 |
Defina contextos no momento da conceção
Consola
- Aceda à consola do Dialogflow ES.
- Selecione um agente.
- Selecione Intenções no menu da barra lateral esquerda.
- Expanda a secção Contextos dos dados de intenção.
- Clique no campo Adicionar contexto de saída ou Adicionar contexto de entrada nos dados de intenção.
- Introduza um nome para o contexto e prima Return.
- Para contextos de saída, opcionalmente, clique no círculo de duração e altere a duração.
- Adicione mais contextos conforme necessário.
- Clique em Guardar.
API
Consulte a referência de intenções.
Defina contextos no tempo de execução
Fulfillment
Quando o seu serviço de webhook envia um
WebhookResponse
,
defina o campo outputContexts
para os contextos ativos pretendidos.
API
O pedido de uma chamada do tipo Sessions
detectIntent
contém um campo queryParameters.contexts
, que é usado para definir contextos ativos.
Segue-se um exemplo de JSON REST de um pedido 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" } }] } }
Em qualquer altura, também pode chamar os métodos de criação, eliminação e atualização no tipo Contexts
.
Obtenha contextos no tempo de execução
Fulfillment
Quando o seu serviço de webhook recebe um
WebhookRequest
,
o campo queryResult.outputContexts
contém os contextos ativos.
API
A resposta a uma chamada do tipo Sessions
contém um campo queryResult.outputContexts
, que fornece a lista de contextos ativos.detectIntent
Segue-se um exemplo de JSON REST 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", } }
Em qualquer altura,
também pode chamar os métodos get e list no tipo
Contexts
.