
Teilen Sie:
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.
Erstellen Sie Ihre eigene Voicemail mit Node-RED und der Nexmo Voice API
Hinweis: Einige der in diesem Artikel beschriebenen Tools oder Methoden werden möglicherweise nicht mehr unterstützt oder sind nicht mehr aktuell. Für aktualisierte Inhalte oder Support, überprüfen Sie unsere neuesten Beiträge oder kontaktieren Sie uns auf dem Vonage Community Slack
Die meiste Zeit meines Lebens habe ich den Anrufbeantworter gemieden. Meistens aus einem einfachen Grund - ich konnte die Nachricht nie zu 100 % verstehen.
Ich hätte mich glücklich schätzen können, wenn sie eine Nummer gelallt hätten, die ich hätte zurückrufen können, wenn die Mailbox leer gewesen wäre oder wenn sie über ihren Vornamen hinausgekommen wären. In den meisten Fällen lief es aber ungefähr so ab:
"Hi Julia, hier ist Ted, ich bin von didn't_really_get_the_name . Es tut mir leid, dass wir in dieser Sache nicht mehr zusammenkommen konnten - wenn du so bist wie ich, dann wirst du sicher in viele verschiedene Richtungen gezogen und bist sehr beschäftigt. Tun Sie mir aber einen Gefallen und rufen Sie mich zurück, wenn Sie diese Nachricht erhalten, und teilen Sie mir mit, wie Sie mit meinem Vorschlag verfahren wollen. Wie auch immer, es wäre schön, wenn ich es wüsste. Vielen Dank im Voraus, und ich warte auf Ihren Anruf..."
Ted... Mosby? Crilly? Vielleicht, Cassidy? Das werden wir nie erfahren.
Glücklicherweise ist die Erstellung einer eigenen Voicemail in Node-RED sowohl schneller als auch einfacher als das Entschlüsseln dieser Nachrichten. Folgen Sie uns, um zu sehen, wie es funktioniert!
Was Sie bauen werden
Dieses Tutorial ist Teil der "Erste Schritte mit Nexmo und Node-RED". Reihe.
Diese Artikel zeigen Ihnen, wie Sie mit Nexmo-APIs wie SMS, Voice und Verify beginnen können. Sie können also jederzeit auf diese Artikel zurückgreifen, wenn Sie eine weitere Funktion hinzufügen möchten.
In diesem Tutorial werden wir einen einfachen Voicemail-Dienst aufbauen, der es Anrufern ermöglicht, Ihre Nexmo-Nummer zu erreichen und eine Nachricht zu hinterlassen.
Die aufgezeichnete Sprachnachricht wird dann von den Nexmo-Servern abgerufen und an Ihre E-Mail-Adresse gesendet.
Abhängigkeiten
Voraussetzungen
Bevor Sie beginnen, benötigen Sie einige Dinge:
Node.js und Node-RED installiert haben, wenn Sie lokal entwickeln
Eine Möglichkeit, Ihren Server dem Internet auszusetzen. Das bedeutet entweder, dass Sie eine gehostete Version von Node-RED betreiben oder einen Tunneldienst wie ngrok - Machen Sie sich mit diesem Service vertraut Erste Schritte mit Ngrok in Node-RED Lehrgang
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.
Erlangung von Berechtigungsnachweisen
Um die Nexmo-Knoten in Node-RED zu nutzen, müssen Sie Ihre Anmeldedaten angeben, also halten Sie sie am besten bereit. Gehen Sie zu Ihrem Dashboard um Ihren API-Schlüssel und Ihr Geheimnis zu finden und sie zu notieren.
Als nächstes benötigen Sie ein Voice-aktivierte virtuelle Nummer. Gehen Sie zu Numbers > Numbers kaufen um eine zu erhalten.
buy number nexmo dashboard
Einrichten des Node-RED-Editors
Rufen Sie Ihren Node-RED-Editor auf, indem Sie Ihren Browser auf http://localhost:1880.
Sobald Sie den Editor geöffnet haben, müssen Sie die Nexmo-Knoten, den Ngrok-Knoten(wenn Sie nicht eine gehostete Version von Node-RED verwenden) und den Standard E-Mail-Knoten. Sie können dies unter der Palette verwalten nach den entsprechenden Paketen suchen und auf installieren klicken:
Nexmo:
node-red-contrib-nexmoNgrok:
node-red-contrib-ngrokE-Mail:
node-red-node-email
Nach dem Neustart von Node-RED sollten Sie alle diese Knoten auf der linken Seite Ihres Bildschirms sehen - in Ihrer Knotenpalette, neben anderen Standardknoten.
Öffnen Sie Ihren lokalen Server für das Internet
Falls Sie keine gehostete Version von Node-RED verwenden, benötigt die Nexmo Voice API einen anderen Weg, um auf Ihre Webhook-Endpunkte zuzugreifen. Ihren lokalen Server über das öffentliche Internet zugänglich machen. Wenn Sie Node-RED auf einem öffentlichen Webserver statt auf Ihrem lokalen Rechner betreiben, sind Sie bereit für den nächsten Schritt: [Erstellen einer Nexmo Voice ApplikationSchritt].
Ein bequemer Weg, dies zu tun, ist die Verwendung eines Tunneldienstes wie ngrokverwenden, und es gibt einen Knoten für diesen Dienst, den Sie gerade Ihrer Palette hinzugefügt haben.
Es nimmt die Saiten auf und aus als Eingabe, um den Tunnel zu starten/stoppen, und gibt die ngrok-Hostadresse als die msg.payload. Sehen Sie sich unser Tutorial an Erste Schritte mit Ngrok in Node-RED um mehr darüber zu erfahren.
importieren von Zwischenablage oder versuchen Sie selbst, diesen Pfad zu erstellen.
[
{
"id": "faed0f7.1e524f",
"type": "inject",
"z": "5b8bbfc3.1a9f18",
"name": "",
"topic": "",
"payload": "on",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 190,
"y": 100,
"wires": [
[
"8a01baeb.6756d"
]
]
},
{
"id": "11051fa9.75bd1",
"type": "inject",
"z": "5b8bbfc3.1a9f18",
"name": "",
"topic": "",
"payload": "off",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 190,
"y": 160,
"wires": [
[
"8a01baeb.6756d"
]
]
},
{
"id": "8a01baeb.6756d",
"type": "ngrok",
"z": "5b8bbfc3.1a9f18",
"port": "1880",
"creds": "5a9e2b8c.173a2c",
"region": "ap",
"subdomain": "",
"name": "",
"x": 400,
"y": 140,
"wires": [
[
"93fd5675.743c1"
]
]
},
{
"id": "93fd5675.743c1",
"type": "debug",
"z": "5b8bbfc3.1a9f18",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 620,
"y": 140,
"wires": []
},
{
"id": "5a9e2b8c.173a2c",
"type": "ngrokauth",
"z": ""
}
]Zu diesem Zeitpunkt sollte Ihr Editor ungefähr so aussehen:
ngrok path
Als letzter Schritt vor dem Drücken von Bereitstellendrücken, öffnen Sie die ngrok Knoteneigenschaften und geben Sie die Anschlussnummer (1880 für Node-RED) und die Region an.
Sie können auch Ihren Authtoken hinzufügen, wenn Sie bereits einen ngrok Account haben. Machen Sie sich keine Sorgen, wenn Sie das nicht haben, überspringen Sie diesen Schritt einfach. Der Knoten warnt, dass er nicht vollständig konfiguriert ist, aber das ist kein Problem.
ngrok properties
Besuchen Sie Bereitstellen und klicken Sie auf das auf inject und navigieren Sie dann zu der im Debug-Bereich angezeigten URL (YOUR_URL für zukünftige Referenzen), um Ihren Node-RED-Editor unter einer öffentlichen Adresse zu finden.
ngrok node-red
Erstellen einer Nexmo Voice Applikation
Die Nexmo Voice API verwendet 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 gibt es mehrere Knoten, mit denen diese Applications erstellt werden können: getrecording, earmuff, mute, hangup, transfer, createcall, playaudio, playtts und playdtmf.
Ziehen Sie einen dieser Knoten in Ihren Arbeitsbereich und doppelklicken Sie dann darauf, um die Knoteneigenschaften zu öffnen.
Neben dem Nexmo Credentialswählen Sie "Neue nexmovoiceapp hinzufügen..." aus dem Dropdown-Menü und klicken Sie auf die Schaltfläche "Bearbeiten". Geben Sie die unten stehenden Daten ein und klicken Sie auf Neue Anwendung erstellen.
| KEY | DESCRIPTION |
|---|---|
Name |
Choose a name for your Voice Application, for example "Nexmo Voice Application". |
API Key |
Your Nexmo API key, shown in your account overview. |
API Secret |
Your Nexmo API secret, shown in your account overview. |
Answer URL |
YOUR_URL/answer, you'll be hosting a Nexmo Call Control Object (NCCO) here. - more about this later on. |
Event URL |
YOUR_URL/event, you'll need to reference this when setting up the event handler. |
Node-RED erstellt dann eine neue Nexmo Application auf Ihrem Account und füllt die Felder App ID und Private Key aus. Nach diesem Schritt können Sie den Nexmo-Knoten, den Sie verwendet haben, löschen, da ein nexmovoiceapp Konfigurationsknoten erstellt wurde, der alle Nexmo-Anmeldeinformationen enthält, die dieser Ablauf benötigt.
create voice app
Einrichten einer Nummer zum Anrufen
Als nächstes müssen Sie Ihre virtuelle Nummer mit dieser Anwendung verknüpfen.
Sie finden die soeben erstellte Voice Application in Ihrem Nexmo Dashboard, indem Sie zu Voice > Deine Applications.
Klicken Sie auf den Namen dieser Anwendung und dann unter dem Menüpunkt Numbers auf die Registerkarte Link neben der virtuellen Nummer, die Sie zuvor gemietet haben.
Falls die Nummer, die Sie verwenden möchten, bereits mit einer anderen App verknüpft ist, klicken Sie auf Nummer verwalten und konfigurieren Sie sie so, dass eingehende Anrufe an Ihre App weitergeleitet werden.
link number
Bonus-Tipp: Verwenden Sie einen comment Knoten, um die mit Ihrer Anwendung verknüpfte Nexmo-Nummer zu notieren, so haben Sie sie immer griffbereit.
Eingehende Anrufe abwickeln
Wenn Sie einen eingehenden Anruf an Ihre virtuelle Nummer erhalten, stellt die Nexmo Voice API eine GET Anfrage an einen von Ihnen definierten Endpunkt, YOUR_URL/answerund erwartet eine Reihe von Anweisungen, wie der Anruf zu behandeln ist.
Zunächst müssen wir diesen Endpunkt implementieren.
Definieren Sie den Webhook-Endpunkt für eingehende Anrufe
a hinzufügen voice webhook und einen return ncco Knoten zu Ihrem Arbeitsbereich hinzu und verbinden Sie sie miteinander, um einen Webhook-Endpunkt zu definieren. Als nächstes öffnen Sie die voice webhook Knoteneigenschaften, wählen Sie GET als a Method und geben Sie /answer in das Feld URL ein, und drücken Sie dann Bereitstellen.
inbound webhook
Großartig! Jetzt haben Sie einen Webhook, der einen NCCO an die Nexmo-API zurückgibt. Zu diesem Zeitpunkt enthält er noch keine Anweisungen, also fügen wir welche hinzu!
Erstellen Sie das Nexmo Call Control Object (NCCO)
Die von der Nexmo-API erwarteten Anweisungen kommen in Form eines Nexmo-Aufrufsteuerungsobjektsauch bekannt als NCCO.
Es stehen viele verschiedene Aktionen zur Verfügung, finden Sie die entsprechenden Knoten in der Nexmo-Palette in Ihrem Node-RED-Editor oder schauen Sie in der NCCO-Referenz um mehr über sie zu erfahren.
In diesem Fall möchten Sie den Anrufer wahrscheinlich erst begrüßen und dann mit der Aufnahme der Nachricht beginnen. Zu diesem Zweck müssen Sie einen talk Knoten, gefolgt von einem record Knoten.
Fügen Sie sie zu Ihrem Arbeitsbereich hinzu und verbinden Sie sie dann zwischen den voice webhook und return ncco Knoten.
talk
Als nächstes öffnen Sie den talk Knoteneditor und setzen Sie das Feld Text{} auf die Nachricht, die dem Anrufer vorgelesen werden soll. Z.B. "Hallo, Sie haben X erreicht, bitte hinterlassen Sie eine Nachricht".
Wenn Sie sich nostalgisch an alte Sprachnachrichten erinnern, sind Sie bestens gerüstet. Andererseits können Sie das Erlebnis auch personalisieren, indem Sie eine Voice Name oder durch die Verwendung von SSML-Tagsso dass es mehr wie ein Mensch und weniger wie ein Roboter klingt.
record
In den record Knoteneigenschaften füllen Sie das URL {} Feld mit YOUR_URL/record. Dies wird die eventURL sein, an die Nexmo eine Reihe von Parametern zurückgibt, sobald die Aufnahme abgeschlossen ist.
Wenn Sie einen Blick auf die NCCO-Referenz schauen, werden Sie schnell feststellen, dass die Rufnummer nicht dazugehört.
Glücklicherweise können wir die Telefonnummer des Anrufers aus der answerURL entnehmen und als Abfrageparameter übergeben.
Aktualisieren Sie das URL {} Feld auf YOUR_URL/record?from={{msg.call.from}}. Auf diese Weise können wir auf den from Wert über die Datensatz-EventURL zugreifen, indem wir auf msg.req.query.from.
Bevor Sie mit dem nächsten Schritt fortfahren, vergewissern Sie sich, dass Sie POST als Method, MP3 als ein Format gewählt haben und dass Sie einen Wert für End On Silence (z. B. 3).
voicemail record
Wenn Sie den generierten NCCO sehen möchten, gehen Sie zu YOUR_URL/answer. Sie sehen eine Reihe von Aktionen oder "Anweisungen" im JSON-Format, die Nexmo zur Steuerung des Anrufablaufs verwendet.
Sind Sie bereit, einen Schritt weiter zu gehen? Wählen Sie Ihre Nexmo-Nummer, um es in Aktion zu sehen!
voicemail NCCO
Aufzeichnung abrufen
An diesem Punkt wird der Anrufer mit einer TTS-Nachricht begrüßt, gefolgt von einem Signalton, und seine Nachricht wird aufgezeichnet. Der nächste Schritt besteht darin, die Aufnahme von den Nexmo-Servern abzuholen.
EreignisURL aufzeichnen
Definieren wir zunächst die record eventURL, an die die Aufzeichnungsparameter nach Abschluss gesendet werden sollen.
Fügen Sie einen http in Knoten zu Ihrem Arbeitsbereich hinzu, dann verbinden Sie einen http response Knoten, sowie mit einem debug Knoten mit ihm. Auf diese Weise können Sie mit der Protokollierung von Ereignissen im Debug-Bereich beginnen und etwas mehr Einblick in die tatsächlichen Vorgänge gewinnen.
Öffnen Sie die http in Knoteneigenschaften, wählen Sie POST als Method und füllen Sie das Feld URL Feld mit /record.
Der Knoten http response Knoten sollte den Wert 200 setzen als Status codegesetzt sein, aber keine Sorge, dies ist auch der Standardwert.
Obwohl die Aufzeichnungsdaten als msg.payloadkommen, haben wir immer noch den from Wert gespeichert in msg.req.query.from. Stellen Sie sicher, dass Sie complete msg object im Editor des debug Editor des Knotens als Output.
Aufnahme erhalten
Um die Aufzeichnung tatsächlich abzurufen, verwenden wir den getrecording Nexmo-Knoten.
Fügen Sie einen zu Ihrem Canvas hinzu, verbinden Sie ihn mit dem /record http in Knoten und öffnen Sie den Knoteneditor.
Sie werden zwei Felder sehen:
Nexmo Credentials- wählen Sie die zuvor erstellte Voice-Anwendung aus dem Dropdown-Menü aus.Filename {}- Beachten Sie das{}Zeichen in der Beschriftung, was bedeutet, dass dieses Feld die Mustache-Vorlage unterstützt und der Wert dynamisch gesetzt werden kann. Dies gibt uns die perfekte Gelegenheit, die Nummer des Anrufers und einen Zeitstempel in den Dateinamen aufzunehmen, also setzen wir ihn aufrecordings/{{msg.req.query.from}}_{{msg.payload.timestamp}}.mp3.

Beachten Sie, dass dieser Knoten die Audiodaten nicht auf die Festplatte schreibt; das Feld filename dient dazu, den Wert von msg.filename zu setzen. Als Nächstes können Sie verschiedene Wege einschlagen: Laden Sie das Audio auf Ihren eigenen Server hoch, folgen Sie mit einem file Knoten und laden Sie es auf Ihren Computer herunter, oder verwenden Sie einen e-mail Node und senden Sie es an sich selbst.
Aufnahme an eine E-Mail-Adresse senden
Für dieses Beispiel verwenden wir den Standardknoten Node-RED e-mail Knoten, der die msg.payload als E-Mail mit einem Betreff von msg.topic.
In unserem Fall, msg.payload ein binärer Puffer (die Aufzeichnung), der in einen Anhang umgewandelt wird. Wenn Sie Ihrer E-Mail einen Textkörper hinzufügen möchten, setzen Sie ihn als msg.description mit einem change Knoten im Ablauf vor dem e-mail Knoten.
Der Dateiname lautet msg.filenamesein, den wir bereits angegeben haben.
Verbinden Sie einen change Knoten in getrecordingein, gefolgt von einem e-mail Knoten. Sie finden beides in Ihrer Knotenpalette, change unter Funktion und e-mail unter sozial. Als Nächstes wollen wir sehen, wie man sie konfiguriert.
change
Öffnen Sie die change Knoteneigenschaften und definieren Sie zwei Regeln mit der Option festlegen Operation.
Legen wir zunächst msg.topicden Betreff der E-Mail.
Ersetzen Sie im oberen Feld payload durch topicund wählen Sie dann expression Typ aus der to aus der Dropdown-Liste, die das JSONata Abfrage- und Ausdruckssprache verwendet. Um die Nummer des Anrufers in die E-Mail-Betreffzeile aufzunehmen, füllen Sie dieses Feld mit etwas wie 'Voicemail from ' & msg.req.query.from.
Klicken Sie auf das Feld hinzufügen Schaltfläche, um eine zweite Regel zu definieren. Dieses Mal setzen wir den Wert von msg.descriptionden E-Mail-Text. Sie können wieder einen Ausdruck verwenden oder eine einfache Zeichenfolge wie "Hey, du hast eine Voicemail!
voicemail change
Drücken Sie Fertig wenn Sie fertig sind, und gehen Sie weiter zu dem e-mail Knoten!
e-mail
Im e-mail Node-Editor gibt es drei Felder, die Sie ausfüllen müssen: To - die Empfänger-E-Mail-Adresse, Userid und Password - Ihre E-Mail-Anmeldedaten.
voicemail email
Sobald Sie fertig sind, klicken Sie auf Erledigt und Bereitstellen. Ihre Voicemail ist nun betriebsbereit!
Anrufereignisse protokollieren
Eine Sache noch, bevor Sie gehen! Es ist ziemlich nützlich, Ihre Anrufereignisse im Debug-Bereich zu sehen und besser zu verstehen, was wirklich vor sich geht, also fügen wir einen Ereignis-Webhook hinzu!
Verbinden Sie einen http in Knoten mit einem http response Knoten als auch mit einem debug Knoten, so dass Sie Ihre Aufrufereignisse im Debug-Bereich sehen können.
Im Knoten http in Knoten, wählen Sie POST als Method und füllen Sie das Feld URL Feld mit /event.
Der Knoten http response Knoten sollte den Wert 200 setzen als Status codegesetzt sein, aber keine Sorge, dies ist auch der Standardwert.
voicemail flow
Rufen Sie jetzt Ihre Nexmo-Nummer an und verfolgen Sie die Anrufereignisse in der Debug-Seitenleiste!
Probieren Sie es aus!
Et voilà! Sie haben Ihren eigenen Voicemail-Service eingerichtet und müssen sich hoffentlich nie wieder mit einer lästigen Voicemail herumschlagen. Rufen Sie Ihre Nexmo-Nummer an und eine E-Mail wird in Kürze an Sie verschickt.

Wie geht es weiter?
Weitere Lektüre
Versuchen Sie ein anderes Tutorial
Teilen Sie:
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.
