Gestione dei contesti

Nella maggior parte dei casi, i contesti vengono configurati in fase di progettazione (quando crei un agente). Ad esempio, quando 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 recupera e imposta alcuni contesti in fase di runtime (durante una conversazione live). Ad esempio, potresti aver rilevato la posizione di un dispositivo e l'hai aggiunta al contesto, in modo da potervi fare riferimento in un secondo momento.

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

Denominazione dei contesti

Le seguenti regole si applicano alla denominazione dei contesti:

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.
Quando utilizzi l'API, tutti i nomi dei contesti sono in minuscolo. abc123

Impostare 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 dell'intent.
  5. Fai clic sul campo Aggiungi contesto di output o Aggiungi contesto di input nei dati dell'intent.
  6. Inserisci un nome per il contesto e premi Invio.
  7. Per i contesti di output, fai clic sul cerchio della durata e, se vuoi, modificala. Istantanea dell'interfaccia utente della durata
  8. Aggiungi altri contesti, se necessario.
  9. Fai clic su Salva.

API

Consulta il riferimento agli intent.

Impostare i contesti in fase di runtime

Fulfillment

Quando il tuo servizio webhook invia a WebhookResponse, imposta il outputContexts campo sui contesti attivi desiderati.

API

La richiesta di una Sessions tipo detectIntent chiamata contiene un campo queryParameters.contexts, utilizzato per impostare i contesti attivi.

Di seguito è riportato un esempio di richiesta detectIntent in formato JSON REST:

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 Contexts tipo.

Recuperare i contesti in fase di runtime

Fulfillment

Quando il tuo servizio webhook riceve a WebhookRequest, il campo queryResult.outputContexts contiene i contesti attivi.

API

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

Di seguito è riportato un esempio di risposta detectIntent in formato JSON REST:

{
  "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 Contexts tipo.