
Teilen Sie:
Ben ist ein Entwickler im zweiten Beruf, der zuvor ein Jahrzehnt in den Bereichen Erwachsenenbildung, Community-Organisation und Non-Profit-Management tätig war. Er arbeitete als Anwalt für Entwickler bei Vonage. Er schreibt regelmäßig über die Überschneidung von Gemeindeentwicklung und Technologie. Ursprünglich aus Südkalifornien stammend und lange Zeit in New York City ansässig, wohnt Ben jetzt in der Nähe von Tel Aviv, Israel.
Weiterleitung eines Anrufs über Voice Proxy mit Ruby on Rails
Lesedauer: 8 Minuten
Auch wenn wir einen großen Teil unseres täglichen Lebens über Apps abwickeln, ist das Telefonieren nach wie vor ein notwendiger Bestandteil unserer Welt. Jedes Mal, wenn wir Geschäfte über ein Telefonat abwickeln, geben wir unsere private Telefonnummer an andere weiter. Dies kann für alle Beteiligten sowohl Datenschutz- als auch Sicherheitsrisiken mit sich bringen. Durch die Verwendung eines Voice-Proxys können Sie dieses Problem jedoch umgehen und unbesorgt telefonieren.
Ein Voice-Proxy ist eine Methode, bei der Telefonanrufe über eine zwischengeschaltete Telefonnummer an ihr endgültiges Ziel weitergeleitet werden. Die endgültige Telefonnummer wird hinter der zwischengeschalteten Nummer maskiert, wodurch ihre Privatsphäre gewahrt bleibt. In diesem Tutorial werden wir eine Ruby on Rails Anwendung erstellen, um Anrufe über einen Voice Proxy mit Hilfe der Nexmo Voice API weiterzuleiten.
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.
Um dieses Tutorial durchzuarbeiten, benötigen Sie ein Nexmo Account. Melden Sie sich jetzt an, wenn Sie noch keinen Account haben.
Darüber hinaus benötigen Sie auch:
ngrok um unsere Rails-Anwendung nach außen hin sichtbar zu machen
Weiterleitung eines Voice-Anrufs über Voice-Proxy mit Rails
Wir werden die folgenden Aufgaben durchführen, um einen Sprachanruf mit der Nexmo Voice API über einen Sprachproxy weiterzuleiten:
Eine Rails-Anwendung erstellen
Unsere Anwendung extern zugänglich machen, damit Nexmo mit ihr kommunizieren kann
Richten Sie unseren Nexmo Account ein, kaufen Sie eine Nexmo Telefonnummer und erstellen Sie eine Nexmo Voice Applikation
Rails Controller, View und Routes erstellen
Erstellen einer Rails-Anwendung
Führen Sie in der Befehlszeile Folgendes aus:
Mit dem obigen Befehl wird eine neue Rails-Anwendung mit PostgreSQL als Standarddatenbank erstellt. Öffnen Sie die neue Rails-Anwendung in einem Code-Editor Ihrer Wahl und fügen Sie die dotenv-rails und nexmo Gems zu Ihrem Gemfile in das Stammverzeichnis des Projekts:
# Gemfile
gem 'nexmo'
gem 'dotenv-rails`Wir sind nun bereit, unsere Gem-Abhängigkeiten in unsere Anwendung zu installieren. Wir tun dies durch Ausführen von bundle install vom Terminal aus ausführen. Wir können auch rake db:migrate an dieser Stelle auch vom Terminal aus ausführen, um die Datenbank einzurichten. Wir werden die Datenbank in diesem Tutorial nicht zum Speichern der Daten verwenden, aber Sie können diese Funktion in Ihre eigene Anwendung einbauen, wenn Sie das möchten.
An dieser Stelle werden wir ngrok einrichten, um unsere extern zugängliche URL zu erhalten, die von Nexmo zur Kommunikation mit unserer Anwendung verwendet wird.
Offenlegung der Anwendung
Es gibt mehrere Möglichkeiten, unseren lokalen Entwicklungsserver von außen zugänglich zu machen, aber eine der einfachsten ist ngrok. Sie können lesen diesen Artikel für eine genauere Erklärung der Funktionsweise von ngrok. Für unsere Zwecke müssen wir es jedoch nur zum Laufen bringen und die URL kopieren, die es uns liefert.
Um ngrok zu starten, öffnen Sie ein neues Terminal-Fenster und führen Sie folgendes in der Kommandozeile aus:
Sie sehen nun eine ngrok-Protokollierungsschnittstelle in Ihrem Terminalfenster. Am oberen Rand der Schnittstelle befindet sich eine Zeile, die mit Forwarding beginnt und zwei URLs enthält. Die erste ist die von außen zugängliche ngrok-URL, die mit ngrok.io gefolgt von http://localhost:3000wobei es sich um Ihren lokalen Entwicklungsserver handelt. Wenn Sie oder Nexmo nun die ngrok.io URL kontaktieren, wird sie an Ihren lokalen Server weitergeleitet.
Stellen Sie sicher, dass Sie die ngrok.io URL an einem sicheren Ort speichern. Wir werden sie im nächsten Schritt verwenden, um unser Nexmo-Konto, unsere Telefonnummer und unsere Voice-Anwendung einzurichten.
Erstellen eines Nexmo Accounts mit Telefonnummer und Voice Application
Damit unsere Voice-Applikation funktioniert, benötigen wir einen Nexmo Account, eine von Nexmo bereitgestellte Telefonnummer, eine Nexmo Applikation und schließlich müssen wir unsere Applikation mit unserer Telefonnummer verknüpfen.
Sie können kostenlos einen Nexmo Account erstellen, und als zusätzlichen Bonus werden Ihrem Account 2 Euro gutgeschrieben, damit Sie Ihre neue Anwendung nutzen können. Navigieren Sie zu <${CUSTOMER_DASHBOARD_URL}/sign-up> in Ihrem Webbrowser und gehen Sie durch die Anmeldeschritte. Sobald Sie damit fertig sind, befinden Sie sich in Ihrem Nexmo-Dashboard.
Klicken Sie im Menü auf der linken Seite auf den Voice menu Eintrag. Sie sehen dann die folgenden vier Optionen unter APPLICATIONS:

Klicken Sie auf die Option Create an application und Sie werden auf eine Seite weitergeleitet, auf der Sie eine neue Nexmo-Anwendung einrichten können.
Füllen Sie das Formular mit den folgenden Angaben aus:
Application nameTextfeld eingebenvoice-proxy-forwarding-demoEvent URLTextfeld Ihre ngrok-URL ein:https://[ngrok url here]/eventAnswer URLTextfeld erneut Ihre ngrok-URL ein:https://[ngrok url here]/webhooks/answer
Wenn Sie fertig sind, klicken Sie auf die blaue Create Application Schaltfläche.
Sie haben nun eine Nexmo Voice Anwendung erstellt. Der nächste Schritt besteht darin, eine Nexmo-Telefonnummer zu erwerben und sie mit dieser Anwendung zu verknüpfen.
Klicken Sie auf dem Nexmo Dashboard auf den Menüpunkt Numbers Menüpunkt im linken Menü. Es werden drei Optionen angezeigt:

Klicken Sie auf die Option Buy numbers und Sie werden auf eine Seite weitergeleitet, auf der Sie das Land, die Merkmale, den Typ und die vier Ziffern, die die Nummer haben soll, auswählen können.

Für unsere Zwecke: Wählen Sie das Land, in dem Sie sich gerade befinden, so dass der Anruf für Sie ein Ortsgespräch ist; wählen Sie Voice für die Merkmale und entweder Handy oder Festnetz für den Typ. Für das Textfeld brauchen Sie nichts einzugeben. Number Textfeld eingeben. Wenn Sie auf Searchklicken, wird eine Liste der verfügbaren Telefonnummern angezeigt.
Wählen Sie eine aus, indem Sie auf die orangefarbene Buy klicken und bei der Sicherheitsabfrage erneut auf die orangefarbene Buy in der Bestätigungsaufforderung noch einmal.
Sobald Sie die Nummer besitzen, können Sie sie mit Ihrer voice-proxy-forwarding-demo Voice-Anwendung verknüpfen. Klicken Sie dazu auf das Zahnrad-Symbol neben der Telefonnummer und Sie sehen das folgende Menü:

Wählen Sie die voice-proxy-forwarding-demo Anwendung aus der Dropdown-Liste und klicken Sie auf die blaue Ok Schaltfläche. Ihre Nexmo-Telefonnummer ist nun mit Ihrer Voice-Anwendung verknüpft und bereit, eingehende Anrufe über Voice-Proxy anzunehmen und weiterzuleiten.
Unser letzter Schritt, bevor wir unsere Anwendung starten können, ist die Definition unserer Rails-Controller-Aktionen und -Routen.
Rails Controller und Routes erstellen
Erstellen Sie nun eine Controller-Datei mit dem Namen call_controller.rb in /app/controllers/. Innerhalb des Controllers werden wir eine einzelne Controller-Aktion und drei konstante Variablen definieren. Die Aktion wird das Nexmo Anrufsteuerungsobjekt (NCCO) Anweisungen zur Weiterleitung des Anrufs über Voice Proxy an unsere persönliche Nummer. Die drei konstanten Variablen enthalten unsere ngrok-URL, die Nexmo-Nummer und die persönliche Nummer.
# call_controller.rb
class CallController < ApplicationController
BASE_URL = 'YOUR NGROK URL GOES HERE'
NEXMO_NUMBER='YOUR NEXMO PROVISIONED NUMBER GOES HERE'
PERSONAL_NUMBER = 'YOUR PERSONAL NUMBER GOES HERE'
def answer
render json:
[
{
"action": "talk",
"text": "Please wait while we forward your call"
},
{
:action => 'connect',
:eventUrl => [],
:from => NEXMO_NUMBER,
:endpoint => [
{
:type => 'phone',
:number => PERSONAL_NUMBER
}
]
}
]
end
end
Zum Schluss müssen wir die Route in routes.rb definieren, damit unsere Rails-Anwendung weiß, wohin sie die Nexmo GET Anfrage weiterleitet. Öffnen Sie nun /config/routes.rb und fügen Sie das Folgende hinzu:
# routes.rb
get '/webhooks/answer', to: 'call#answer'Sie werden feststellen, dass der Pfad für die GET Anfrage die gleiche URL ist, die wir bei der Einrichtung unserer Nexmo Voice Anwendung im Nexmo Dashboard angegeben haben.
Unsere Bewerbung ist einsatzbereit! Herzlichen Glückwunsch!
Ausführen der Anwendung
Um Ihre Anwendung auszuführen, müssen Sie lediglich in der Befehlszeile Folgendes ausführen:
Dadurch wird Ihr Rails-Server gestartet. Stellen Sie in einem anderen Terminalfenster sicher, dass ngrok ebenfalls läuft. Rufen Sie nun Ihre Nexmo-Telefonnummer an und Sie werden hören, wie Ihre Anwendung zu Ihnen sagt: "Bitte warten Sie, während wir Ihren Anruf weiterleiten", und dann wird Ihr Anruf über einen Voice-Proxy weitergeleitet.
Was, wenn Sie möchten, dass Ihre Anwendung Ihren Anruf weiterleitet, ohne dies anzukündigen? Dazu müssen Sie nur die talk NCCO-Anweisung aus der #answer Route im Controller zu entfernen. Wenn Sie dies tun, wird Ihre endgültige Controller-Methode wie folgt aussehen:
# call_controller.rb
def answer
render json:
[
{
:action => 'connect',
:eventUrl => [],
:from => NEXMO_NUMBER,
:endpoint => [
{
:type => 'phone',
:number => PERSONAL_NUMBER
}
]
}
]
end
Weitere Lektüre
Wenn Sie Interesse haben, mehr zu erfahren und zu lesen, sollten Sie sich die folgenden Informationen ansehen:
Teilen Sie:
Ben ist ein Entwickler im zweiten Beruf, der zuvor ein Jahrzehnt in den Bereichen Erwachsenenbildung, Community-Organisation und Non-Profit-Management tätig war. Er arbeitete als Anwalt für Entwickler bei Vonage. Er schreibt regelmäßig über die Überschneidung von Gemeindeentwicklung und Technologie. Ursprünglich aus Südkalifornien stammend und lange Zeit in New York City ansässig, wohnt Ben jetzt in der Nähe von Tel Aviv, Israel.
