Armazenamento de sessão

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"