https://a.storyblok.com/f/270183/1368x665/2e08dd8ba9/25may_dev-blog_call-connect_voice-api.png

Anrufe mit der Voice API von Vonage und Node.js verbinden

Zuletzt aktualisiert am May 20, 2025

Lesedauer: 5 Minuten

Einführung

In diesem Tutorial werden wir einen Anruf zwischen zwei Telefonnummern aufbauen und eine weitere Telefonnummer mit dem aktuellen Anruf verbinden, indem wir die Vonage Voice API mit Hilfe der NCCOs.

Wir werden ein NCCO-Element im Zielobjekt angeben, um den Aufruf durch Angabe einer URL zu steuern. Wir verwenden das 'Verbinden' und 'sprechen' NCCO Aktionen.

Sie finden den vollständige GitHub Repo Code hier.

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.

Voraussetzungen

Vergewissern Sie sich, bevor Sie mit dem Bau des Projekts beginnen, dass Sie alles haben:

Einrichten der Vonage-Anwendung

Erstellen einer Vonage Voice-Applikation

Erstellen Sie eine neue Applikation: Gehen Sie zu Ihre Applications im Dashboard und schalten Sie die Voice-Funktion ein.

Ein Video, das erklärt, wie man eine Vonage Anwendung erstellt.

Virtuelle Rufnummer erwerben und verknüpfen

Erwerben Sie eine virtuelle Nummer für Ihre Anwendung.

Um eine virtuelle Rufnummer zu kaufen, gehen Sie zu Ihrem API-Dashboard und befolgen Sie die unten aufgeführten Schritte.

Steps on how to purchase a phone number from the dashboard, from selecting the number and confirming the selection.Purchase a phone number

  1. Gehen Sie zu Ihrem API-Dashboard

  2. Navigieren Sie zu BUILD & MANAGE > Numbers > Buy Numbers.

  3. Wählen Sie die gewünschten Attribute und klicken Sie dann auf Suchen

  4. Klicken Sie auf die Schaltfläche Kaufen neben der gewünschten Nummer und bestätigen Sie Ihren Kauf.

  5. Um zu bestätigen, dass Sie die virtuelle Nummer erworben haben, gehen Sie im linken Navigationsmenü unter BUILD & MANAGE auf Numbers und dann auf Your Numbers

Verknüpfen Sie eine virtuelle Nummer mit Ihrer Anwendung.

Voice API-Fähigkeit

Starten Sie eine ngrok Tunelling-Instanz

Ngrok ist ein Tool, mit dem Sie Ihre Anwendung dem Internet aussetzen können. Sie benötigen es, um Event-Webhooks von der Vonage Voice API einzulesen. Wenn Sie Ngrok noch nicht verwendet haben, können Sie hier beginnen. Ich habe die Schritte zum Ausführen einer Instanz unterhalb des Bildes hinzugefügt.

Führen Sie den folgenden Befehl aus, um eine ngrok-Tunneling-Instanz zu starten.

ngrok http 3000
ngrok                                                                 (Ctrl+C to quit)
                                                                                                 
👋 Goodbye tunnels, hello Agent Endpoints: https://ngrok.com/r/aep                               
                                                                                                 
Session Status                online                                                             
Account                       plan name                                         
Version                       3.22.0                                                             
Region                        Europe (eu)                                                        
Latency                       31ms                                                               
Web Interface                 http://127.0.0.1:4040                                              
Forwarding                    https://xyz.ngrok.app -> http://localhost:8000            
                                                                                                 
Connections                   ttl     opn     rt1     rt5     p50     p90                        
                              14      0       0.03    0.03    6.10    7.79  

Konfigurieren Sie die Webhooks

Zurück im Vonage API Dashboard, unter Ihren Apps, schalten Sie die Option Voice und setzen Sie die öffentliche URL Ihres Servers von ngrok als Endpunkt für eingehende Nachrichten und Ereignisse. Sie sollte wie folgt aussehen: https://xyz.ngrok.com/answer für eingehende Nachrichten und https://xyz.ngrok.com/webhooks/status für den Status. Wenn Sie mehr über Webhooks erfahren möchten, finden Sie in unserer Vonage Dokumentation.

Installieren Sie die Abhängigkeiten

Es ist an der Zeit, unseren Texteditor zu öffnen, ein neues Projekt zu erstellen und die erforderlichen Abhängigkeiten zu installieren. Wir verwenden das Vonage Voice SDK für Node.js, Vonage JWT SDK für Node.js, Express, und Dotenv.

Installieren Sie alle Pakete in einem Rutschund führen Sie den folgenden Befehl aus, um diese Pakete automatisch zu Ihrer package.json Datei und Ihrem Projekt node_modules Verzeichnis hinzuzufügen.

npm install @vonage/voice @vonage/jwt express dotenv

Implementierung des serverseitigen Codes

In Ihrer src/server.js-Dateistarten Sie das Projekt, indem Sie die erforderlichen Module importieren. Sie richten ein Express ein, um eingehende HTTP-Anfragen zu verarbeiten.

// src/server.js

// Import dependencies

require("dotenv").config();

const express = require("express");

const { NCCOBuilder, Talk, Connect } = require("@vonage/voice");

const { verifySignature } = require("@vonage/jwt");

// Create Express app

const app = express();

// Parse request body

app.use(express.json());

app.use(express.urlencoded({ extended: false })););

Umgebungsvariablen

Erstellen wir eine .env Datei die alle Umgebungsvariablen enthält, die wir für diese Webanwendung verwenden werden. Ich habe sie unten aufgelistet und erklärt. Sie können mehr erfahren über Verwendung von Umgebungsvariablen in Node.js erfahren.

# .env

VONAGE_API_SIGNATURE_SECRET= this is the secret used to sign the request that corresponds to the signature secret associated with the API key included in the JWT claims. You can identify your signature secret on the Dashboard settings.

SECOND_PHONE_NUMBER= The phone number that will receive the control of the call

VONAGE_VIRTUAL_NUMBER= Your Vonage virtual number linked to the Vonage Application

> HINWEIS: Verwenden Sie bei der Eingabe einer Telefonnummer kein führendes + oder 00, sondern beginnen Sie mit der Landesvorwahl, z. B. 16600700000.

Erstellen Sie die JWT-Überprüfungsfunktion

Erstellen Sie eine JWT-Funktion, um zu verifizieren, ob der eingehende Anruf tatsächlich von Vonage stammt. Erfahren Sie mehr über die Verifizierung der Anfrage.

// src/server.js

const verifyJWT = (req) => {

  // Verify if the incoming call came from Vonage

  const jwtToken = req.headers.authorization.split(" ")[1];

  if(!verifySignature(jwtToken, process.env.VONAGE_API_SIGNATURE_SECRET)) {

    console.error("Unauthorized request");

    throw new Error('Not a voice API request');

  }

  console.log('JWT verified');

}

Erstellen des Endpunkts für die Bearbeitung eingehender Anrufe

Wir erstellen einen /answer Endpunkt, dem wir die URL auf dem Vonage Dashboard hinzugefügt haben. Sobald ein Anruf an das von uns erworbene und mit der Anwendung verknüpfte virtuelle Vonage-Telefon getätigt wird, verifizieren wir das JWT und fügen eine Talk-Aktion hinzu: "Hallo, dies ist ein Testanruf. Der Anruf wird in Kürze weitergeleitet."

// src/server.js

// Endpoint to handle inbound calls

app.all("/answer", (req, res) => {

 console.log("Received inbound call...");

 verifyJWT(req);

 // Build the NCCO for handling the call

 const builder = new NCCOBuilder();

 // Add the Talk action to greet the caller

 builder.addAction(

   new Talk("Hello, this is a test call. The call will be forwarded shortly.")

 );

Den aktuellen Anruf mit einer anderen Nummer verbinden

Anschließend fügen wir eine NCCO-Aktion hinzu, die eine andere Telefonnummer mit dem Anruf verbindet, so dass ein Anruf an eine andere Telefonnummer getätigt wird, die dann mit diesem bestehenden Anruf verbunden wird.

// src/server.js

// Add the Connect action to forward the call to another number

 builder.addAction(

   new Connect(

     {

       type: "phone",

       number: process.env.SECOND_PHONE_NUMBER,

     },

     process.env.VONAGE_VIRTUAL_NUMBER

   )

 );

 let ncco = builder.build(); // Build the NCCO

 // Respond with the NCCO to control the call

 res.json(ncco);

});

Vonage-Anrufereignisse behandeln

Ähnlich wie bei /answer haben wir auch hier eine /webhooks/event URL unter den Voice-Funktionen auf dem Vonage-Dashboard hinzugefügt; wir können Informationen zu den Ereignissen protokollieren, um z. B. zu prüfen, ob der Anruf abgelehnt wurde, den Anrufstatus, seine UUID, usw.

// src/server.js

app.all("/webhooks/event", (req, res) => {

 console.log("Received Event:", req.body);

 const { status } = req.body;

 if (status === "rejected") {

   console.error("Call rejected. Check error code and message.");

 }

 // Ensure response is in JSON format

 res.status(200).json({ success: true }); // This should be a valid JSON response

});

Einen Port-Listener hinzufügen

Zum Schluss fügen wir den Teil des Codes hinzu, der den Server auf einem bestimmten Port lauschen lässt; für dieses Beispiel habe ich Port 3000 gewählt.

// Listen on port 3000

app.listen(3000, () => {

  console.log("App listening on port 3000");

});

Ausführen und Testen des Codes

Jetzt ist es an der Zeit, die Dinge auszuprobieren. Führen Sie zunächst die Serverdatei über Ihr Terminal oder die Eingabeaufforderung aus.

node src/server.js

Stellen Sie sicher, dass Ihre .env-Datei alle Umgebungsvariablen enthält, ngrok läuft und die richtigen URLs im Vonage Dashboard eingerichtet sind.

Rufen Sie die virtuelle Telefonnummer an, die Sie erworben und mit der Anwendung verknüpft haben. Die erste eingerichtete Telefonnummer erhält den Anruf, der dann mit der zweiten Telefonnummer verbunden wird, und Sie sollten dort einen Anruf erhalten.

Schlussfolgerung

Erfahren Sie mehr über die Call Control Objects in diesem One-Dev-Minute Video und die Vonage Voice API NCCO-Dokumentation.

Haben Sie eine Frage oder möchten Sie etwas mitteilen? Beteiligen Sie sich am Gespräch auf dem Vonage Community Slackund bleiben Sie auf dem Laufenden mit dem Entwickler-Newsletter, folgen Sie uns auf X (früher Twitter), abonnieren Sie unseren YouTube-Kanal für Video-Tutorials, und folgen Sie der Vonage Entwickler-Seite auf LinkedInein Raum für Entwickler, um zu lernen und sich mit der Community zu vernetzen. Bleiben Sie in Verbindung, teilen Sie Ihre Fortschritte und halten Sie sich über die neuesten Nachrichten, Tipps und Veranstaltungen für Entwickler auf dem Laufenden!

Weitere Lektüre

Eingehende Telefonanrufe mit Python abwickeln

Erstellen Sie einen Fluchtplan mit der Vonage Voice API und erhalten Sie einen Ghost Call

Teilen Sie:

https://a.storyblok.com/f/270183/400x400/3f6b0c045f/amanda-cavallaro.png
Amanda CavallaroAdvokat für Entwickler