Você pode armazenar valores de parâmetro para um usuário específico em uma conversa no armazenamento de sessão. A Ação pode usar esses valores armazenados mais tarde em solicitações e condições, e o código do webhook pode acessar valores no armazenamento de sessão para a conversa quando necessário.
Durante uma conversa, todos os dados coletados usando types são mantidos no armazenamento da sessão. Também é possível interagir com dados no armazenamento de sessão usando chamadas de webhook.
Para chamadas de webhook, o estado do armazenamento da sessão é transmitido em uma solicitação app.handle()
e armazenado no objeto session
.
Os dados armazenados no armazenamento da sessão expiram quando uma conversa termina.
Ler e gravar dados no armazenamento de sessão
Para atualizar ou definir um novo valor no armazenamento de sessão, atribua o valor ao campo
params
do objeto session
em uma chamada de webhook. O exemplo a seguir
define "exampleColor" como "red" no armazenamento da sessão:
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 } } }
Para acessar dados no armazenamento de sessão, atribua-os a uma variável em uma chamada de webhook. O exemplo a seguir recupera um valor de "exampleColor" no armazenamento da sessão:
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 } } }
Para remover um valor salvo, defina-o como null
em uma chamada de webhook.
O exemplo a seguir limpa o valor de "exampleColor" no armazenamento da sessão:
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 } } }
Referenciar valores armazenados em prompts
Você pode referenciar valores armazenados no armazenamento da sessão em um comando. Para fazer referência ao
valor, use a sintaxe $session.params.PARAMETER_NAME
, em que
PARAMETER_NAME
é o nome fornecido no webhook quando o parâmetro
foi definido.
Por exemplo, você já armazenou um valor de cor no armazenamento da sessão como o parâmetro exampleColor
. Para acessar esse valor em um prompt, referencie-o
usando $session.params.exampleColor
:
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Your favorite color is $session.params.exampleColor." }] } }] }
Referenciar valores armazenados em condições
Também é possível referenciar valores armazenados no armazenamento da sessão em conditions. Para
fazer referência ao valor, use a sintaxe session.params.PARAMETER_NAME
, em que PARAMETER_NAME
é o nome fornecido no webhook quando
o parâmetro foi definido.
Por exemplo, você armazenou anteriormente um valor de cor no armazenamento da sessão como o
parâmetro exampleColor
e quer fazer a correspondência dele com o valor "red" em uma
condição. Na sua condição, você faz referência ao valor armazenado usando
session.params.exampleColor
. Sua expressão de condição ficará assim:
Sintaxe da condição
session.params.exampleColor == "red"