Armazenamento de sessão

Você pode armazenar valores de parâmetro para um usuário específico em uma conversa no armazenamento por sessão. Sua Ação pode usar esses valores armazenados mais tarde nos comandos 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 armazenados na sessão armazenamento. Também é possível interagir com os dados no armazenamento de sessão usando chamadas de webhook. Para chamadas do webhook, o estado do armazenamento da sessão é transmitido em app.handle(). e é armazenada no objeto session.

Os dados no armazenamento de sessão expiram quando uma conversa é encerrada.

Ler e gravar dados no armazenamento da 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" para "vermelho" no armazenamento de 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 os dados no armazenamento de sessão, atribua-os a uma variável em um webhook a chamada. O exemplo a seguir recupera um valor de "exampleColor" em sessão armazenamento:

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 limpar um valor salvo anteriormente, defina o valor como null em uma chamada de webhook. O exemplo a seguir limpa o valor de "exampleColor" no armazenamento de 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

É possível referenciar valores armazenados no armazenamento de sessão em um comando. Para fazer referência ao , use a sintaxe $session.params.PARAMETER_NAME, em que PARAMETER_NAME é o nome dado no webhook quando o parâmetro foi definido.

Por exemplo, você armazenou anteriormente um valor de cor no armazenamento de sessão como o parâmetro exampleColor. Para acessar esse valor em um comando, você faz referência a esse usando $session.params.exampleColor:

JSON

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

Fazer referência a valores armazenados em condições

Também é possível referenciar valores armazenados no armazenamento de sessão em conditions. Para referenciar o valor, use o método session.params.PARAMETER_NAME sintaxe, em que PARAMETER_NAME é o nome dado no webhook quando em que o parâmetro foi definido.

Por exemplo, você armazenou anteriormente um valor de cor no armazenamento de sessão como o parâmetro exampleColor, e você quer fazer a correspondência com o valor "red" em um condição. Na condição, você faz referência ao valor armazenado usando session.params.exampleColor: Sua expressão de condição terá esta aparência:

Sintaxe da condição

session.params.exampleColor == "red"