Staatlicher Anbieter

Der State-Provider ermöglicht es Ihnen, Daten auf der Vonage Cloud Runtime-Plattform zu speichern, die Ihre Projektinstanzen verwenden können. Der State-Provider verfügt über einen Key-Value-Store an seinem Ursprung. Außerdem gibt es Listen und Maps mit verschiedenen Operationen, die Sie mit ihnen durchführen können.

Funktionen

Sie können die folgenden Operationen zum Speichern von Daten mit dem State Provider verwenden:

Initialisierung des State Providers

Sie können von einer Sitzung aus auf den State Provider zugreifen:

const session = vcr.createSession();
const state = new State(session);

Dieser Zustand ist auf die im Zustandsinitialisierer übergebene Sitzung beschränkt, so dass er als Sitzungszustand bezeichnet werden kann. Wenn die Sitzung ihre TTL erreicht, wird der gespeicherte Zustand gelöscht.

Bei späteren Aufrufen Ihres Codes müssen Sie sicherstellen, dass Sie dieselbe Sitzung verwenden, um Zugriff auf Ihren Status zu haben. Sie können dies tun, indem Sie Ihre Instanz bei einer eingehenden Anfrage initialisieren:

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

Account-Status

Der Account-Status ist auf Ihr Vonage-Konto beschränkt und steht allen Ihren Projekten und deren Instanzen zur Verfügung.

const state = vcr.getAccountState();

Zustand der Instanz

Der Instanzstatus ist auf Ihre Instanz beschränkt und wird gelöscht, wenn die Instanz zerstört wird. So können Sie den Kontext zwischen verschiedenen Sitzungen in Ihrer Anwendung gemeinsam nutzen.

const state = vcr.getInstanceState();

Anwendungsfall

Sie können zum Beispiel Objekte in einer Sitzung speichern, abrufen und löschen, indem Sie die Schlüssel-Wert-Operationen verwenden:

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

Oder Sie können den Instanzstatus und die Hash-Tabellen-Operationen verwenden, um Daten zwischen Sitzungen zu erhalten:

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

Hier werden die Kundeninformationen in einer Tabelle mit der Telefonnummer des Kunden als Schlüssel gespeichert.

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

Mit Hilfe der Kundennummer können Sie die zuvor gespeicherten Kundeninformationen abrufen.

curl --location --request POST '{INSTANCE_ENDPOINT}/add-customer' \ --header 'Content-Type: application/json' \ --data-raw '{ "id":"1", "name": "John", "phone": "101" }' curl --location --request GET '{INSTANCE_ENDPOINT}/on-phone-call?number=101'