Gestione dei contesti

Nella maggior parte dei casi, i contesti vengono configurati in fase di progettazione, ovvero durante la creazione di un agente. Ad esempio, se hai una frase di addestramento come: "Vorrei aggiungere la pizza al mio carrello degli acquisti".

In alcuni scenari avanzati, potresti anche voler scrivere codice che riceve e imposta alcuni contesti in fase di runtime (durante una conversazione in tempo reale). Ad esempio, hai rilevato la posizione di un dispositivo e l'hai aggiunta al contesto, per poter fare riferimento alla posizione in un secondo momento.

Questo documento descrive come ottenere e impostare i contesti in fase di progettazione e in fase di runtime utilizzando la console Dialogflow, l'API o il fulfillment.

Denominazione del contesto

Ai contesti di denominazione si applicano le seguenti regole:

Regola Esempi
Utilizza nomi alfanumerici. mycontext1
Usa - o _ al posto degli spazi. my-context-1
I nomi non fanno distinzione tra maiuscole e minuscole. Abc123 e abc123 sono considerati equivalenti.
Tutti i nomi di contesto sono in lettere minuscole quando si utilizza l'API. abc123

Definisci i contesti in fase di progettazione

Console

  1. Vai alla console Dialogflow ES.
  2. Seleziona un agente.
  3. Seleziona Intent nel menu della barra laterale a sinistra.
  4. Espandi la sezione Contesti dei dati sull'intent.
  5. Fai clic sul campo Aggiungi contesto di output o Aggiungi contesto di input nei dati sugli intent.
  6. Inserisci un nome per il contesto e premi Invio.
  7. Per i contesti di output, facoltativamente, fai clic sul cerchio della durata e modifica la durata. Istantanea UI durata
  8. Aggiungi altri contesti in base alle tue esigenze.
  9. Fai clic su Salva.

API

Consulta la documentazione di riferimento per gli intent.

Imposta contesti in fase di runtime

Fulfillment

Quando il servizio webhook invia un elemento WebhookResponse, imposta il campo outputContexts sui contesti attivi desiderati.

API

La richiesta di una chiamata detectIntent di tipo Sessions contiene un campo queryParameters.contexts, 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 di creazione, eliminazione e aggiornamento nel tipo Contexts.

Recupero di contesti in fase di runtime

Fulfillment

Quando il servizio webhook riceve un elemento WebhookRequest, il campo queryResult.outputContexts contiene i contesti attivi.

API

La risposta a una chiamata detectIntent di tipo Sessions contiene un campo queryResult.outputContexts che fornisce l'elenco dei contesti attivi.

Di seguito è riportato un esempio 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",
  }
}

Puoi anche chiamare i metodi get e list in qualsiasi momento sul tipo Contexts.