
Weiterleitung eines Anrufs über Voice Proxy mit Koa.js
Lesedauer: 12 Minuten
Einführung
Dieses Tutorial zeigt Ihnen, wie Sie Ihrer Anwendung Voice-Funktionen hinzufügen können. Wir werden Koa, ein Web-Framework für Node.js, verwenden, um einen Server zu erstellen, der eingehende Anrufe und Ereignisse verarbeitet, sowie die Vonage Voice API um Anrufe an eine andere Telefonnummer weiterzuleiten. Lassen Sie uns beginnen.
Skizze des Projekts
Am Ende dieses Projekts sollte Ihr Projektordner so aussehen:
Voraussetzungen
Für dieses Tutorial benötigen Sie Folgendes:
Node.js installiert
Ngrok wird installiert, um Ihren lokalen Entwicklungsserver dem Internet zugänglich zu machen.
Ein Vonage Developer Account für den Zugriff auf unsere Voice API.
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.
Einrichtung Ngrok
Damit wir in der Lage sind, Endpunkte von unseren lokalen Rechnern aus bereitzustellen, ohne unsere Anwendung in einer Live-Umgebung einsetzen zu müssen, werden wir unseren lokalen Server mit Hilfe der folgenden Methode für das Internet zugänglich machen ngrok
Nach der Installation starten Sie in einem neuen Terminal-/Befehlszeilenfenster ngrok auf Port 3000:
ngrok http 3000
Vonage einrichten
Einrichten derVonage CLI
Mit der Vonage CLI können Sie Vonage Applications erstellen und verwalten. Installieren Sie es, wenn Sie es noch nicht haben:
npm install @vonage/cli -g
Konfiguration des API-Schlüssels und des API-Geheimnisses festlegen
Führen Sie den Befehl aus, um den API-Schlüssel und das API-Geheimnis zu konfigurieren. Danach sehen Sie Configuration saved in Ihrem Terminal oder in der Eingabeaufforderung.
Die VONAGE_KEY und VONAGE_SECRET finden Sie auf dem Dashboard von Vonage.
Vonage Dashboard
Eine Anwendung erstellen
Verwenden Sie die Befehlszeilenschnittstelle, um eine neue Anwendung mit Voice-Funktionen zu erstellen, und notieren Sie sich die bei der Erstellung angegebene Anwendungs-ID. Führen Sie den Befehl aus, um eine neue Vonage Application zu erstellen.
Daraufhin erscheint eine Eingabeaufforderung mit einigen Feldern, die Sie wie folgt ausfüllen können.
Sie sollten eine ähnliche Antwort wie diese erhalten:
Mieten Sie eine virtuelle Nummer
Als Nächstes benötigen wir eine virtuelle Nummer, die als unser "öffentliches Gesicht" für eingehende Anrufe dient. Diese Nummer wird mit unserer Vonage-Anwendung verknüpft, und hier erfahren Sie, wie Sie eine solche Nummer erhalten:
Suchen Sie nach verfügbaren Numbers in Ihrer gewünschten Region. Zum Glück können wir Numbers direkt von der CLI aus kaufen, wie hier!
vonage numbers:search US(ersetzen Sie US durch Ihre Landesvorwahl, falls erforderlich).Kaufen Sie eine Nummer:
vonage numbers:buy 12079460000 US.
Denken Sie daran, dass einige Numbers nicht über die Befehlszeile erworben werden können, Sie müssen sie also über das Dashboard erwerben. Sie können dies tun, indem Sie zum Vonage-Dashboard und die Buy Numbers Seite. Klicken Sie im Suchfilter auf "Voice" und wählen Sie das Land aus, in dem Sie eine Numbers kaufen möchten.
Verknüpfen einer virtuellen Telefonnummer mit der Anwendung
Nachdem wir unsere Nummer ausgewählt haben, ist es an der Zeit, sie mit unserer Vonage-Anwendung zu verbinden. Sie können eine virtuelle Telefonnummer direkt über das Vonage Dashboard oder über die CLI verknüpfen. Durch die Verknüpfung wird sichergestellt, dass Anrufe an Ihre virtuelle Nummer korrekt durch Ihre Anwendung geleitet werden.
vonage apps:link --number=12079460000 APPLICATION_ID
Sie können dies auch über das Dashboard tun. Gehen Sie zur Seite Applications und klicken Sie auf die Anwendung, die Sie zuvor erstellt haben. Klicken Sie auf die Schaltfläche "Verknüpfen" im Abschnitt Voice neben der Nummer, die Sie verknüpfen möchten.
Das Node.js-Projekt erstellen
Erstellen Sie ein neues Verzeichnis für Ihr Projekt und navigieren Sie dorthin. (Beispielverzeichnis
VoiceWithVonage)Initialisieren Sie ein neues Node.js-Projekt mit
npm init -yum alle Standardeinstellungen zu übernehmen.
Abhängigkeiten installieren
Unser Projekt stützt sich auf einige Abhängigkeiten, die wir mit einem einzigen Befehl installieren:
Umgebungsvariablen
Wir werden Umgebungsvariablen verwenden, um sensible Informationen wie API-Schlüssel und Telefonnummern zu speichern, damit unsere Anwendung sicher und verwaltbar bleibt.
Erstellen Sie eine .env Datei in Ihrem Projektstamm und fügen Sie Ihre Variablen hinzu In Michaels Blogbeitrag wird die Verwendung von Umgebungsvariablen in Node.js genauer erklärt
// .env
VONAGE_API_KEY= Your Vonage API key, used for authenticating API requests.
VONAGE_API_SECRET= Your Vonage API secret
VONAGE_APPLICATION_ID= The ID of your Vonage application. Vonage applications allow you to manage your communication services and define how they interact with your web application.
VONAGE_PRIVATE_KEY= The path to your Vonage application's private key file. When you create a Vonage application that uses voice capabilities, you generate a public/private key pair. The private key authenticates your application when making API requests. It will look like nameOfTheFile.key.
FROM_NUMBER= The Vonage virtual number (purchased through Vonage) that calls will come from. It is the number displayed to the user receiving the call.
YOUR_SECOND_NUMBER= The destination phone number to which the call will be forwarded. It should be in [E.164 format](https://en.wikipedia.org/wiki/E.164). Vonage initialisieren
Das Vonage Server SDK macht die Integration mit den Diensten von Vonage ganz einfach. Initialisieren Sie es in Ihrem Projekt, um die Voice-Funktionalität zu aktivieren, und stellen Sie sicher, dass die Platzhalterwerte durch Ihre API-Anmeldedaten ersetzt werden, die in Ihrer .env Datei gespeichert sind.
Erstellen Sie eine Datei namens forward_a_call.js und den folgenden Code.
// forward_a_call.js
require("dotenv").config();
const { Vonage } = require("@vonage/server-sdk");
// Initialize the Vonage Server SDK with your credentials
const vonage = new Vonage({
apiKey: process.env.VONAGE_API_KEY,
apiSecret: process.env.VONAGE_API_SECRET,
applicationId: process.env.VONAGE_APPLICATION_ID,
privateKey: process.env.VONAGE_PRIVATE_KEY,
}); Koa einrichten
Wir beginnen mit dem Einrichten unserer Serverumgebung:
require("dotenv").config();
const Koa = require("koa");
const Router = require("@koa/router");
const koaBody = require("koa-bodyparser");
const app = new Koa();
const router = new Router();
app.use(koaBody());Hier importieren wir die notwendigen Module und initialisieren unsere Koa-Anwendung. dotenv lädt Umgebungsvariablen (wie Ihre Vonage API-Anmeldedaten und Telefonnummern) aus einer .env Datei.
Die Middleware koaBodyparser wird eingesetzt, um den Body eingehender Anfragen zu parsen, was für das Lesen von JSON-Payloads in unserem /event Webhook unerlässlich ist.
Zusätzlich verwenden wir @koa/router, eine Routing-Middleware, um Routen innerhalb unserer Anwendung zu definieren und zu verwalten. Damit können wir Aktionen für verschiedene Pfade festlegen, z. B. /answer für die Beantwortung von Anrufen und /event für die Verarbeitung von Webhook-Ereignissen.
Anrufe mit NCCO beantworten
Die /answer Route ist als Antwort auf eingehende Anrufe definiert. Wenn die Vonage-Plattform einen Anruf an Ihre virtuelle Nummer erhält, fordert sie von diesem /answer Endpunkt Anweisungen, bekannt als NCCO (Call Control Object), zur Bearbeitung des Anrufs abruft.
In diesem Beispiel wird der NCCO weist Vonage an, zuerst eine Nachricht abzuspielen ("Bitte warten Sie, während wir Ihren Anruf verbinden.") und dann den Anruf zu einer anderen angegebenen Nummer (YOUR_SECOND_NUMBER), wobei Ihre Vonage-Nummer (FROM_NUMBER) als Anrufer-ID zu verwenden.
router.get("/answer", async (ctx) => {
const ncco = [
{
action: "talk",
text: "Please wait while we connect your call.",
},
{
action: "connect",
eventUrl: [],
from: process.env.FROM_NUMBER,
endpoint: [
{
type: "phone",
number: process.env.YOUR_SECOND_NUMBER,
},
],
},
];
ctx.body = ncco;
});
Ereignisse verarbeiten, Routen anwenden und den Server starten
Die /event Route erfasst und protokolliert Ereignisse im Zusammenhang mit dem Anruf. Dieser Endpunkt ist für die Fehlersuche und Überwachung des Lebenszyklus Ihrer Anrufe unerlässlich. Zu den Ereignissen können Anrufstatus wie "beantwortet", "abgeschlossen" oder "fehlgeschlagen" gehören. Durch die Protokollierung dieser Ereignisse können wir Einblicke in den Anruffluss gewinnen und Probleme beheben
Schließlich wenden wir unsere Routen auf die Koa-Anwendung an und starten den Server.
router.post("/event", async (ctx) => {
console.log(ctx.request.body);
ctx.status = 204; // No content to send back
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => console.log("Server running on port 3000"));
Die Anwendung lauscht auf Port 3000 und protokolliert eine Meldung auf der Konsole, sobald der Server läuft. Hier werden die von uns definierten Routen zugänglich und ermöglichen der Vonage-Plattform die Interaktion mit unserem Server auf der Grundlage der im Vonage Dashboard für die Antwort- und Ereignis-Webhooks unserer Anwendung angegebenen URLs.
Ausführen und Testen der Anwendung
Wenn Sie alles vorbereitet haben, starten Sie Ihren Server mit dem folgenden Befehl:
Testen Sie die Rufumleitung, indem Sie Ihre virtuelle Vonage-Nummer wählen. Der Anruf sollte auf die in Ihrer Datei angegebene Nummer umgeleitet werden. .env Datei angegeben ist.
Fazit und Verbindung mit uns
Herzlichen Glückwunsch! Sie haben nun die Kunst der Anrufweiterleitung mit Vonage gemeistert. Wenn Sie Fragen oder Vorschläge haben oder Ihre Ergebnisse mit anderen teilen möchten, werden Sie Mitglied in unserer Vonage Entwickler-Slack-Community oder kontaktieren Sie uns auf X, früher bekannt als Twitter.
Weitere Lektüre
Erstellen Sie einen Fluchtplan mit der Vonage Voice API und erhalten Sie einen Ghost Call
