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:
Dentro da pasta, inicialize um novo projeto Node.js executando este comando:
Adicionar dependências
Em seguida, instale as dependências necessárias:
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:
-
/voice/answeré oanswer_urlque mencionamos acima. Ele retorna umJSONresposta contendo o usuário de destino da chamada.Observe que o
useré extraído doreq.query.toparâ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 umconnectação. -
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 deevent_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:
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.