https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-handle-inbound-phone-calls-with-node-js/inbound_text-to-speech_node-js.png

Wie man eingehende Telefonanrufe mit Node.js handhabt

Zuletzt aktualisiert am March 16, 2023

Lesedauer: 5 Minuten

Einführung

Die Vonage Voice API ist der einfachste Weg, hochwertige Voice Applications in der Cloud zu erstellen. Mit der Voice API können Sie:

  • Erstellen Sie Anwendungen, die mit den von Ihnen bereits verwendeten Webtechnologien skalierbar sind.

  • Kontrollieren Sie den Fluss von eingehenden und abgehenden Anrufen in JSON mit Nexmo Anrufsteuerungsobjekten (NCCO) (Anmerkung: Nexmo ist jetzt Vonage).

  • Eingehende und ausgehende Anrufe aufzeichnen und speichern

  • Telefonkonferenzen erstellen

  • Senden Sie Text-to-Speech-Nachrichten in 40 Sprachen mit verschiedenen Geschlechtern und Akzenten.

  • Und mehr!

In diesem Tutorial lernen Sie, wie Sie eingehende Anrufe durch die Implementierung eines Webhooks mit Node.js empfangen können.

Voraussetzungen

Bevor Sie beginnen, vergewissern Sie sich, dass Sie die folgenden Informationen haben:

  • Node.js installiert. Node.js ist eine quelloffene, plattformübergreifende JavaScript-Laufzeitumgebung.

  • ngrok - Ein kostenloser Account ist erforderlich. Mit diesem Tool können Entwickler einen lokalen Entwicklungsserver für das Internet freigeben.

  • OPTIONAL - Vonage CLI Sobald Node.js installiert ist, installieren Sie die CLI durch Eingabe von npm install -g @vonage/cli. Mit diesem Tool können Sie Vonage Applications über eine Befehlszeilenschnittstelle erstellen und verwalten, im Gegensatz zum Vonage Developer Portal.

Erstellen einer Voice-fähigen Vonage-Applikation

So verwenden Sie die Vonage Voice APIzu nutzen, müssen Sie eine Vonage-Applikation über das Entwicklerportal erstellen. Wenn Sie noch keinen Account haben, erstellen Sie einfach einen, denn wir stellen Ihnen Guthaben für den Einstieg zur Verfügung. Es ist keine Kreditkarte erforderlich.

Wir müssen die Webhooks der Anwendung konfigurieren und mehr. Bitte beachten Sie, dass dies über das Vonage Entwickler-Portal oder die Vonage CLI. Für dieses Tutorial verwenden wir das Vonage Developer Dashboard.

Nachdem Sie einen Account erstellt haben, loggen Sie sich in das Vonage Developer Dashboard ein und suchen Sie den Bereich Abschnitt Applicationsund erstellen Sie eine neue Anwendung. Geben Sie Ihrer Anwendung einen Namen, wie z. B. EingehendeAnrufe.

Creating the applicationInboundCall.png

Blättern Sie auf der Seite nach unten und stellen Sie sicher, dass die Option Voice Funktion aktiviert ist.

Notieren Sie sich die Antwortund Ereignis URLs, da wir diese in Kürze eingeben werden. Wir lassen die Fallback-URL leer.

Turning on the Voice CapabilityVoiceCapability.png

Drücken Sie Neue Anwendung generieren am Ende der Seite, um fortzufahren.

In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Numbers > Buy Numbers und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht. Sobald Sie eine Numbers haben, verknüpfen Sie sie mit dem Vonage Developer Dashboard, wie unten gezeigt.

Adding a number to the applicationLinkedNumber.png

Als Nächstes werden wir ngrok verwenden, um unsere Webhook-Endpunkte auf unserem lokalen Rechner als öffentliche URL zu veröffentlichen.

Ngrok ausführen

ngrok ist eine plattformübergreifende Anwendung, die es Entwicklern ermöglicht, einen lokalen Entwicklungsserver mit minimalem Aufwand ins Internet zu stellen. Wir werden es verwenden, um unseren Dienst dem Internet zugänglich zu machen. Sobald Sie ngrok eingerichtet haben und eingeloggt sind (auch hier ist der kostenlose Account akzeptabel), führen Sie den folgenden Befehl aus:

ngrok http 4001

Nachdem ngrok ausgeführt wurde, erhalten Sie eine Weiterleitung URL, die wir später in diesem Artikel als Basis für unsere Webhooks verwenden werden. Meine sieht wie die folgende aus:

ngrok running successfullyngrok.png

Erinnern Sie sich an die Antwort und Ereignis URLs im Vonage Developer Portal, wie bereits erwähnt? Wir müssen die ngrok-URL verwenden und jedes Feld ausfüllen, indem wir /answer und /eventfür die Antwort-URL und die Ereignis-URL.

ngrok running successfullywebhooksection.png

Wenn Sie die mit der Anwendung verknüpfte Nummer anrufen und diese antwortet, wird der Webhook, der in der Antwort-URL definierte Webhook ausgelöst. Ebenso werden Ereignisse mit einer POST-Anfrage protokolliert und beim Anruf der Nummer ausgelöst oder wenn die Nummer besetzt ist, usw.

Node.js-Projekt einrichten

Nachdem wir nun unsere Vonage Voice Application im Entwickler-Dashboard erstellt haben, wollen wir uns ansehen, wie wir unsere Node.js-Anwendung konfigurieren sollten.

Beginnen Sie damit, eine Eingabeaufforderung aufzurufen, ein Arbeitsverzeichnis zu erstellen und ein Node.js-Projekt zu initialisieren.

npm init -y

Wir bearbeiten die Anfragen mit Express und verwenden body-parser um eingehende Anfragen zu parsen. Installieren Sie beides mit:

npm install express body-parser --save

Erstellen Sie eine index.js Datei, instanziieren Sie express und hören Sie den Server an Port 4001 ab. Da Sie Ihr ngrok auf expose eingestellt haben localhost:4001eingestellt haben, müssen Sie denselben Port beibehalten.

'use strict'
const app = require('express')();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const server = app.listen(process.env.PORT || 4001, () => {
  console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env);
});

Definieren wir den Endpunkt für die Antwort-URL als /answer und die Ereignis-URL als /event.

Erstellen Sie eine HTTP-GET-Route, um die Anfragen für /answer um Ihr NCCO abzurufen:

app.get('/answer', function (req, res) {
  const ncco = [
    {
      action: 'talk',
      voiceName: 'Jennifer',
      text: 'Hello, thank you for calling. This is the Jennifer voice from Vonage.'
    }
  ];
  res.json(ncco);
});

Definieren Sie Ihren Text, der von einer synthetischen Stimme gelesen werden soll, in JSON (oder in diesem Fall in einem JavaScript-Objekt). Sie können das NCCO-Objekt anpassen mit optionalen Parametern mit verschiedenen Agenten nach Sprache, Geschlecht und sogar Akzent anpassen.

Der Endpunkt für die event_url muss POST sein, also definieren wir /event:

app.post('/event', function (req, res) {
  console.log(req.body);
  res.status(204).end();
});

Vergessen Sie nicht, dass wir den Status unseres Terminals überwachen werden. Sehen Sie sich dieses Codebeispiel finden Sie ein Beispiel für einen Fallback, der z. B. bei einer Zeitüberschreitung, wenn die Nummer besetzt ist, nicht beantwortet wird usw.

Ausführen der Anwendung

Geben Sie an Ihrer Befehls-/Terminal-Eingabeaufforderung Folgendes ein, um die Anwendung auszuführen:

node index.js

Lassen Sie uns einen Anruf tätigen, um zu sehen, ob Ihre Anwendung funktioniert! Rufen Sie Ihre virtuelle Nummer von Ihrem physischen Telefon aus an. Wenn alles funktioniert, sollten Sie die Nachricht hören, die Sie in Ihrem NCCO definiert haben.

Überprüfen Sie auch den Status Ihres Anrufs an Ihrem Terminal. Unten sehen Sie ein Beispiel dafür, wie meiner aussieht:

{
  headers: {},
  from: '19999999999',
  to: '19999999999',
  uuid: '912e...',
  conversation_uuid: 'CON-07f...',
  status: 'ringing',
  direction: 'inbound',
  timestamp: '2023-02-22T19:27:47.276Z'
}

Der Status ändert sich je nachdem, in welchem Ereignis sich der Anruf gerade befindet. Zum Beispiel beginnen wir mit ringing, gehen dann zu started, dann answeredund schließlich completed wenn der Aufruf erfolgreich durchgeführt wurde.

Nachbereitung

Nachdem Sie nun einen eingehenden Anruf mit der Vonage Voice API und Node.js erstellt haben, sollten Sie lernen, wie Sie Text-to-Speech-Nachrichten in über 40 Sprachen senden können? Sie können auch mehr über unsere Voice API und tauchen Sie ein in mehrere großartige Codeschnipsel.

Wenn Sie Fragen oder Feedback haben, besuchen Sie den Vonage Entwickler-Slack oder senden Sie mir einen Tweet auf Twitterund ich werde auf Sie zurückkommen. Nochmals vielen Dank fürs Lesen, und wir sehen uns beim nächsten Mal!

Teilen Sie:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael CrumpManager, Entwicklererfahrungen

Michael Crump arbeitet bei Vonage im Developer Experiences Team und ist Programmierer, YouTuber und häufiger Sprecher zu verschiedenen Themen der .NET- und Cloud-/Kommunikationsentwicklung. Seine Leidenschaft ist es, Entwicklern die Vorteile der jeweiligen Technologien auf einfache Art und Weise näher zu bringen.