https://d226lax1qjow5r.cloudfront.net/blog/blogposts/make-text-to-speech-phone-calls-node-red-dr/make-tts-calls-featured-1.png

Text-to-Speech-Telefonanrufe mit Node-RED

Zuletzt aktualisiert am May 20, 2021

Lesedauer: 11 Minuten

Dies ist der vierte Artikel in einer Reihe von Tutorials zum Thema "Erste Schritte mit Nexmo und Node-RED".

In den vorangegangenen Tutorials haben Sie gelernt, wie man mit der Nexmo API programmatisch SMS-Nachrichten sendet und empfängt und wie man eingehende Anrufe behandelt. Als Nächstes lernen Sie ausgehende Anrufe kennen, und am Ende dieses Artikels werden Sie Ihren ersten Text-to-Speech (TTS)-Telefonanruf mit Node-RED getätigt haben.

Voraussetzungen

Bevor Sie beginnen, benötigen Sie einige Dinge:

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.

Erlangung von Berechtigungsnachweisen

Um mit der Voice API zu interagieren, müssen Sie ein paar Dinge beachten. Sobald Sie einen Nexmo Account erstellt haben, gehen Sie auf das Dashboard um Ihren API-Schlüssel und Ihr Geheimnis zu finden. Als nächstes benötigen Sie eine Voice-fähige virtuelle Nummer. Gehen Sie zu Numbers > Numbers kaufen um eine zu erhalten.

A screenshot example of buying a nexmo number in the dashboard

Einrichten des Node-RED-Editors

Zunächst müssen Sie installieren die Laufzeitumgebung und den Editor installieren. Dies kann entweder auf Ihrem lokalen Rechner, auf einem Einplatinencomputer (z. B. Raspberry Pi) oder auf einer Reihe von in der Cloud gehosteten Optionen erfolgen. In diesem Beispiel wird Ihr lokaler Rechner verwendet. Sobald Sie Node-RED global installiert haben, geben Sie einfach den folgenden Befehl in Ihr Terminal ein, um loszulegen.

node-red

Sie können dann auf den Node-RED-Editor zugreifen, indem Sie Ihren Browser auf http://localhost:1880.

Sobald Sie Ihren Editor geöffnet haben, müssen Sie die Nexmo-Knoten installieren. Dies können Sie unter der Palette verwalten tun, indem du nach dem node-red-contrib-nexmo Paket suchen und auf Installieren klicken.

Showing how to install Nexmo on Node-Red

Jetzt sollten Sie alle Nexmo-Knoten auf der linken Seite Ihres Bildschirms sehen, zusammen mit den anderen Standardknoten.

Führen Sie mit Node-RED einen Text-to-Speech-Anruf durch

Erstellen einer Nexmo-Anwendung

Einige der Nexmo-APIs, einschließlich der Voice API, verwenden Nexmo Applications, um Sicherheits- und Konfigurationsinformationen zu speichern, die für die Verbindung mit Nexmo-Endpunkten benötigt werden.

In der Nexmo Node-RED-Palette haben mehrere Knoten die Möglichkeit, diese Applications zu erstellen: getrecording, earmuff, mute, hangup, transfer, createcall, playaudio, playtts und playdtmf.

Da das Endziel darin besteht, einen ausgehenden Anruf zu tätigen, verwenden Sie den createcall Knoten, der einen ausgehenden Anruf unter Verwendung des oben erstellten NCCO tätigt.

Sobald Sie ihn in Ihrem Arbeitsbereich haben, doppelklicken Sie auf den createcall Knoten, um den Knoteneditor zu öffnen. Neben dem Nexmo Credentialswählen Sie "Add new nexmovoiceapp..." aus dem Dropdown-Menü und klicken Sie auf die Schaltfläche "Edit". Füllen Sie die untenstehenden Angaben aus und klicken Sie auf Create New Application.

KEY DESCRIPTION
Name Choose a name for your Voice Application, for example TTS call Node-RED.
API Key Your Nexmo API key, shown in your account overview.
API Secret Your Nexmo API secret, shown in your account overview.
Answer URL The URL that Nexmo makes a request to when handling inbound calls. Won't need one for this tutorial, so use http://example.com for now.
Event URL Nexmo will send call events (e.g. ringing, answered) to this URL. If you’d like to receive events about the progress of your call, make sure your server is exposed to the internet, then use YOUR_URL/event for this field.\

\

Andernfalls können Sie http://example.com verwenden - dies antwortet mit 200 OK.\

\

Sie können diese eventURL auch für einen bestimmten createCall Knoten in seinen Knoteneigenschaften überschreiben.

Node-RED erstellt dann eine neue Nexmo Application auf Ihrem Account und füllt die Felder App ID und Private Key aus, damit Sie sie speichern können. Jetzt finden Sie diese Anwendung in Ihrem Nexmo Dashboard unter Voice > Ihre Applications.

Showing how to create a voice application

Erstellen Sie das Nexmo Call Control Object (NCCO)

Nexmo-Anrufe werden gesteuert durch Nexmo Anrufsteuerungs-Objektedie auch als NCCOs bezeichnet werden. Ein NCCO definiert eine Liste von Aktionen, die bei der Bearbeitung eines Anrufs ausgeführt werden. Es stehen viele verschiedene Aktionen zur Verfügung, finden Sie die entsprechenden Knoten in der Nexmo-Palette in Ihrem Node-RED-Editor oder lesen Sie die NCCO-Referenz um mehr über sie zu erfahren.

In diesem Lernprogramm verwenden wir die talk Aktion.

Sobald der NCCO fertig ist, wird er an den createcall weitergegeben, über den der ausgehende Anruf getätigt wird. Dieser createcall Knoten nimmt 3 Arten von Eingaben für NCCO im Answer Feld: JSON, URL oder msg.ncco. Je nachdem, welche Sie wählen, gibt es 3 entsprechende Möglichkeiten, den NCCO wie folgt zu erstellen.

msg.ncco

Ziehen Sie den talk Knoten in Ihren Arbeitsbereich, doppelklicken Sie darauf, um die Knoteneigenschaften zu öffnen, und legen Sie das Feld Text{} auf die Nachricht, die bei der Annahme des Anrufs vorgelesen werden soll. Beachten Sie das {} Zeichen neben dem Text das anzeigt, dass dieser Wert dynamisch gesetzt werden kann, indem man Mustache-Vorlage. Sie können auch einen Voice Namewählen, siehe die Text-in-Sprache-Anleitung für die vollständige Liste der Optionen.

Als nächstes verdrahten Sie talk die Ausgabe des Knotens in den createcall Knoten, dann unter den createcall Knoteneigenschaften die Option msg.ncco aus dem Answer Dropdown-Menü.

Example how to create the talk message ncco

JSON

Wenn Sie Ihre NCCO lieber als JSON schreiben möchten, anstatt die Aktionsknoten zu verwenden, können Sie dies im createcall Knoten tun. Öffnen Sie die Knoteneigenschaften und wählen Sie JSON im Feld Answer Feld. Erweitern Sie den JSON-Editor und fügen Sie das unten stehende Snippet ein:

[
    {
        "action": "talk",
        "text": "This is a text to speech message from Nexmo"
    }
]

Stellen Sie sicher, dass Sie die Option talk als actionsetzen, aber es steht Ihnen frei, die text.

Example on how to create talk json ncco

Antwort-URL

Alternativ können Sie das NCCO auch über eine AnswerURL bereitstellen. In diesem Fall müssen Sie Ihren lokalen Server ebenfalls dem Internet aussetzen.

Ziehen und legen Sie den talk Knoten in Ihren Arbeitsbereich und verbinden Sie ihn dann mit einem voice webhook Eingabeknoten und einem return NCCO Ausgangsknoten. Als nächstes wählen Sie im voice webhook Knoten, wählen Sie GET als Methode und geben Sie etwas wie /answer in das Feld Antwort-URL ein.

Gehen Sie schließlich zu den talk Knoteneigenschaften und setzen Sie das Feld Text{} auf die Nachricht, die bei der Annahme des Anrufs vorgelesen werden soll. Beachten Sie das {} Zeichen neben dem Text das anzeigt, dass dieser Wert dynamisch gesetzt werden kann, indem man Mustache Schablonierung.

Sie können auch eine Voice Namesiehe die Text-in-Sprache-Anleitung für die vollständige Liste der Optionen.

Example showing how to create a talk answer url ncco

Ihren lokalen Server dem Internet aussetzen

Als nächstes müssen Sie Ihren lokalen Server für das Internet freigeben, damit Nexmo darauf zugreifen kann. Wenn Sie Node-RED auf einem öffentlichen Webserver statt auf Ihrem lokalen Rechner betreiben, können Sie diesen Schritt überspringen.

Andernfalls kann man dies bequem mit einem Tunneldienst wie ngrok.

herunterladen und installieren Sie ngrokund führen Sie es dann im Terminal aus, um einen Tunnel auf Port 1880.

./ngrok http 1880

Navigieren Sie zu der angezeigten URL, um Ihren Node-RED Editor zu finden.

Gehen Sie schließlich zu den createcall Knoteneigenschaften, wählen Sie URL aus der Answer aus und füllen Sie das Feld mit YOUR_URL/answer

Ngrok update answer call url

Ausgehende Anrufe tätigen

Als Nächstes wollen wir einen genaueren Blick auf die createcall Knoten-Eigenschaften. Um den ausgehenden Anruf tatsächlich tätigen zu können, müssen Sie noch ein paar weitere Angaben machen.

Wählen Sie zunächst Phone aus dem Endpoint Dropdown-Menü aus. Dadurch wird der Anruf an eine Telefonnummer weitergeleitet, die Sie im Textfeld neben dem Number{} Bezeichnung.

Beachten Sie das {} Zeichen, das bedeutet, dass Mustache-Vorlage für diese Felder unterstützt wird. Sie können hier eine Telefonnummer fest eincodieren, oder sie dynamisch mit einem inject Knotens und in diesem Fall mit einem Verweis auf {{msg.payload}}.

Gehen Sie zum nächsten Schritt über und legen Sie eine Ihrer virtuellen Numbers als die From{} Nummer ein.

Fügen Sie einen inject Knoten zum Fluss hinzu und verdrahten ihn als Eingabe für createcall. Wählen Sie in seinen Knoteneigenschaften Number aus dem Payload aus dem Dropdown-Menü aus, und geben Sie in das Textfeld daneben die Telefonnummer ein, die Sie im E.164-Format anrufen möchten. Zum Beispiel 447401234567.

Um einen besseren Einblick in das zu bekommen, was beim Aufruf passiert, verdrahten Sie die createcallAusgabe in einen debug Knoten.

Jetzt drücken Bereitstellen und klicken Sie auf den inject Schaltfläche des Knotens - Ihr Telefon sollte jeden Moment klingeln!

Making a TTS call with the talk NCCO

Optional: Ereignis-Webhook

Wenn Sie Ereignisse über den Verlauf Ihres Anrufs erhalten möchten, können Sie auch einen Ereignis-Webhook einrichten. Zunächst müssen Sie einen Event-Handler einrichten und dann Ihren lokalen Server dem Internet aussetzen.

Einrichten eines Handlers für die Ereignis-URL

Verbinden Sie einen http Eingangsknoten mit einem http response Knoten, sowie mit einem debug Knoten, so dass Sie Ihren Lieferschein im Debug-Bereich einsehen können.

Im Knoten http Eingabeknoten, wählen Sie POST als eine Method und füllen Sie das Feld URL Feld mit etwas wie /event. Der http response Knoten sollte 200 setzen als Status codegesetzt werden, aber keine Sorge, dies ist auch der Standardwert.

Even handler TTS

Ihren lokalen Server dem Internet aussetzen

Als nächstes müssen Sie Ihren lokalen Server für das Internet freigeben, damit Nexmo darauf zugreifen kann. Wenn Sie Node-RED auf einem öffentlichen Webserver betreiben oder sich dafür entschieden haben, das NCCO über eine AnswerURL bereitzustellen, können Sie diesen Schritt auslassen.

Andernfalls kann man dies bequem mit einem Tunneldienst wie ngrok.

herunterladen und installieren Sie ngrokund führen Sie es dann im Terminal aus, um einen Tunnel auf Port 1880.

./ngrok http 1880

Navigieren Sie zu der angezeigten URL, um Ihren Node-RED Editor zu finden.

Ngrok nodered TTS Outbound call

Aktualisieren Sie die Ereignis-URL

Öffnen Sie schließlich die createcall Knoteneigenschaften und füllen Sie das Feld Event URL Feld mit YOUR_URL/event.

Update event url TTS

Besuchen Sie Bereitstellen und klicken Sie auf die inject Schaltfläche des Knotens - Ihr Telefon wird jeden Moment klingeln! Sie können nun auch den Verlauf Ihres Anrufs in der Debug-Seitenleiste verfolgen.

Wie geht es weiter?

Teilen Sie:

https://a.storyblok.com/f/270183/372x373/36054b72d0/julia-biro.png
Julia BiroAdvokat für Entwickler

Julia hat es sich zur Aufgabe gemacht, andere Entwickler durch die Erstellung von Tutorials, Anleitungen und praktischen Ressourcen zu unterstützen. Mit ihrem Hintergrund in den Bereichen Öffentlichkeitsarbeit und Bildung möchte sie Technologien zugänglicher machen und die Erfahrung von Entwicklern insgesamt verbessern. Man kann sie oft bei lokalen Veranstaltungen antreffen.