Spazio di archiviazione della sessione

Puoi archiviare i valori dei parametri per un utente specifico all'interno di una conversazione nello spazio di archiviazione della sessione. L'Azione può utilizzare i valori archiviati in un secondo momento nei prompt e nelle condizioni e il codice webhook può accedere ai valori nello spazio di archiviazione di sessione per la conversazione, se necessario.

Durante una conversazione, tutti i dati raccolti utilizzando i tipi vengono archiviati nello spazio di archiviazione di sessione. Puoi anche interagire con i dati nello spazio di archiviazione della sessione utilizzando le chiamate webhook. Per le chiamate webhook, lo stato dello spazio di archiviazione della sessione viene passato in una richiesta app.handle() e archiviato nell'oggetto session.

I dati archiviati nello spazio di archiviazione della sessione scadono al termine di una conversazione.

Lettura e scrittura di dati nello spazio di archiviazione della sessione

Per aggiornare o impostare un nuovo valore nello spazio di archiviazione delle sessioni, assegnalo al campo params dell'oggetto session in una chiamata webhook. Nell'esempio seguente, "exampleColor" viene impostato su "red" nello spazio di archiviazione di sessione:

Node.js

// Assign color to session storage
app.handle('storeColor', conv => {
  let color = 'red';
  conv.session.params.exampleColor = color;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "12345678901234567890",
      "params": {
        "exampleColor": "red"
      }
    },
    "prompt": {
      "override": false
    }
  }
}
    

Per accedere ai dati archiviati nello spazio di archiviazione di sessione, assegnali a una variabile in una chiamata webhook. L'esempio seguente recupera un valore da "exampleColor" nello spazio di archiviazione della sessione:

Node.js

// Retrieve color from session storage
app.handle('getStoredColor', conv => {
  let color = conv.session.params.exampleColor;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "12345678901234567890",
      "params": {
        "exampleColor": "red"
      }
    },
    "prompt": {
      "override": false
    }
  }
}
    

Per cancellare un valore salvato in precedenza, impostalo su null in una chiamata webhook. L'esempio seguente cancella il valore di "exampleColor" nello spazio di archiviazione di sessione:

Node.js

// Clear color from session storage
app.handle('clearStoredColor', conv => {
  conv.session.params.exampleColor = null;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "12345678901234567890",
      "params": {}
    },
    "prompt": {
      "override": false
    }
  }
}
    

Fare riferimento ai valori archiviati all'interno dei prompt

Puoi fare riferimento ai valori memorizzati nello spazio di archiviazione di sessione in un messaggio. Per fare riferimento al valore, utilizza la sintassi $session.params.PARAMETER_NAME, dove PARAMETER_NAME è il nome assegnato nel webhook quando è stato impostato il parametro.

Ad esempio, hai precedentemente archiviato un valore di colore nello spazio di archiviazione di sessione come parametro exampleColor. Per accedere a quel valore in un prompt, devi fare riferimento a tale valore utilizzando $session.params.exampleColor:

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Your favorite color is $session.params.exampleColor."
      }]
    }
  }]
}
    

Fare riferimento ai valori archiviati nelle condizioni

Puoi anche fare riferimento ai valori memorizzati nello spazio di archiviazione di sessione in conditions. Per fare riferimento al valore, utilizza la sintassi session.params.PARAMETER_NAME, dove PARAMETER_NAME è il nome assegnato nel webhook quando è stato impostato il parametro.

Ad esempio, in precedenza hai archiviato un valore di colore nello spazio di archiviazione di sessione come parametro exampleColor e vuoi che corrisponda al valore "red" in una condizione. Nella condizione, fai riferimento al valore archiviato utilizzando session.params.exampleColor. L'espressione della condizione sarà quindi simile alla seguente:

Sintassi delle condizioni

session.params.exampleColor == "red"