https://d226lax1qjow5r.cloudfront.net/blog/blogposts/interactive-voice-response-node-red-dr/ivr-featured-image.png

Wie man eine IVR mit Node-RED und den Nexmo APIs erstellt

Zuletzt aktualisiert am May 18, 2021

Lesedauer: 15 Minuten

Ein IVR oder Interactive Voice Response ist ein Menü mit Optionen, das einem Anrufer präsentiert wird. Der Anrufer navigiert dann durch dieses Menü, indem er die Ziffern auf seiner Tastatur benutzt, um DTMF-Signale (Dual Tone Multi-Frequency) zu senden.

Jede Option im IVR kann den Anruf auf einen anderen Weg leiten, z. B. den Anruf an ein bestimmtes Ziel weiterleiten, eine aufgezeichnete Information abspielen oder sogar einen anderen Dienst wie eine SMS auslösen.

IVRs sind die grundlegende Navigationsmethode von Sprachanrufanwendungen. Sie können mehrere Ebenen haben, auf denen die Auswahl einer Option dem Benutzer weitere Optionen präsentiert, und das kann bis in unendliche Tiefen gehen!

In diesem Tutorial werden wir nur eine einstufige IVR mit drei möglichen Pfaden erstellen:

  1. Weiterleitung des Anrufs an eine bestimmte Nummer

  2. Anrufer an Voicemail senden

  3. Dem Anrufer eine SMS senden

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.

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 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 sprachaktivierte virtuelle Nummer. Gehen Sie zu Nummern > Nummern kaufen um eine zu erhalten.

Animation showing purchasing a number in the Nexmo dashboardAnimation showing purchasing a number in the 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-nexmo

  • Ngrok: node-red-contrib-ngrok

  • E-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 laufen lassen, sind Sie bereit für den nächsten Schritt: [Erstellen einer Nexmo Voice-AnwendungSchritt].

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 das unten stehende Snippet, öffnen Sie dann die ngrok Knoteneigenschaften und geben Sie die Anschlussnummer (1880 für Node-RED) und die Region an.

[
    {
        "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": ""
    }
]

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.

Using Ngrok with NoderedUsing Ngrok with Nodered

Erstellen einer Nexmo Sprachanwendung

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 Anwendungen 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-Anwendung auf Ihrem Konto 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.

Creating a voice appCreating a voice app

Einrichten einer Nummer zum Anrufen

Als nächstes müssen Sie Ihre virtuelle Nummer mit dieser Anwendung verknüpfen.

Finden Sie die soeben erstellte Sprachanwendung in Ihrem Nexmo Dashboard, indem Sie zu Sprache > Deine Anwendungen.

Klicken Sie auf den Namen dieser Anwendung, dann unter Zahlen 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.

Linking a number to an application in NexmoLinking a number to an application in Nexmo

Bonus-Tipp: Verwenden Sie einen comment Knoten, um die mit Ihrer Anwendung verknüpfte Nexmo-Nummer zu notieren, so haben Sie sie immer griffbereit.

Anrufereignisse protokollieren

Bei der Erstellung von Abläufen ist es sehr 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! Dies wird auch bei der späteren Fehlersuche helfen, falls erforderlich.

Verbinden Sie einen http in Knoten mit einem http response Knoten, als auch mit einem debug Knoten, so dass Sie Ihre Aufrufereignisse in der Debug-Seitenleiste anzeigen können.

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

Creating an IVR event webhookCreating an IVR event webhook

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 Method und geben Sie /answer in das Feld URL ein, und drücken Sie dann Bereitstellen.

Definining an inbound webhookDefinining an 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-Aufrufsteuerungsobjekts, auch bekannt als NCCO. Es gibt viele verschiedene Aktionen, finden Sie die entsprechenden dunkelgrünen Knoten unter der Nexmo-Palette in Ihrem Node-RED-Editor oder schauen Sie in der NCCO-Referenz um mehr über sie zu erfahren.

In diesem Fall sollten Sie den Anrufer begrüßen und ihm die verschiedenen Möglichkeiten erklären, die er wählen kann, und dann seine Meinung hören. Zu diesem Zweck müssen Sie einen talk Knoten, gefolgt von einem input Knoten.

Fügen Sie sie zu Ihrem Arbeitsbereich hinzu und verbinden Sie sie dann zwischen den voice webhook und return ncco Knoten.

Creating an IVR answer urlCreating an IVR answer url

talk

Als nächstes öffnen Sie den talk Knoteneditor und setzen Sie das Feld Text{} auf die Nachricht, die dem Anrufer vorgelesen werden soll.

In diesem Lernprogramm werden wir 3 Routen implementieren:

  1. mit einem Menschen verbunden werden

  2. eine Sprachnachricht hinterlassen

  3. eine SMS mit einem Online-Buchungslink erhalten, also fügen wir den Text{}entsprechend. Z.B.. "Hallo, Sie haben X erreicht, bitte drücken Sie 1, um verbunden zu werden, drücken Sie 2, um eine Nachricht zu hinterlassen, oder drücken Sie 3, um online zu buchen."

Sie können das Erlebnis auch weiter personalisieren, indem Sie eine Voice Name oder durch die Verwendung von SSML-Tags.

Vergewissern Sie sich, dass Sie auch das Häkchen bei Zuschlagen aktivieren, damit der Anrufer seine Eingaben senden kann, bevor der Text zu Ende gelesen wurde. Dies ist in einem IVR sehr nützlich und verhindert, dass der Anrufer eine lange Liste von Optionen anhören muss.

Defining a talk action for the IVRDefining a talk action for the IVR

input

Als nächstes konfigurieren wir den input Knoten.

Sobald der Benutzer die erforderliche Anzahl von Ziffern eingegeben hat, werden diese als neuer Webhook gesendet, weshalb wir diesen Pfad konfigurieren müssen.

In das Feld URL {} Feld geben Sie die vollständige Adresse Ihrer NodeRED-Instanz ein, gefolgt von /input1 (IHRE_URL/Eingabe1) ein, dann setzen Sie die Method auf GET. Wenn wir später eine zweite Ebene für unser IVR erstellen, müssen wir diese Eingabe an eine andere Adresse senden, z. B. /input2.

Nutzen wir diese Gelegenheit, um die Nummer des Anrufers weiterzugeben, indem wir das Feld URL {} Feld auf YOUR_URL/input1?from={{msg.call.from}}. Dies könnte sich später als nützlich erweisen, wenn wir diese Nummern aufzeichnen wollen.

Lassen Sie Submit on Hash vorerst unmarkiert - dies würde dazu führen, dass die Eingabe durch Drücken der Taste # Taste drückt, z.B. um eine Kontonummer zu erfassen. Behalten Sie den Standardwert von Time Out, aber setzen Sie Max Digits auf 1. Dadurch wird sichergestellt, dass der Benutzer nur eine einzige Taste drücken kann, bevor die Eingabe gesendet wird, so dass wir maximal 9 Optionen in unserem Menü haben.

Providing an input for the IVR Answer actionProviding an input for the IVR Answer action

Verarbeitung der Eingabe

Nachdem der Anrufer seine Eingaben übermittelt hat, müssen wir sie über den neuen Webhook für das Eingabeereignis abhören.
Zunächst müssen wir diesen Endpunkt implementieren, um den Eingabewert zu erfassen, und dann auf der Grundlage dieses Wertes mit der vom Anrufer gewählten Route fortfahren.

Um eine Entscheidung auf der Grundlage des Eingabewerts zu treffen, verwenden wir einen switch Knoten, dann bauen wir für jede der Optionen den NCCO auf, indem wir Aktionsknoten miteinander verdrahten, die durch einen return NCCO Ausgangsknoten.

voice webhook

Beginnen Sie mit dem Hinzufügen eines voice webhook Knoten zu Ihrem Arbeitsbereich hinzu. Wählen Sie in seinen Knoteneigenschaften POST als Methode und geben Sie /input in das Feld Antwort-URL ein.

Wenn Sie eine Verbindung zu einem debug Knoten anschließen, nachdem Sie den Ablauf beendet und ausgeführt haben, würden Sie die Parameter sehen, die an die /input URL ZURÜCKGEGEBEN:

Name Description
uuid The unique ID of the Call leg for the user initiating the input.
conversation_uuid The unique ID for this conversation.
timed_out Returns true if this input timed out based on the value of Time Out.
dtmf The numbers input by your caller, in order.

In unserem Anwendungsfall versuchen wir, den dtmf Wert zu erhalten, da dies der vom Aufrufer gewählte Weg ist.

Wenn wir uns die Debug-Seitenleiste nach der Fertigstellung genauer ansehen, können wir feststellen, dass sie in der dtmf Eigenschaft des call Objekts innerhalb des msg Objekt verschachtelt ist, so dass wir es als {{msg.call.dtmf}} in den anderen Knoten dieses Pfades.

switch

Als nächstes werden wir die verschiedenen Routen anhand des {{msg.call.dtmf}} Wert wie folgt:

  1. leer ist -> lesen Sie die Optionen erneut vor

  2. Es handelt sich nicht um eine der angegebenen Optionen (enthält 0, 4, 5, 6, 7, 8, 9) -> lesen Sie die Optionen noch einmal vor

  3. = 1 -> Anrufer verbinden

  4. = 2 -> an Voicemail senden

  5. = 3 -> Onlinebuchungslink per SMS an den Anrufer senden.

Fügen Sie dazu einen switch Knoten zu Ihrer Leinwand hinzu, setzen Sie im Knoteneditor Property auf {{msg.call.dtmf}}und definieren Sie dann Regeln für die fünf oben genannten Fälle.

Building an IVR switchBuilding an IVR switch

Route 1 & 2: Ungültige Eingabe

Verbinden Sie die ersten beiden Ausgänge des switch Knotens mit dem Eingang des talk Eingang des Knotens. Wenn der Anrufer eine ungültige Eingabe macht (nicht 1, 2 oder 3), wird die anfängliche TTS-Nachricht mit den verfügbaren Optionen wiederholt.

Defining an invalid IVR inputDefining an invalid IVR input

Route 3: Anrufer verbinden

Um den eingehenden Anruf weiterzuleiten, müssen wir ihn mit einem neuen Endpunkt verbinden - in diesem Fall mit einer Telefonnummer. Dazu benötigen wir eine connect Aktion. Optional können wir auch einen talk Knoten hinzufügen, um dem Anrufer mitzuteilen, dass die Verbindung hergestellt wird.

Verdrahten Sie einen talk Knoten mit dem switch dritten Ausgang des Knotens, dann folgen ein connect und einem return ncco Knoten.

Zunächst sollten wir dem Anrufer mitteilen, dass er verbunden wird. In den talk Knoteneigenschaften, setzen Sie Text {} auf etwas wie Bitte warten Sie, während wir Sie verbinden. oder eine Nachricht Ihrer Wahl ein. Sie können diese Erfahrung anpassen, indem Sie ein Voice Name oder durch die Verwendung von [SSML-Tags](/voice/voice-api/concepts/customizing-tts).

Als nächstes öffnen Sie den connect Knoten-Editor, wählen Sie Phone als eine Endpoint und geben Sie die Nummer, die Sie anrufen möchten, in das Feld Number {} Feld ein.

Lassen Sie das From {} Lassen Sie das Feld leer, damit die Anrufer-ID als unbekannt angezeigt wird, oder tragen Sie eine Ihrer virtuellen Nexmo-Nummern ein.

Defining an IVR switch when connectedDefining an IVR switch when connected

Wenn Sie einen Blick auf das fertige Produkt werfen möchten, rufen Sie Ihre Nexmo-Nummer an und probieren Sie es aus! Achte nur darauf, dass du nicht die Taste 2 oder 3drücken, da wir diese Routen noch nicht implementiert haben.

In unserem Blogbeitrag [Weiterleitung eines Anrufs über einen Sprachproxy mit Node-RED] (https://developer.vonage.com/en/blog/forward-call-via-voice-proxy-node-red-dr) finden Sie eine ausführlichere Erklärung dieses Pfads.

Route 4: An die Voicemail senden

Der nächste Fall, den wir behandeln werden, ist, wenn der Anrufer die Taste 2drückt, um eine Sprachnachricht zu hinterlassen.
Wenn Sie die Voicemail von Grund auf neu erstellen möchten, finden Sie in unserem Tutorial [Build Your Own Voicemail With Node-RED and the Nexmo Voice API] (https://developer.vonage.com/en/blog/build-voicemail-node-red-voice-api-dr) eine Schritt-für-Schritt-Anleitung.

Andernfalls importieren Sie die folgende JSON-Datei aus der Zwischenablage in Ihren Node-RED-Editor:

[
    {
        "id": "1a10292a.0468d7",
        "type": "talk",
        "z": "5b66a8fe.c283c",
        "text": "Please leave your message at the tone.",
        "voicename": "",
        "bargein": false,
        "loop": "",
        "level": "",
        "x": 150,
        "y": 140,
        "wires": [
            [
                "9f6c7f15.1e4d48"
            ]
        ]
    },
    {
        "id": "9f6c7f15.1e4d48",
        "type": "record",
        "z": "5b66a8fe.c283c",
        "format": "mp3",
        "channel": "",
        "endonsilence": "3",
        "endonkey": "",
        "timeout": "",
        "beepstart": true,
        "eventurl": "YOUR_URL/record?from={{msg.call.from}}",
        "eventmethod": "post",
        "x": 360,
        "y": 140,
        "wires": [
            [
                "f5ae270b.51ba6"
            ]
        ]
    },
    {
        "id": "3062ef0c.58d478",
        "type": "http in",
        "z": "5b66a8fe.c283c",
        "name": "",
        "url": "/record",
        "method": "post",
        "upload": false,
        "swaggerDoc": "",
        "x": 230,
        "y": 300,
        "wires": [
            [
                "5b9e35c2.78611c",
                "a0e2a9ff.c666d8",
                "200966c.00b679a"
            ]
        ]
    },
    {
        "id": "200966c.00b679a",
        "type": "http response",
        "z": "5b66a8fe.c283c",
        "name": "",
        "statusCode": "",
        "headers": {},
        "x": 510,
        "y": 300,
        "wires": []
    },
    {
        "id": "5b9e35c2.78611c",
        "type": "getrecording",
        "z": "5b66a8fe.c283c",
        "creds": "",
        "filename": "recordings/{{msg.req.query.from}}_{{msg.payload.timestamp}}.mp3",
        "x": 460,
        "y": 360,
        "wires": [
            [
                "1c3d166.591956a"
            ]
        ]
    },
    {
        "id": "a0e2a9ff.c666d8",
        "type": "debug",
        "z": "5b66a8fe.c283c",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "x": 470,
        "y": 240,
        "wires": []
    },
    {
        "id": "a4651c0b.926068",
        "type": "e-mail",
        "z": "5b66a8fe.c283c",
        "server": "smtp.gmail.com",
        "port": "465",
        "secure": true,
        "tls": true,
        "name": "",
        "dname": "",
        "x": 930,
        "y": 360,
        "wires": []
    },
    {
        "id": "1c3d166.591956a",
        "type": "change",
        "z": "5b66a8fe.c283c",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "'Voicemail from ' & msg.req.query.from",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 720,
        "y": 360,
        "wires": [
            [
                "a4651c0b.926068"
            ]
        ]
    },
    {
        "id": "5a0c6126.26ff9",
        "type": "return ncco",
        "z": "5b66a8fe.c283c",
        "name": "",
        "x": 770,
        "y": 140,
        "wires": []
    },
    {
        "id": "f5ae270b.51ba6",
        "type": "talk",
        "z": "5b66a8fe.c283c",
        "text": "Thank you, good bye!",
        "voicename": "",
        "bargein": false,
        "loop": "",
        "level": "",
        "x": 550,
        "y": 140,
        "wires": [
            [
                "5a0c6126.26ff9"
            ]
        ]
    }
]

Damit das funktioniert, müssen Sie ein paar Dinge tun.

  1. Verbinden Sie zunächst den switch den 4. Ausgang des Knotens mit dem talk Knoten.

  2. Als nächstes müssen Sie in den record Knoteneigenschaften ersetzen Sie IHRE_URL durch die Adresse, unter der Sie den Node-RED-Editor hosten (YOUR_URL/record?from={{msg.call.from}}).

  3. In dem Get Recording Knoten unter Nexmo Anmeldeinformationen wählen Sie Ihre Sprachanwendung aus dem Dropdown-Menü.

  4. Im Knoten email Knoten setzen Sie To auf die E-Mail-Adresse, an die Sie die Sprachaufnahmen senden möchten, und geben Sie dann die Anmeldedaten Ihres E-Mail-Clients in den Feldern Userid und Password Felder ein.

Besuchen Sie Bereitstellenund schon sollte Ihre Voicemail einsatzbereit sein. Probieren Sie es aus!

Defining an IVR voicemailDefining an IVR voicemail

Die letzte Route, die wir erstellen müssen, ist für den Fall, dass der Anrufer die Taste 3drückt und sich dafür entscheidet, einen Online-Buchungslink per SMS zu erhalten.

Zunächst Importieren aus der Zwischenablage das unten stehende Snippet:

[
    {
        "id": "a69bd1e4.39586",
        "type": "sendsms",
        "z": "5b66a8fe.c283c",
        "creds": "",
        "to": "{{msg.call.from}}",
        "fr": "",
        "text": "This is supposed to be your link :)",
        "unicode": false,
        "x": 550,
        "y": 660,
        "wires": [
            [
                "3fd04afe.60abf6"
            ]
        ]
    },
    {
        "id": "3fd04afe.60abf6",
        "type": "debug",
        "z": "5b66a8fe.c283c",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "x": 750,
        "y": 660,
        "wires": []
    },
    {
        "id": "2af4d230.bb1bbe",
        "type": "talk",
        "z": "5b66a8fe.c283c",
        "text": "Your message is on its way!",
        "voicename": "",
        "bargein": false,
        "loop": "",
        "level": "",
        "x": 350,
        "y": 600,
        "wires": [
            [
                "a69bd1e4.39586",
                "6f1df801.8db2e8"
            ]
        ]
    },
    {
        "id": "6f1df801.8db2e8",
        "type": "return ncco",
        "z": "5b66a8fe.c283c",
        "name": "",
        "x": 610,
        "y": 600,
        "wires": []
    }
]

Nachdem Sie ihn zu Ihrem Arbeitsbereich hinzugefügt haben, verbinden Sie den switch Knoten mit dem letzten Ausgang des talk Eingang des Knotens.

defining the path for the IVR sms defining the path for the IVR sms

Schauen wir uns nun die einzelnen Knoten in diesem Pfad genauer an.

talk

Wir verwenden den talk Knoten, um dem Anrufer eine Rückmeldung zu geben, dass etwas passiert. Sie können mit [benutzerdefinierten Sprachnamen]((/voice/voice-api/guides/text-to-speech#voice-names)) oder [SSML-Tags]((/voice/voice-api/concepts/customizing-tts)) kreativ werden, aber eine einfache "Ihre Nachricht ist auf dem Weg!" ist ebenfalls ausreichend.

return NCCO

Es folgt ein return NCCO Knoten, um auch diesen Pfad zu schließen und unsere "Anweisungen" zurück an die Nexmo-API zu senden. Hier ist keine Einrichtung erforderlich.

Send SMS

Der Send SMS Knoten übernimmt die Hauptarbeit dieses Pfades, da er die SMS versendet.
Sie können diesen Knoten einrichten, indem Sie auf ihn doppelklicken und die unten stehenden Parameter eingeben. Sie finden API KEY und API SECRET durch einen Klick auf die Schaltfläche Bearbeiten neben Nexmo Credentialsklicken, nachdem Sie Neuen nexmobasic hinzufügen aus der Dropdown-Liste auswählen.

KEY DESCRIPTION
API KEY Your Nexmo API key, shown in your [account overview](${CUSTOMER_DASHBOARD_URL}/getting-started-guide).
API SECRET Your Nexmo API secret, shown in your [account overview](${CUSTOMER_DASHBOARD_URL}/getting-started-guide).
TO The number you are sending the SMS to. In this case {{msg.call.from}}, the caller.
FROM The number or text shown on a handset when it displays your message. You can set a custom alphanumeric FROM to better represent your brand, if this feature is [supported in your country](https://help.nexmo.com/hc/en-us/articles/115011781468). Otherwise, add one of your Nexmo numbers.
TEXT The content of your message. Time to get creative :)

An IVR sms  nodeAn IVR sms node

Der debug Knoten ist völlig optional, aber er ist sehr nützlich, wenn Sie etwas mehr Details in der Debug-Seitenleiste sehen wollen.

Vielleicht möchten Sie einen Blick auf unseren [How to Send SMS Messages with Node-RED guide] (https://developer.vonage.com/en/blog/send-sms-messages-node-red-dr) werfen, um mehr über die Verwendung der SMS API zu erfahren.

Probieren Sie es aus!

Herzlichen Glückwunsch! Sie haben sich soeben ein voll funktionsfähiges interaktives Sprachdialogmenü gebaut! Jetzt ist es an der Zeit, es auszuprobieren, also viel Spaß!

Wha tthe final IVR looks likeWha tthe final IVR looks like

Wie geht es weiter?

Ressourcen

Versuchen Sie ein anderes Tutorial!

Share:

https://a.storyblok.com/f/270183/250x250/7b3c6fe5f6/julia.png
Julia BiroVonage Ehemalige

Julia ist Developer Advocate für Vonage und konzentriert sich auf Low-Code-Technologien und -Integrationen. Sie stellt Dinge her und zerstört sie, erforscht ein weiteres Erstellungswerkzeug. Sie stellt immer wieder die Zugangsbarrieren zu Technologien in Frage und hat eine Leidenschaft für das Lernen und Lehren und die Schaffung von Ressourcen für die Gemeinschaft.