Sesiones
Las sesiones le permiten crear y mantener el contexto dentro de su instancia sin problemas. Tu instancia puede tener muchas sesiones, una relación de una (instancia) a muchas (sesiones). Las sesiones se crean cuando quieres usar un Vonage Cloud Runtime proveedor desde el SDK. De este modo, las sesiones se pueden restaurar en llamadas posteriores a tu instancia para acceder al contexto anterior.
Creación de una sesión
Las sesiones se pueden crear llamando a la función createSession función:
Por defecto, las sesiones tienen un TTL de 7 días, pero esto se puede cambiar proporcionando un TTL personalizado en el createSession función.
La nueva sesión se puede utilizar para acceder a los proveedores:
Llamada a funciones en el voice o messages estará ahora asociado con esta sesión. Para ello, Vonage Cloud Runtime establece un encabezado en las solicitudes con el ID de sesión.
Importante: VCR siempre ejecuta al menos dos réplicas de tu aplicación. Una sesión creada con vcr.createSession() al inicio es local a la réplica que lo creó - otras réplicas tendrán sesiones diferentes. Si necesita que el estado sea compartido por todas las réplicas, utilice vcr.getInstanceState() en lugar de new State(session). Utiliza únicamente new State(session) cuando la sesión está vinculada a una solicitud específica a través de vcr.getSessionFromRequest(req) o vcr.createSessionWithId(id).
Creación de una sesión con un TTL personalizado
Para crear una sesión con un TTL personalizado, puede proporcionar un TTL en segundos al campo createSession función:
Lo anterior creará una sesión con una duración de 1 hora.
La Sesión Global
La sesión global resulta útil para crear proveedores cuando no se conserva el contexto. Puedes acceder a la sesión global utilizando el getGlobalSession función:
Sesión Restauración
Puedes guardar una sesión para usarla más adelante y, después, recuperarla mediante un identificador de sesión:
Cuando reciba solicitudes posteriores en su aplicación, puede restaurar una sesión existente utilizando el botón getSessionFromRequest función:
getSessionFromRequest buscará una cabecera en la petición:
'x-neru-sessionid': '44092039-fa65-41a6-a9ce-97a7d1274b96',
A continuación, utilizando el ID de sesión que figura en el encabezado de la solicitud, getSessionFromRequest internamente llamará getSessionById. Esto le permite razonar sobre su código en relación con una sesión y los eventos de una sesión.
Esto simplifica las operaciones relacionadas con el estado, ya que puedes estar seguro de que el objeto de estado de la sesión solo tiene en cuenta esta sesión.
Ejemplo de restauración de sesión
Para demostrarlo, aquí hay un ejemplo de una aplicación Vonage Cloud Runtime que lleva el contexto entre una llamada telefónica entrante y un mensaje de texto del mismo usuario:
El onCall La ruta se activa cuando se recibe una llamada en la aplicación. Se crea una nueva sesión que se utiliza para configurar un detector de mensajes SMS entrantes procedentes del número que llama, así como de eventos de voz de la llamada.
La plataforma Vonage Cloud Runtime recibe webhooks entrantes de RTC, voz y mensajes en tu aplicación de Vonage, tal y como se ha configurado en vcr app configure. Si tiene un receptor para estos webhooks, se enviarán a su aplicación si el webhook entrante satisface los filtros del receptor, por ejemplo, el número de origen.
Dado que los escuchadores se configuran con una sesión, cualquier solicitud que satisfaga los filtros del escuchador se enviará a su aplicación en la ruta especificada con el parámetro x-neru-sessionid conjunto.
app.post('/onEvent', async (req, res, next) => {
if (req.body.speech != null) {
const session = vcr.getSessionFromRequest(req);
const state = new State(session); // safe: session ID comes from the request, consistent across replicas
await state.set('text', req.body.speech.results[0].text);
} else {
console.log(req.body)
}
res.sendStatus(200);
});
En el onEvent ruta, se está restaurando una sesión mediante getSessionFromRequest. El estado de esa sesión se está utilizando para almacenar los resultados de voz a texto de la llamada telefónica. Observe que no hay necesidad de utilizar ningún tipo de identificador en el estado, ya que el estado es local a esta sesión, que es la misma sesión creada cuando el usuario llamó.
Por último, una vez que el usuario envía un texto entrante para solicitar la transcripción de su llamada en onMessagese restaura de nuevo la sesión original, que tiene el estado.