Proveedor estatal
El proveedor de estado te permite almacenar datos en la plataforma Vonage Cloud Runtime para que los utilicen las instancias de tu proyecto. El proveedor de estado tiene un almacén clave-valor en su raíz. Así como listas y mapas con varias operaciones que puedes realizar en ellos.
Funciones
Puede utilizar las siguientes operaciones para almacenar datos utilizando el proveedor de estado:
Inicialización del proveedor de estado
Para poder acceder al proveedor de estado desde una sesión:
const session = vcr.createSession();
const state = new State(session);
Este estado está vinculado a la sesión pasada al inicializador de estado, por lo que puede ser referido como estado de sesión. Cuando la sesión alcance su TTL, se eliminará el estado almacenado.
En llamadas posteriores a su código, usted querrá asegurarse de que está utilizando la misma sesión para tener acceso a su estado. Puedes hacerlo inicializando tu instancia desde una petición 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);
}
});
Estado de la Account
El estado de la cuenta se limita a tu cuenta de Vonage y está disponible entre todos tus proyectos y sus instancias.
const state = vcr.getAccountState();
Estado de la instancia
El estado de la instancia se asigna a su instancia y se elimina cuando se destruye la instancia. Esto permite compartir el contexto entre diferentes sesiones de la aplicación.
const state = vcr.getInstanceState();
Caso práctico
Por ejemplo, puede almacenar, recuperar y eliminar objetos en una sesión utilizando las operaciones clave-valor:
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);
}
})
O puedes utilizar el estado de instancia, y las operaciones de tabla hash para persistir los datos entre sesiones:
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);
}
})
Se trata de almacenar la información de los clientes en una tabla con el número de teléfono del cliente como clave.
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);
}
})
Utilizando el número de cliente puede recuperar la información del cliente que se almacenó anteriormente.