Nella maggior parte dei casi, configuri i contesti in fase di progettazione (quando crei un agente). Ad esempio, quando hai una frase di addestramento come: "Vorrei aggiungere una pizza al mio carrello degli acquisti".
In alcuni scenari avanzati, potresti anche voler scrivere codice che ottenga e imposti alcuni contesti in fase di esecuzione (durante una conversazione in tempo reale). Ad esempio, potresti aver rilevato la posizione di un dispositivo e averla aggiunta al contesto, in modo da poter fare riferimento alla posizione in un secondo momento.
Questo documento descrive come ottenere e impostare i contesti in fase di progettazione e di esecuzione utilizzando la console Dialogflow, l'API o il completamento.
Denominazione dei contesti
Ai contesti di denominazione si applicano le seguenti regole:
Regola | Esempi |
---|---|
Utilizza nomi alfanumerici. | mycontext1 |
Utilizza - o _ anziché spazi. |
my-context-1 |
I nomi non sono sensibili alle maiuscole. | Abc123 e abc123 sono considerati equivalenti. |
Tutti i nomi dei contesti sono in minuscolo quando si utilizza l'API. | abc123 |
Impostare i contesti in fase di progettazione
Console
- Vai alla console Dialogflow ES.
- Seleziona un agente.
- Seleziona Intenti nel menu della barra laterale a sinistra.
- Espandi la sezione Contesti dei dati sull'intenzione.
- Fai clic sul campo Aggiungi contesto di output o Aggiungi contesto di input nei dati sull'intenzione.
- Inserisci un nome per il contesto e premi Invio.
- Per i contesti di output, fai clic sul cerchio della durata e modificala, se vuoi.
- Aggiungi altri contesti in base alle esigenze.
- Fai clic su Salva.
API
Consulta la documentazione di riferimento sugli intent.
Impostare i contesti in fase di runtime
Fulfillment
Quando il servizio webhook invia un messaggio WebhookResponse
, imposta il campo outputContexts
sui contesti attivi desiderati.
API
La richiesta di una chiamata di tipo detectIntent
Sessions
contiene un campo queryParameters.contexts
,
utilizzato per impostare i contesti attivi.
Di seguito è riportato un esempio di JSON REST di una richiesta 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" } }] } }
In qualsiasi momento,
puoi anche chiamare i metodi create, delete e update sul
tipo Contexts
.
Ottenere i contesti in fase di esecuzione
Fulfillment
Quando il servizio webhook riceve un messaggio WebhookRequest
, il campo queryResult.outputContexts
contiene i contesti attivi.
API
La risposta a una chiamata di tipo detectIntent
Sessions
contiene un campo queryResult.outputContexts
, che fornisce l'elenco dei contesti attivi.
Di seguito è riportato un esempio di risposta JSON REST di 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", } }
In qualsiasi momento,
puoi anche chiamare i metodi get e list sul
tipo
Contexts
.