Configure seu servidor de back-end

Ao trabalhar com o Vonage Client SDK, seu servidor de back-end precisará lidar com alguns componentes essenciais, principalmente responder aos webhooks da Vonage e criar Usuários e gerando JWTs para esses usuários. Você pode saber mais sobre esses diferentes componentes e como eles funcionam em conjunto no Guia para a criação do seu aplicativo de Applications.

Para ver uma implementação pré-configurada dos Concepts discutidos nos guias, você pode editar ou implantar o Modelo de servidor de exemplo do Client SDK com o Code Hub.

Este guia utilizará o Node.JS, o SDK JWT da Vonage, e o SDK do servidor Vonage. Mas o servidor de back-end do seu Client SDK pode ser escrito em qualquer língua.

Você pode instalar os SDKs usando o NPM:

npm install @vonage/jwt @vonage/server-sdk

Criação de usuários

Agora que você já instalou os SDKs, pode criar usuários:

import { Vonage } from "@vonage/server-sdk";
import { tokenGenerate } from '@vonage/jwt';

const vonage = new Vonage(
    {
      applicationId: process.env.API_APPLICATION_ID,
      privateKey: process.env.PRIVATE_KEY
    }
);

async function createUser(username) {
    try {
        const userResponse = await vonage.users.createUser({
            name: username,
            displayName: username
        });
    } catch (e) {
        console.log(e);
    }
}

Você pode ler mais sobre os parâmetros de solicitação e as respostas para a entidade “Usuários” no Especificação da API.

Gerar JWTs para o Client SDK

Depois de criar os usuários, agora você pode gerar um JWT para cada um deles. Esse é o JWT que o Client SDK espera receber quando você chamar createSession. Para criar um JWT para um usuário, serão necessários caminhos de ACL e um sub reivindicação. Os caminhos ACL são usados para restringir a quais pontos finais o JWT pode acessar.

NOTA: As ACLs controlam quais ações o usuário pode realizar. Você pode alterar a Caminhos do ACL para restringir permissões.

function generateUserJWT(username) {
    const aclPaths =  {
        "/*/users/**": {},
        "/*/conversations/**": {},
        "/*/sessions/**": {},
        "/*/devices/**": {},
        "/*/image/**": {},
        "/*/media/**": {},
        "/*/push/**": {},
        "/*/knocking/**": {},
        "/*/legs/**": {}
    };

    return tokenGenerate(applicationId, privateKey, {
        subject: username,
        acl: aclPaths
    });
}

Você pode disponibilizar um endpoint no seu servidor que retornará esse token gerado aos seus aplicativos Client SDK para Android, iOS e Web Client:

app.post('/getJWT', async (req, res) => {
    const username = req.body.username;
    try {
        // Perform authorization and validation
        res.json(
            {
                jwt: generateUserJWT(username)
            }
        );
    } catch(e) {
        console.log(e);
    }
});

Tratamento de webhooks recebidos

Quando o serverCall Quando a função é utilizada em um aplicativo Client SDK para Android, iOS e Web Client, a URL definida como “URL de resposta” no seu aplicativo Vonage receberá uma solicitação de entrada. Você pode saber mais sobre o processo na Guia “Faça uma ligação”.

Seu servidor deve responder com um Objeto de controle de chamadas para controlar o fluxo da chamada. Por exemplo, para conectar uma chamada recebida a uma usuária chamada Alice, você deveria retornar um Objeto de Controle de Chamada semelhante ao apresentado abaixo.

[
  {
    "action": "connect",
    "from": "447700900000",
    "endpoint": [
      {
        "type": "app",
        "user": "Alice"
      }
    ]
  }
]

Tem alguma dúvida?

Caso tenha mais alguma dúvida, problema ou sugestão, entre em contato conosco pelo devrel@vonage.com ou o Slack da Comunidade de Desenvolvedores da Vonage.