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 Número de telefone PSTN. Para isso, basta extrair o número 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 NUMBER com o seu número da Vonage (em E.164 formato), bem como 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 vonageNumber = 'NUMBER';
const express = require('express');
const app = express();
app.use(express.json());
app.get('/voice/answer', (req, res) => {
console.log('NCCO request:');
console.log(` - callee: ${req.query.to}`);
console.log('---');
res.json([
{
"action": "talk",
"text": "Please wait while we connect you."
},
{
"action": "connect",
"from": vonageNumber,
"endpoint": [
{ "type": "phone", "number": req.query.to }
]
}
]);
});
app.all('/voice/event', (req, res) => {
console.log('EVENT:');
console.dir(req.body);
console.log('---');
res.sendStatus(200);
});
if(vonageNumber == "NUMBER") {
console.log('\n\t🚨🚨🚨 Please change the NUMBER value');
return false;
}
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) e NUMBER com o seu número da Vonage em E.164 formato (por exemplo, 447700900000).
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 número de destino da chamada.Observe que o
numberé 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.
Criação de um aplicativo para fazer chamadas de voz pelo celular
Faça uma chamada de voz de um aplicativo web para um telefone usando o Client SDK do JavaScript.