JavaScript

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 Benutzer Anwendung. In diesem Lernprogramm ist der Zielbenutzer fest auf Alice eingestellt.

Neues Projekt

Erstellen Sie ein neues Projektverzeichnis an einem Ort Ihrer Wahl und wechseln Sie dorthin:

mkdir vonage-tutorial cd vonage-tutorial

Innerhalb des Ordners initialisieren Sie ein neues Node.js-Projekt, indem Sie diesen Befehl ausführen:

npm init -y

Abhängigkeiten hinzufügen

Als nächstes installieren Sie die erforderlichen Abhängigkeiten:

npm install express localtunnel --save

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 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 express = require('express')
const app = express();
app.use(express.json());

app.get('/voice/answer', (req, res) => {
  console.log('NCCO request:');
  console.log(`  - caller: ${req.query.from}`);
  console.log('---');
  res.json([ 
    { 
      "action": "talk", 
      "text": "Please wait while we connect you."
    },
    { 
      "action": "connect", 
      "from": req.query.from,
      "endpoint": [ 
        { "type": "app", "user": "Alice" } 
      ]
    }
  ]);
});

app.all('/voice/event', (req, res) => {
  console.log('EVENT:');
  console.dir(req.body);
  console.log('---');
  res.sendStatus(200);
});

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 (Kleinbuchstaben und Zahlen, keine Unterstriche oder Bindestriche).

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:

  1. /voice/answer ist die answer_url die wir oben erwähnt haben. Es sendet einen NCCO als JSON Antwort mit Informationen zur Verbindung mit einem Anwendungsbenutzer.

  2. Die zweite, /voice/eventWenn Sie die Option "Benachrichtigung" wählen, können Sie festlegen, dass Vonage Sie über alles, was während des Anrufs passiert, benachrichtigen soll. event_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:

node server.js

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.