Sessões
As sessões permitem que você crie e mantenha o contexto dentro da sua instância de maneira integrada. Sua instância pode ter várias sessões, formando uma relação de um (instância) para muitos (sessões). As sessões são criadas quando você deseja usar o Vonage Cloud Runtime prestador a partir do SDK. Assim, as sessões podem ser restauradas em chamadas subsequentes à sua instância para acessar o contexto anterior.
Criação de uma sessão
É possível criar sessões chamando a função createSession função:
Por padrão, as sessões têm um TTL de 7 dias, mas isso pode ser alterado especificando um TTL personalizado no createSession função.
A nova sessão pode ser usada para acessar provedores:
Chamando funções no voice ou messages O objeto agora estará associado a esta sessão. Isso é feito pelo Vonage Cloud Runtime, que define um cabeçalho nas solicitações com o ID da sessão.
Importante: O VCR sempre executa pelo menos duas réplicas do seu aplicativo. Uma sessão criada com vcr.createSession() na inicialização é específica da réplica que a criou — outras réplicas terão sessões diferentes. Se você precisar de um estado compartilhado entre todas as réplicas, use vcr.getInstanceState() em vez de new State(session). Use apenas new State(session) quando a sessão está vinculada a uma solicitação específica por meio de vcr.getSessionFromRequest(req) ou vcr.createSessionWithId(id).
Criação de uma sessão com um TTL personalizado
Para criar uma sessão com um TTL personalizado, você pode especificar um TTL em segundos para o createSession função:
O código acima criará uma sessão com duração de 1 hora.
A Sessão Global
A sessão global é útil para criar provedores quando não se deseja preservar o contexto. É possível acessar a sessão global usando o getGlobalSession função:
Restauração da sessão
Você pode salvar uma sessão para usar mais tarde e, depois, restaurá-la a partir de um ID de sessão:
Quando houver novas solicitações recebidas em seu aplicativo, você poderá restaurar uma sessão existente usando o getSessionFromRequest função:
getSessionFromRequest procurará um cabeçalho na solicitação:
Em seguida, utilizando o ID da sessão no cabeçalho da solicitação, getSessionFromRequest retorno de chamada interna getSessionById. Isso permite que você analise seu código em relação a uma sessão e aos eventos que ocorrem nela.
Isso simplifica as operações de estado, já que você pode ter certeza de que o objeto de estado da sessão está ciente apenas dessa sessão.
Exemplo de restauração de sessão
Para ilustrar, eis um exemplo de um aplicativo do Vonage Cloud Runtime que mantém o contexto entre uma chamada telefônica recebida e uma mensagem de texto do mesmo usuário:
O onCall A rota é chamada quando há uma chamada recebida no aplicativo. É criada uma nova sessão, que é usada para configurar um ouvinte para mensagens SMS recebidas do número que está ligando, bem como para eventos de voz da chamada.
A plataforma Vonage Cloud Runtime recebe webhooks de RTC, voz e mensagens para o seu aplicativo Vonage, conforme configurado por vcr app configure. Se você tiver um ouvinte para esses webhooks, eles serão enviados ao seu aplicativo caso o webhook recebido atenda aos filtros definidos no ouvinte, por exemplo, o número de origem.
Como os ouvintes estão configurados com uma sessão, quaisquer solicitações que atendam aos filtros do ouvinte serão enviadas ao seu aplicativo na rota especificada com o x-neru-sessionid definido.
No onEvent na rota, uma sessão está sendo restaurada por meio de getSessionFromRequest. O estado dessa sessão está sendo usado para armazenar os resultados da conversão de voz em texto da ligação telefônica. Observe que não foi necessário usar nenhum tipo de identificador no estado, já que ele é local a essa sessão, que é a mesma sessão criada quando o usuário ligou.
Por fim, assim que o usuário enviar uma mensagem de texto solicitando a transcrição de sua ligação em onMessage, a sessão original é restaurada novamente, com o estado que ela continha.