Erstellen eines Webhook-Servers
Wenn ein eingehender Anruf eingeht, stellt Vonage eine Anfrage an eine öffentlich zugängliche URL Ihrer Wahl - wir nennen dies die answer_url. Sie müssen einen Webhook-Server erstellen, der in der Lage ist, diese Anfrage zu empfangen und ein NCCO mit einer connect Aktion, die den Anruf an die PSTN-Telefonnummer. Dazu extrahieren Sie die Zielnummer aus der Datei to Abfrageparameter und dessen Rückgabe in Ihrer Antwort.
Neues Projekt
Erstellen Sie ein neues Projektverzeichnis an einem Ort Ihrer Wahl und wechseln Sie dorthin:
Innerhalb des Ordners initialisieren Sie ein neues Node.js-Projekt, indem Sie diesen Befehl ausführen:
Abhängigkeiten hinzufügen
Als nächstes installieren Sie die erforderlichen Abhängigkeiten:
Erstellen Sie die Serverdatei
Erstellen Sie in Ihrem Projektordner eine Datei namens server.js und fügen Sie den Code wie unten gezeigt ein - bitte ersetzen Sie NUMBER mit Ihrer Vonage-Nummer (in E.164 Format), als auch SUBDOMAIN mit einem aktuellen Wert. Der verwendete Wert wird Teil der URLs, die Sie im nächsten Schritt als Webhooks festlegen.
'use strict';
const subdomain = 'SUBDOMAIN';
const vonageNumber = 'NUMBER';
const express = require('express');
const app = express();
app.use(express.json());
app.get('/voice/answer', (req, res) => {
console.log('NCCO request:');
console.log(` - callee: ${req.query.to}`);
console.log('---');
res.json([
{
"action": "talk",
"text": "Please wait while we connect you."
},
{
"action": "connect",
"from": vonageNumber,
"endpoint": [
{ "type": "phone", "number": req.query.to }
]
}
]);
});
app.all('/voice/event', (req, res) => {
console.log('EVENT:');
console.dir(req.body);
console.log('---');
res.sendStatus(200);
});
if(vonageNumber == "NUMBER") {
console.log('\n\t🚨🚨🚨 Please change the NUMBER value');
return false;
}
if(subdomain == "SUBDOMAIN") {
console.log('\n\t🚨🚨🚨 Please change the SUBDOMAIN value');
return false;
}
app.listen(3000);
const localtunnel = require('localtunnel');
(async () => {
const tunnel = await localtunnel({
subdomain: subdomain,
port: 3000
});
console.log(`App available at: ${tunnel.url}`);
})();
HINWEIS: Bitte denken Sie daran, die SUBDOMAIN mit einer zufälligen Zeichenfolge Ihrer Wahl zwischen 4 und 20 alphanumerischen Zeichen (Buchstaben und Numbers, keine Unterstriche oder Bindestriche) und NUMBER mit Ihrer Vonage-Nummer in E.164 Format (z. B. 447700900000).
Der obige Servercode besteht aus 2 Teilen:
Der Express-Server
Der erste Teil erstellt eine Express Server und macht ihn lokal auf Port 3000. Der Server stellt 2 Pfade zur Verfügung:
/voice/answerist dieanswer_urldie wir oben erwähnt haben. Es sendet eineJSONAntwort, die die Zielnummer des Anrufs enthält.Beachten Sie, dass die
numberwird aus derreq.query.toParameter, der von Vonage als Teil der Anfrage gesendet wird. Der dynamisch aufgebaute NCCO leitet dann den Anruf an das Zieltelefon weiter, wobei einconnectAktion.Die zweite,
/voice/eventWenn Sie sich für ein Gespräch entscheiden, stellen Sie als Ziel ein, dass Vonage Sie über alles, was während des Gesprächs passiert, benachrichtigt - wir nennen dies dieevent_url.
Die localtunnel Integration
Der zweite Teil des obigen Servercodes stellt die Express Server, damit er für die Vonage-Server zugänglich ist.
HINWEIS: localtunnel ist eine JavaScript-Bibliothek, mit der Sie Ihren Localhost der ganzen Welt zugänglich machen können, um ihn problemlos zu testen und zu teilen! Sie müssen sich nicht mit DNS herumschlagen oder Ihre Änderungen für andere zum Testen bereitstellen.
Starten Sie den Server
Sie können nun den Server starten, indem Sie im Terminal den folgenden Befehl ausführen:
Es wird ein Hinweis angezeigt, dass der Server jetzt verfügbar ist:
App available at: https://SUBDOMAIN.loca.lt
Bitte halten Sie das Terminalfenster bereit, da Sie die URL im nächsten Schritt benötigen.
In-App-Sprachanrufe tätigen
Tätigen Sie einen Sprachanruf von einer Android-App zu einem Telefon mit dem Android Client SDK.