Kotlin

Criar um servidor de webhooks

Quando uma chamada recebida é atendida, a Vonage envia uma solicitação para uma URL de acesso público de sua escolha — chamamos isso de answer_url. Você precisa criar um servidor de webhook capaz de receber essa solicitação e retornar um NCCO que contém um connect ação que encaminhará a chamada para o do usuário app. Para isso, basta extrair o usuário de destino do to parâmetro de consulta e devolvê-lo na sua resposta.

Novo projeto

Crie um novo diretório de projeto no local de sua escolha e acesse-o:

mkdir vonage-tutorial cd vonage-tutorial

Dentro da pasta, inicialize um novo projeto Node.js executando este comando:

npm init -y

Adicionar dependências

Em seguida, instale as dependências necessárias:

npm install express localtunnel --save

Crie o arquivo do servidor

Dentro da pasta do seu projeto, crie um arquivo chamado server.js e adicione o código conforme mostrado abaixo — certifique-se de substituir SUBDOMAIN com um valor real. O valor utilizado passará a fazer parte das URLs que você definirá como webhooks na próxima etapa.

'use strict';

const subdomain = 'SUBDOMAIN';

const express = require('express')
const app = express();
app.use(express.json());

app.get('/voice/answer', (req, res) => {
  console.log('NCCO request:');
  console.log(`  - caller: ${req.query.from_user}`);
  console.log(`  - callee: ${req.query.to}`);
  console.log('---');
  let ncco = [{"action": "talk", "text": "No destination user - hanging up"}];
  const username = req.query.to;
  if (username) {
    ncco = [
      {
        "action": "talk",
        "text": "Connecting you to " + username
      },
      {
        "action": "connect",
        "endpoint": [
          {
            "type": "app",
            "user": username
          }
        ]
      }
    ]
  }
  res.json(ncco);
});

app.all('/voice/event', (req, res) => {
  console.log('EVENT:');
  console.dir(req.body);
  console.log('---');
  res.sendStatus(200);
});

if(subdomain == "SUBDOMAIN") {
  console.log('\n\t🚨🚨🚨 Please change the SUBDOMAIN value');
  return false;
}
app.listen(3000);

const localtunnel = require('localtunnel');
(async () => {
  const tunnel = await localtunnel({ 
      subdomain: subdomain, 
      port: 3000
    });
  console.log(`App available at: ${tunnel.url}`);
})();

NOTA: Lembre-se de substituir SUBDOMAIN com uma sequência aleatória de sua escolha, com entre 4 e 20 caracteres alfanuméricos (letras e números, sem sublinhados nem traços).

O código do servidor acima é composto por duas partes:

O servidor Express

A primeira parte cria um Express servidor e o disponibiliza localmente na porta 3000. O servidor disponibiliza dois caminhos:

  1. /voice/answer é o answer_url que mencionamos acima. Ele retorna um JSON resposta contendo o usuário de destino da chamada.

    Observe que o user é extraído do req.query.to parâmetro que a Vonage está enviando como parte da solicitação. O NCCO, gerado dinamicamente, então encaminha a chamada para o telefone de destino usando um connect ação.

  2. O segundo, /voice/event, você definirá como destino para que a Vonage o notifique sobre tudo o que estiver acontecendo durante a chamada — chamamos isso de event_url.

O localtunnel integração

A segunda parte do código do servidor acima expõe o Express servidor para que ele fique acessível aos servidores da Vonage.

NOTA: localtunnel é uma biblioteca JavaScript que expõe seu localhost para o mundo, facilitando testes e compartilhamento! Não é preciso mexer no DNS nem fazer implantação para que outras pessoas testem suas alterações.

Inicie o servidor

Agora você pode iniciar o servidor executando, no terminal, o seguinte comando:

node server.js

Será exibida uma mensagem informando que o servidor já está disponível:

App available at: https://SUBDOMAIN.loca.lt

Por favor, mantenha a janela do terminal à mão, pois você precisará do URL na próxima etapa.

Fazendo uma chamada de voz de aplicativo para aplicativo

Faça uma chamada de voz a partir de um aplicativo Android para o mesmo aplicativo Android instalado em outro dispositivo usando o Client SDK.

Etapas
1
Introdução a esta tarefa
2
Prerequisites
3
Criar um servidor de webhooks
4
Criar uma aplicação da Vonage
5
Criar os usuários
6
Gerar JWTs
7
Criar um projeto Android
8
Adicionar permissões
9
Criar a tela principal
10
Inicializar o cliente
11
Receber chamada
12
Fazer uma ligação
13
E agora?