Gestione dei contesti

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

  1. Vai alla console Dialogflow ES.
  2. Seleziona un agente.
  3. Seleziona Intenti nel menu della barra laterale a sinistra.
  4. Espandi la sezione Contesti dei dati sull'intenzione.
  5. Fai clic sul campo Aggiungi contesto di output o Aggiungi contesto di input nei dati sull'intenzione.
  6. Inserisci un nome per il contesto e premi Invio.
  7. Per i contesti di output, fai clic sul cerchio della durata e modificala, se vuoi. Istantanea dell'interfaccia utente della durata
  8. Aggiungi altri contesti in base alle esigenze.
  9. 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.