
Teilen Sie:
Steve ist ein selbsternannter Mathlet und König des Scharfsinns. Außerdem ist er ein Liebhaber von Windhunden, kniffligen Puzzles und europäischen Brettspielen. Wenn er nicht gerade mit Nicht-Mathematikern über Mathe und mit Nicht-Javaleuten über Java spricht, kann man ihn beim Kaffeetrinken und beim Hacken von Code antreffen.
Weiterleitung eines Telefonanrufs über Voice Proxy mit Java
Lesedauer: 10 Minuten
Einführung
Für einige von uns ist das Telefonieren eine Notwendigkeit. Aber jedes Mal, wenn Sie Ihre Telefonnummer herausgeben, geben Sie sie preis für Fremden. Das Gleichgewicht zwischen Sicherheit und Komfort ist ein schmaler Grat. Was wäre, wenn Sie Ihre Telefonnummer verbergen könnten, indem Sie ihnen eine andere Telefonnummer geben?
Ein Voice-Proxy ist eine Technik, mit der Sie private Informationen zwischen Anrufern schützen können, indem Sie die Telefonnummer des anderen hinter einer zwischengeschalteten Telefonnummer verbergen.
In diesem Tutorial erfahren Sie, wie Sie die Telefonnummern von Anrufern und Angerufenen schützen können, indem Sie einen Voice-Proxy einrichten. Wenn eine Person Ihre Vonage-Nummer anruft, wird der Anruf an Ihr persönliches Telefon weitergeleitet. Die Person, die Sie anruft, muss nur Ihre Vonage-Nummer kennen, und als Bonus werden Sie auch deren Telefonnummer nicht kennen.
Voraussetzungen
Vonage API-Konto
Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.
In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.
Sie werden Folgendes verwenden Gradle verwenden, um Ihre Abhängigkeiten zu verwalten und Ihre Anwendung auszuführen. Außerdem müssen Sie sicherstellen, dass Sie eine Kopie des JDK installiert haben. Ich werde in diesem Tutorial JDK 11 verwenden, aber jedes JDK 8 und höher sollte funktionieren.
Schließlich benötigen Sie die Vonage CLI installiert sein. Damit erwerben Sie eine Telefonnummer und konfigurieren Ihr Vonage-Konto so, dass es auf Ihre neue Anwendung verweist.
Weiterleitung eines Telefonanrufs über Voice Proxy mit Java
In dieser Anleitung werden Sie durch die folgenden Schritte geführt:
Gradle zum Einrichten eines neuen Java-Projekts verwenden.
Die Verwendung des Spark Framework zur Steuerung des Aufrufs.
Kauf einer Nummer und Konfiguration Ihres Vonage-Accounts zur Nutzung dieser Nummer mit Ihrer Anwendung.
Gradle zum Einrichten eines neuen Java-Projekts verwenden
Sie werden Gradle verwenden, um Ihre Abhängigkeiten zu verwalten und um Ihre Java-Anwendung zu erstellen und auszuführen.
Der Befehl gradle init --type=java-application erstellt alle Ordner, die Sie benötigen, sowie eine Beispielklasse, in der Sie Ihren Code schreiben werden.
Erstellen Sie von der Kommandozeile aus ein neues Java-Projekt mit den folgenden Befehlen und akzeptieren Sie eine der Standardaufforderungen von Gradle:
Gradle erstellt die App Klasse im Ordner src/main/java/forward/phone/call Ordner.
Innerhalb dieser Klasse befindet sich ein getGreeting und main Methode. Sie brauchen die getGreeting Methode nicht benötigen, also können Sie sie entfernen.
Ihre App Klasse sollte wie folgt aussehen:
/*
* 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
}
} Verwendung des Spark-Frameworks zur Steuerung des Aufrufs
Sie werden das Spark-Framework verwenden, um einen HTTP-Anruf von Vonage zu empfangen, wenn Ihre Nummer einen Anruf erhält.
Hinzufügen der Abhängigkeiten
Fügen Sie den folgenden Text zum dependencies Block in Ihrer build.gradle Datei hinzu:
// Spark Framework
implementation 'com.sparkjava:spark-core:2.8.0'
// Vonage Java Client
implementation 'com.nexmo:client:4.2.1'Ihr dependencies Block sollte wie folgt aussehen:
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'
} Definieren Sie die Antwortroute
Wenn ein Anruf eingeht, sendet Vonage eine Anfrage an eine vordefinierte Webhook-URL. Es erwartet den Empfang eines Vonage Anrufsteuerungsobjekt (NCCO) mit einer Liste von Aktionen, die ausgeführt werden sollen.
Sie werden die Aktion connect verwenden, um eingehende Anrufe an Vonage auf Ihr Telefon weiterzuleiten. Die Aktion connect Aktion wird verwendet, um Anrufe mit Endpunkten wie Telefonnummern zu verbinden.
Dies ist die resultierende NCCO, die Ihre Anwendung erstellen wird:
[
{
"endpoint": [
{
"number": "16165551234",
"type": "phone"
}
],
"from": "16165559876",
"action": "connect"
}
]Sie verwenden die ConnectAction und PhoneEndpoint Klassen aus der Vonage Java Client Library für die Erstellung des obigen NCCO.
Dazu sind zwei Variablen erforderlich: die Telefonnummer, mit der Sie Anrufe verbinden möchten, und die Vonage-Nummer, mit der Sie den Anruf tätigen möchten.
Definieren Sie zunächst die Telefonnummer, mit der Sie Anrufe verbinden möchten, indem Sie die folgende Konstante in die App Klasse hinzufügen. Die Telefonnummer, durch die Sie diese Konstante ersetzen, sollte mit einer Landesvorwahl beginnen und keine führende +:
private static final String YOUR_SECOND_NUMBER = "16165551234";Vonage sendet den Parameter to Parameter an Ihren Webhook, der die angerufene Vonage-Nummer enthält. Sie können dieselbe Nummer verwenden, um Sie anzurufen, indem Sie sie als from Parameter hinzufügen.
Definieren Sie nun die Antwortroute, indem Sie den folgenden Code in die main Methode der App Klasse, wobei alle Importe aufgelöst werden:
/*
* 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();
};
Registrieren Sie die Antwortroute
Um die Antwortroute zu verwenden, müssen Sie Spark konfigurieren. Ihre Anwendung wird auf Port 3000hören, und die Route wird auf /webhooks/answer.
Fügen Sie Folgendes zur main Methode der App Klasse hinzu:
Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute); Kauf einer Nummer
Sie benötigen eine Vonage-Nummer, um Anrufe entgegenzunehmen. Wenn Sie noch keine Nummer haben, können Sie über die Vonage CLI eine Nummer erwerben.
Suchen Sie zunächst nach einer verfügbaren Nummer mit Voice-Funktion (in diesem Beispiel verwenden wir die Landesvorwahl US):
Wählen Sie eine Nummer aus der Liste aus und fügen Sie sie in den folgenden Befehl ein:
Notieren Sie sich die Nummer, die Ihnen zugewiesen wurde. Sie benötigen diese Nummer für die Verknüpfung Ihrer Bewerbung und für die Prüfung.
Ihre Anwendung offenlegen
Um eine HTTP-Anfrage an Ihre Anwendung zu senden, muss Vonage die URL kennen, unter der Ihre Anwendung läuft.
Anstatt Ihr lokales Netzwerk zu konfigurieren oder Ihre Anwendung bei einem externen Dienst zu hosten, können Sie mit ngrok verwenden, um Ihre Anwendung auf sichere Weise dem Internet auszusetzen.
Laden Sie ngrok herunter und führen Sie den folgenden Befehl aus:
Notieren Sie sich die Weiterleitungsadresse, da Sie diese bei der Konfiguration Ihres Accounts benötigen. In der folgenden Abbildung lautet die Weiterleitungsadresse http://99cad2de.ngrok.io.

Konfigurieren Sie Ihren Vonage Account
Wenn Sie noch keine Anwendung haben, können Sie mit der Vonage CLI eine Anwendung mit Ihrer ngrok-Weiterleitungsadresse erstellen:
Nachdem Sie diesen Befehl ausgeführt haben, wird Ihnen eine Anwendungs-ID angezeigt. Zum Beispiel: notreal-1111-2222-3333-appid. Sie benötigen diese Anwendungs-ID, um Ihre Rufnummer mit der Anwendung zu verknüpfen.
Sie können die Vonage CLI verwenden, um Ihre Telefonnummer und Anwendung zu verknüpfen:
Testen Sie Ihre Anwendung
Starten Sie Ihre Anwendung mit dem gradle run Befehl innerhalb Ihres forward-phone-call Verzeichnis.
Nehmen Sie einen Freund, Kollegen oder ein zweites Telefon und rufen Sie Ihre Vonage-Nummer an. Ihr anderes Telefon sollte anfangen zu klingeln. Wenn Sie den Anruf entgegennehmen, werden Sie beide so verbunden, als ob Sie sich gegenseitig direkt angerufen hätten.
Schlussfolgerung
Mit ein paar Zeilen Code haben Sie eine Anwendung erstellt, die Anrufe von Ihrer Vonage-Nummer an Ihr persönliches Telefon weiterleiten kann.
In unserer Dokumentation zu Vonage Developer erfahren Sie mehr über Anruffluss oder Vonage Anrufsteuerungsobjekte. Sie können auch einen Blick auf die Verbinden eines eingehenden Anrufs für dieses Beispiel und weitere Beispiele.
Teilen Sie:
Steve ist ein selbsternannter Mathlet und König des Scharfsinns. Außerdem ist er ein Liebhaber von Windhunden, kniffligen Puzzles und europäischen Brettspielen. Wenn er nicht gerade mit Nicht-Mathematikern über Mathe und mit Nicht-Javaleuten über Java spricht, kann man ihn beim Kaffeetrinken und beim Hacken von Code antreffen.
