Stockage de la session

Vous pouvez stocker les valeurs de paramètres d'un utilisateur spécifique dans une conversation dans le stockage de session. Votre action peut ensuite utiliser ces valeurs stockées ultérieurement dans des invites et des conditions, et le code de webhook peut accéder aux valeurs du stockage de session pour la conversation, si nécessaire.

Au cours d'une conversation, toutes les données collectées à l'aide de types sont stockées dans un espace de stockage de session. Vous pouvez également interagir avec les données stockées dans le stockage de session à l'aide d'appels webhook. Pour les appels de webhook, l'état du stockage de session est transmis dans une requête app.handle() et stocké dans l'objet session.

Les données stockées dans l'espace de stockage d'une session expirent à la fin d'une conversation.

Lire et écrire des données dans l'espace de stockage de session

Pour mettre à jour ou définir une nouvelle valeur dans l'espace de stockage de session, attribuez la valeur au champ params de l'objet session dans un appel webhook. L'exemple suivant définit "exampleColor" sur "red" dans le stockage de session:

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

Pour accéder aux données stockées dans le stockage de session, attribuez-les à une variable dans un appel webhook. L'exemple suivant récupère une valeur de "exampleColor" dans le stockage de session:

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

Pour effacer une valeur précédemment enregistrée, définissez-la sur null dans un appel webhook. L'exemple suivant efface la valeur de "exampleColor" dans le stockage de session:

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

Référencer des valeurs stockées dans des requêtes

Vous pouvez référencer les valeurs stockées dans le stockage de session dans une invite. Pour référencer la valeur, utilisez la syntaxe $session.params.PARAMETER_NAME, où PARAMETER_NAME est le nom donné dans le webhook lorsque le paramètre a été défini.

Par exemple, vous avez précédemment stocké une valeur de couleur dans le stockage de session en tant que paramètre exampleColor. Pour accéder à cette valeur dans une invite, vous devez la référencer à l'aide de $session.params.exampleColor:

JSON

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

Référencer des valeurs stockées dans des conditions

Vous pouvez également référencer des valeurs stockées dans le stockage de session dans des conditions. Pour référencer cette valeur, utilisez la syntaxe session.params.PARAMETER_NAME, où PARAMETER_NAME est le nom donné dans le webhook lorsque le paramètre a été défini.

Par exemple, vous avez précédemment stocké une valeur de couleur dans le stockage de sessions en tant que paramètre exampleColor et vous souhaitez l'associer à la valeur "red" dans une condition. Dans votre condition, vous référencez la valeur stockée à l'aide de session.params.exampleColor. Votre expression de condition se présente alors comme suit:

Syntaxe de la condition

session.params.exampleColor == "red"