Almacenamiento de sesión

Puedes almacenar valores de parámetros para un usuario específico dentro de una conversación en el almacenamiento de sesión. Luego, tu Acción puede usar esos valores almacenados en los mensajes y las condiciones, y el código de webhook puede acceder a los valores en el almacenamiento de la sesión para la conversación cuando sea necesario.

Durante una conversación, todos los datos recopilados mediante los tipos se almacenan en el almacenamiento de la sesión. También puedes interactuar con los datos en el almacenamiento de sesión mediante llamadas de webhook. Para las llamadas de webhook, el estado del almacenamiento de la sesión se pasa en una solicitud app.handle() y se almacena en el objeto session.

Los datos almacenados en el almacenamiento de la sesión vencen cuando finaliza una conversación.

Lee y escribe datos en el almacenamiento de sesión

Para actualizar o establecer un valor nuevo en el almacenamiento de la sesión, asigna el valor al campo params del objeto session en una llamada de webhook. En el siguiente ejemplo, se configura “exampleColor” como “red” en el almacenamiento de sesión:

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 acceder a los datos almacenados en el almacenamiento de la sesión, asígnalos a una variable en una llamada de webhook. En el siguiente ejemplo, se recupera un valor de “exampleColor” en el almacenamiento de la sesión:

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 borrar un valor guardado previamente, configúralo como null en una llamada de webhook. En el siguiente ejemplo, se borra el valor de “exampleColor” en el almacenamiento de la sesión:

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
    }
  }
}
    

Cómo hacer referencia a valores almacenados en los mensajes

Puedes hacer referencia a valores almacenados en el almacenamiento de sesión en un mensaje. Para hacer referencia al valor, usa la sintaxis $session.params.PARAMETER_NAME, en la que PARAMETER_NAME es el nombre dado en el webhook cuando se configuró el parámetro.

Por ejemplo, antes almacenaste un valor de color en el almacenamiento de la sesión como el parámetro exampleColor. Para acceder a ese valor en un mensaje, debes hacer referencia a ese valor con $session.params.exampleColor:

JSON

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

Haz referencia a valores almacenados en condiciones

También puedes hacer referencia a valores almacenados en el almacenamiento de sesión en conditions. Para hacer referencia al valor, usa la sintaxis session.params.PARAMETER_NAME, en la que PARAMETER_NAME es el nombre dado en el webhook cuando se configuró el parámetro.

Por ejemplo, antes almacenaste un valor de color en el almacenamiento de sesión como el parámetro exampleColor y deseas hacerlo coincidir con el valor "rojo" en una condición. En tu condición, debes hacer referencia al valor almacenado mediante session.params.exampleColor. Tu expresión de condición se ve de la siguiente manera:

Sintaxis de condiciones

session.params.exampleColor == "red"