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. Neste tutorial, o nome da usuária de destino está definido como Alice.
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}`);
console.log('---');
res.json([
{
"action": "talk",
"text": "Please wait while we connect you."
},
{
"action": "connect",
"from": req.query.from,
"endpoint": [
{ "type": "app", "user": "Alice" }
]
}
]);
});
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 minúsculas 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 um NCCO como umJSONresposta contendo informações para se conectar a um usuário do aplicativo. -
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.
Receber uma ligação em um aplicativo
Você recebe uma chamada de um telefone no seu aplicativo