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"