Nella maggior parte dei casi, configuri i contesti in fase di progettazione (quando crei un agente). Ad esempio, se 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 recupera e imposta alcuni contesti in fase di runtime (durante una conversazione in tempo reale). Ad esempio, potresti aver rilevato la posizione di un dispositivo e l'hai 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 runtime utilizzando la console Dialogflow, l'API o l'adempimento.
Denominazione del contesto
Ai contesti di denominazione si applicano le seguenti regole:
| Regola | Esempi |
|---|---|
| Utilizza nomi alfanumerici. | mycontext1 |
Utilizza - o _ anziché gli spazi. |
my-context-1 |
| I nomi non sono sensibili alle maiuscole. | Abc123 e abc123 sono considerati equivalenti. |
| Quando utilizzi l'API, tutti i nomi dei contesti sono in minuscolo. | abc123 |
Impostare i contesti in fase di progettazione
Console
- Vai alla console Dialogflow ES.
- Seleziona un agente.
- Seleziona Intent nel menu della barra laterale a sinistra.
- Espandi la sezione Contesti dei dati sugli intent.
- Fai clic sul campo Aggiungi contesto di output o Aggiungi contesto di input nei dati di intent.
- Inserisci un nome per il contesto e premi Invio.
- Per i contesti di output, fai clic facoltativamente sul cerchio della durata e modificala.

- Aggiungi altri contesti in base alle esigenze.
- Fai clic su Salva.
API
Consulta i riferimenti agli intent.
Impostare i contesti al runtime
Fulfillment
Quando il servizio webhook invia un
WebhookResponse,
imposta il campo outputContexts sui contesti attivi che preferisci.
API
La richiesta di una
chiamata di tipo Sessions detectIntent contiene un campo queryParameters.contexts,
che viene utilizzato per impostare i contesti attivi.
Di seguito è riportato un esempio 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 runtime
Fulfillment
Quando il servizio webhook riceve un
WebhookRequest,
il campo queryResult.outputContexts contiene i contesti attivi.
API
La risposta a una chiamata di tipo Sessions detectIntent contiene un campo queryResult.outputContexts, che fornisce l'elenco dei contesti attivi.
Di seguito è riportato un esempio di JSON REST di una risposta 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.