
Compartilhar:
Steve se autodenomina “Mathlete” e “Rei da Ironia”. Ele também é apaixonado por galgos, quebra-cabeças de torção e jogos de tabuleiro europeus. Quando não está falando de matemática para quem não entende de matemática, nem de Java para quem não entende de Java, ele pode ser encontrado tomando café e programando.
Encaminhar uma chamada telefônica por meio de um proxy de voz com Java
Tempo de leitura: 11 minutos
Introdução
Fazer ligações é uma necessidade para alguns de nós. Mas toda vez que você divulga seu número de telefone, você o está expondo a estranhos. O equilíbrio entre segurança e conveniência é uma linha tênue. E se você pudesse ocultar seu número de telefone, fornecendo a eles um número diferente para ligar?
Um proxy de voz é uma técnica que permite proteger informações privadas entre as pessoas que estão ligando, ocultando os números de telefone de ambas por meio de um número de telefone intermediário.
Neste tutorial, você aprenderá a proteger os números de telefone tanto de quem liga quanto de quem recebe a ligação, criando um proxy de voz. Quando alguém ligar para o seu número da Vonage, a ligação será encaminhada para o seu telefone pessoal. A pessoa que ligar para você precisará saber apenas o seu número da Vonage e, como bônus, você também não saberá o número de telefone dela.
Pré-requisitos
Você utilizará o Gradle para gerenciar suas dependências e executar seu aplicativo. Além disso, você precisará se certificar de que tem uma cópia do JDK instalada. Vou usar o JDK 11 neste tutorial, mas qualquer versão a partir do JDK 8 deve funcionar.
Por fim, você precisará do CLI da Vonage instalada. Você a utilizará para adquirir um número de telefone e configurar sua conta da Vonage para que ela aponte para seu novo aplicativo.
Encaminhar uma chamada telefônica por meio de um proxy de voz com Java
Este tutorial irá guiá-lo pelas seguintes etapas:
Usando o Gradle para configurar um novo projeto em Java.
Usando o estrutura do Spark para controlar a chamada.
Adquirir um número e configurar sua conta da Vonage para usar esse número com seu aplicativo.
Usando o Gradle para configurar um novo projeto em Java
Você usará o Gradle para gerenciar suas dependências e para criar e executar sua aplicação Java.
O gradle init --type=java-application comando criará todas as pastas necessárias, além de uma classe de exemplo na qual você escreverá seu código.
Na linha de comando, crie um novo projeto Java com os seguintes comandos, aceitando qualquer uma das opções padrão apresentadas pelo Gradle:
O Gradle criará a App classe na src/main/java/forward/phone/call pasta.
Dentro dessa classe há um getGreeting e main método. Você não vai precisar do getGreeting , então fique à vontade para removê-lo.
Sua App classe deve ficar assim:
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package forward.phone.call;
public class App {
public static void main(String[] args) {
// Future Code Goes Here
}
} Utilização do Spark Framework para controlar a chamada
Você utilizará o framework Spark para receber uma chamada HTTP enviada pela Vonage sempre que seu número receber uma chamada.
Adicionando as dependências
Adicione o seguinte ao dependencies bloco no seu build.gradle arquivo:
// Spark Framework
implementation 'com.sparkjava:spark-core:2.8.0'
// Vonage Java Client
implementation 'com.nexmo:client:4.2.1'Seu dependencies bloco deve ficar assim:
dependencies {
implementation 'com.sparkjava:spark-core:2.8.0'
implementation 'com.nexmo:client:4.2.1'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
} Definir a rota de resposta
Quando uma chamada é recebida, a Vonage enviará uma solicitação para uma URL de webhook predefinida. Ela espera receber um Objeto de Controle de Chamadas da Vonage (NCCO) contendo uma lista de ações a serem executadas.
Você utilizará a connect ação para encaminhar as chamadas recebidas da Vonage para o seu telefone. A connect ação é usada para conectar chamadas a terminais, como números de telefone.
Este é o NCCO resultante que seu aplicativo irá criar:
[
{
"endpoint": [
{
"number": "16165551234",
"type": "phone"
}
],
"from": "16165559876",
"action": "connect"
}
]Você utilizará o ConnectAction e PhoneEndpoint da Biblioteca de Clientes Java da Vonage para criar o NCCO acima.
Para isso, serão necessárias duas variáveis: o número de telefone para o qual você deseja encaminhar as chamadas e o número da Vonage com o qual deseja fazer a chamada.
Primeiro, defina o número de telefone para o qual deseja encaminhar as chamadas, adicionando a seguinte constante à App classe. O número de telefone com o qual você for substituí-la deve começar com um código de país e não deve ter nenhum +:
private static final String YOUR_SECOND_NUMBER = "16165551234";A Vonage envia o to parâmetro para o seu webhook, que contém o número da Vonage que foi chamado. Você pode usar esse mesmo número para ligar para você, adicionando-o como um from parâmetro.
Agora defina a rota de resposta adicionando o código a seguir ao main método da App classe, resolvendo todas as importações:
/*
* Route to answer incoming calls with an NCCO response.
*/
Route answerRoute = (req, res) -> {
String vonageNumber = req.queryParams("to");
ConnectAction connect = ConnectAction.builder()
.endpoint(PhoneEndpoint.builder(YOUR_SECOND_NUMBER).build())
.from(vonageNumber)
.build();
res.type("application/json");
return new Ncco(connect).toJson();
};
Registrar a rota de resposta
Para usar a rota de resposta, é necessário configurar o Spark. Sua aplicação ficará à escuta na porta 3000, e a rota será configurada em /webhooks/answer.
Adicione o seguinte ao main método da App classe:
Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute); Compra de um número
Você precisará de um número da Vonage para receber chamadas telefônicas. Caso não tenha um número, você pode usar o CLI da Vonage para adquirir um.
Primeiro, procure um número disponível com serviço de voz (neste exemplo, usamos “US” como código de país):
Escolha um número da lista gerada e, em seguida, insira-o no comando a seguir:
Anote o número que lhe foi atribuído. Você precisará desse número para vincular sua aplicação e para realizar os testes.
Como disponibilizar seu aplicativo
Para enviar uma solicitação HTTP ao seu aplicativo, a Vonage precisa saber a URL em que o seu aplicativo está sendo executado.
Em vez de configurar sua rede local ou hospedar seu aplicativo em um serviço externo, você pode usar o ngrok para disponibilizar seu aplicativo na internet com segurança.
Baixe o ngrok e execute o seguinte comando:
Anote o endereço de encaminhamento, pois você precisará dele ao configurar sua conta. Na imagem a seguir, o endereço de encaminhamento é http://99cad2de.ngrok.io.

Configure seu Account da Vonage
Se você não tiver uma aplicação, pode usar a CLI da Vonage para criar uma utilizando seu endereço de encaminhamento do ngrok:
Após executar esse comando, será exibido um ID de aplicativo. Por exemplo: notreal-1111-2222-3333-appid. Você precisará desse ID de aplicativo para vincular seu número de telefone ao aplicativo.
Você pode usar a CLI da Vonage para vincular seu número de telefone ao aplicativo:
Teste seu aplicativo
Inicie seu aplicativo com o gradle run comando dentro do seu forward-phone-call diretório.
Peça a um amigo, colega ou use um segundo celular e ligue para o seu número da Vonage. O outro aparelho deve começar a tocar. Ao atender a ligação, vocês dois ficarão conectados como se tivessem ligado um para o outro diretamente.
Conclusão
Com apenas algumas linhas de código, você criou uma aplicação capaz de encaminhar chamadas do seu número da Vonage para o seu telefone pessoal.
Confira nossa documentação no Vonage Developer, onde você poderá saber mais sobre fluxo de chamadas ou Objetos de Controle de Chamadas da Vonage. Você também pode dar uma olhada no trecho de código “Conectar uma chamada recebida” para este exemplo e outros.
Compartilhar:
Steve se autodenomina “Mathlete” e “Rei da Ironia”. Ele também é apaixonado por galgos, quebra-cabeças de torção e jogos de tabuleiro europeus. Quando não está falando de matemática para quem não entende de matemática, nem de Java para quem não entende de Java, ele pode ser encontrado tomando café e programando.