État fournisseur
Le fournisseur d'état vous permet de stocker des données sur la plateforme Vonage Cloud Runtime pour que les instances de votre projet puissent les utiliser. Le fournisseur d'état dispose d'un magasin clé-valeur à sa racine. Ainsi que des listes et des cartes avec diverses opérations que vous pouvez effectuer sur eux.
Fonctions
Vous pouvez utiliser les opérations suivantes pour stocker des données à l'aide du fournisseur d'État :
Initialisation du fournisseur d'État
Il est possible d'accéder au fournisseur d'état à partir d'une session :
const session = vcr.createSession();
const state = new State(session);
Cet état est lié à la session passée dans l'initialisateur d'état, et peut donc être appelé état de session. Lorsque la session atteint son TTL, l'état stocké est supprimé.
Lors des appels ultérieurs à votre code, vous devrez vous assurer que vous utilisez la même session pour accéder à votre état. Vous pouvez le faire en initialisant votre instance à partir d'une requête entrante :
app.post("/onMessage", async (req, res, next) => {
try {
const session = vcr.getSessionFromRequest(req);
const state = new State(session);
// Handle incoming message
} catch (error) {
next(error);
}
});
État du compte
L'état du compte est limité à votre compte Vonage et est disponible entre tous vos projets et leurs instances.
const state = vcr.getAccountState();
État de l'instance
L'état de l'instance est limité à votre instance et supprimé lorsque l'instance est détruite. Cela vous permet de partager le contexte entre les différentes sessions de votre application.
const state = vcr.getInstanceState();
Cas d'utilisation
Par exemple, vous pouvez stocker, récupérer et supprimer des objets dans une session à l'aide des opérations clé-valeur :
app.post("/key-value", async (req, res, next) => {
try {
const session = vcr.createSession();
const state = new State(session);
// store object
await state.set("test_obj", { "foo": bar });
// retrieve object
const obj2 = await state.get("test_obj");
// delete object
await state.del("test_obj");
} catch (error) {
next(error);
}
})
Vous pouvez également utiliser l'état de l'instance et les opérations de la table de hachage pour conserver les données entre les sessions :
app.post("/add-customer", async (req, res, next) => {
try {
const instanceState = vcr.getInstanceState();
const customer = req.body;
await instanceState.mapSet("customers", { [customer.phone]: JSON.stringify(customer) });
res.sendStatus(200);
} catch (error) {
next(error);
}
})
Il s'agit de stocker les informations relatives aux clients dans un tableau dont la clé est le numéro de téléphone du client.
app.get("/on-phone-call", async (req, res, next) => {
try {
const instanceState = vcr.getInstanceState();
const number = req.query.number;
const customer = await instanceState.mapGetValue("customers", number);
res.send(customer.name);
} catch (error) {
next(error);
}
})
En utilisant le numéro du client, vous pouvez récupérer les informations sur le client qui ont été stockées précédemment.