
Telefonanrufe über WebSockets in einen Dialogflow Chatbot einbinden
Lesedauer: 12 Minuten
Einführung
Dieses Tutorial zeigt Ihnen, wie Sie mit Dialogflow Essentials und einer Vonage WebSockets-Integration einen Telefonanruf an einen Dialogflow-Agenten tätigen können.
Das folgende Diagramm zeigt einen Überblick über die Architektur.
Diagram of the call
Voraussetzungen
Um die in den folgenden Schritten beschriebenen Aktionen durchführen zu können, müssen Sie eine Datei erstellen:
Einen Dialogflow-Agenten erstellen
Dialogflow ist eine Software as a Service (SaaS) und eine Plattform für das Verstehen natürlicher Sprache, die für die Erstellung von dialogorientierten Benutzeroberflächen verwendet wird.
Ein Agent ist eine Dialogflow-Instanz, die Sie sich als Ihre Chatbot-Anwendung vorstellen können. Er ermöglicht es Ihnen, das, was die Benutzer sagen, auf Intentionen und sie mit Antworten zu versorgen.
Folgen Sie den Schritten
Öffnen Sie die Dialogflow-Konsole
Erstellen Sie einen Agenten, indem Sie ihm einen Namen geben, die Standardsprache einstellen, die Zeitzone wählen und auf die Schaltfläche zum Erstellen eines Agenten klicken. Die Schaltfläche kann entweder als
CreateoderCreate AgentKlicken Sie im Menü auf der linken Seite auf das Zahnradsymbol
Klicken Sie unter Google Project auf den Namen der Projekt-ID. Zum Beispiel,
VonageDFDies führt Sie zur Google Cloud-Konsole
Gif showing the steps to create the dialogflow Agent
Erstellen Sie ein Service-Konto in der Google Cloud-Konsole
Wir werden die grafische Benutzeroberfläche verwenden, um unser Google Cloud-Projekt und unsere Ressourcen über die Google Cloud-Konsole zu verwalten, wobei wir dasselbe Projekt verwenden, das in Dialogflow erstellt wurde. In den folgenden Schritten werden wir ein Service-Konto für die Zugriffskontrolle und Authentifizierung erstellen.
Folgen Sie den Schritten
Von der Google Cloud-Konsoleklicken Sie auf
Go to project settingsKlicken Sie im Menü auf der linken Seite auf
Service accountsKlicken Sie in der oberen Leiste auf
+ Create Service AccountGeben Sie ihm einen Namen für den Service Account, den Sie sich merken können, z. B.
VonageDFBeschreibung eines Servicekontos hinzufügen
Klicken Sie auf
Create and ContinueUnter
Grant this service account access to projectfiltern und wählen Sie die RolleDialogflow API Admin
Gif showing the seven above steps while creating the Service Account
Sie werden nun zur Seite Servicekonten zurückgebracht
Klicken Sie auf die drei Punkte unter
actionKlicken Sie auf
Manage keysKlicken Sie auf
Add KeyKlicken Sie auf
Create new KeyWählen Sie
JSONKlicken Sie auf
CreateSie können sehen, dass eine
.jsonDatei heruntergeladen wurde. Wir fügen diese Datei in das Dialogflow Reference Connection GitHub-Repository das wir im nächsten Schritt klonen werden
Gif showing the above steps to generate the keys
Einrichten der Dialogflow-Referenzverbindung
Die Dialogflow-Referenzverbindung macht Gebrauch von der WebSockets-Funktion der Voice API von Vonage. Wenn ein Sprachanruf aufgebaut wird, löst eine Voice API-Anwendung eine WebSocket-Verbindung mit der Dialogflow-Referenz-Verbindung. Sie streamt die Audiodaten zum und vom Voice-Anruf in Echtzeit.
In den folgenden Schritten werden wir zwei Optionen als Beispiele angeben. Verwendung von ngrok, um den Verbindungsserver zu tunneln, der mit unserem Dialogflow-Agenten interagiert, und ihn auf Heroku bereitzustellen.
Folgen Sie den Schritten
Klonen Sie das dialogflow-reference-connection-Repository von GitHub und ändern Sie das Verzeichnis
git clone https://github.com/nexmo-community/dialogflow-reference-connection && cd dialogflow-reference-connectionÖffnen Sie den Code in Ihrem bevorzugten IDE oder Texteditor
Fügen Sie die
.jsonDatei, die soeben heruntergeladen wurde, in das Stammverzeichnis des Projekts einErstellen Sie eine
.envDatei aus der.env.exampleBefüllen Sie die Umgebungsvariablen:
GCLOUD_PROJECT_ID=<TheProjectIdFoundOnDialogflow>GOOGLE_CLOUD_CREDENTIALS=<TheJSONFileYouDownloaded.json>Über das Terminal:Installieren Sie die Abhängigkeiten
npm installFühren Sie die Datei Dialogflow Verbindungsserver
node df-connecting-server.jsEs gibt viele Bereitstellungsarten, z. B. App Engine, Heroku, Cloud Run.
In diesem Tutorium werden wir Beispiele mit der ngrok tunneln. Hier ist ein Link, der mehr über ngrok und Heroku.
Option 1: Beispiel mit ngrok
ausführen.
ngrok http 5000Notieren Sie sich die in der Konsole gefundene URL (z. B.
xxxx.ngrok.io). Wir werden diese Informationen im TeilDF_CONNECTING_SERVERArgument der Einrichtung der Dialogflow Voice API Beispielanwendung' des Tutorials hinzufügen
The ngrok URL highlighted on the IDE
Option 2: Beispiel mit Heroku
Installieren Sie git
Installieren Heroku Befehlszeile und melden Sie sich bei Ihrem Heroku Account an
Wenn Sie noch kein lokales Git-Repository haben, erstellen Sie eines:
git initBeginnen Sie mit der Erstellung dieser Anwendung auf Heroku von der Kommandozeile aus unter Verwendung der Heroku CLI. Hinweis: Ersetzen Sie in dem unten stehenden Befehl
thisappnamedurch einen eindeutigen Namen für die gesamte Heroku-Plattform.heroku create thisappnameKlicken Sie in Ihrem Heroku-Dashboard, wo Ihre Anwendungsseite angezeigt wird, auf die
SettingsSchaltfläche, fügen Sie die folgendenConfig Varsund setzen Sie sie mit den entsprechenden Werten:
Die Anwendung bereitstellen
git push heroku masterodergit push heroku mainje nach dem Namen Ihrer Verzweigung.Notieren Sie sich die in der Konsole gefundene URL (z. B.
thisappname.herokuapp.com). Wir werden diese Informationen imDF_CONNECTING_SERVERArgument des Teils 'Einrichten der Dialogflow Voice API Beispielanwendung' des Tutorials
Einrichten Ihrer Vonage Voice API Application Credentials und Telefonnummern
Folgen Sie den Schritten
Erstellen Sie eine Anwendung über das Vonage API Dashboard
Geben Sie der Anwendung einen Namen, zum Beispiel
VonageDFKlicken Sie auf die Schaltfläche zum Generieren eines öffentlichen und privaten Schlüssels, eine
private.keyDatei heruntergeladen werden. Wir werden sie im nächsten Abschnitt dieses Tutorials zur Dialogflow Voice API Beispielanwendung hinzufügenVerknüpfen Sie eine Rufnummer mit dieser Anwendung. Wenn Sie noch keine haben, klicken Sie im Menü auf der linken Seite auf
Numbersund dannBuy Numbersund folgen Sie den Schritten, um sie zu erwerben
Wir werden die Dialogflow Voice API-Beispielanwendung einrichten und bald auf dieses Vonage-Anwendungs-Dashboard zurückkommen, um weitere Informationen hinzuzufügen.
Einrichten der Dialogflow Voice API-Beispielanwendung
Diese Beispielanwendung verwendet die Vonage Voice API, um eingehende Sprachanrufe zu beantworten und eine WebSocket-Verbindung einzurichten, um Audio für jeden Anruf zur und von der Dialogflow-Referenzverbindung zu streamen.
Die dialogflow-Referenzverbindung Code wird:
Senden Sie Audio an den Dialogflow-Agenten aus der Sprache des Anrufers,
Streamen Sie Audioantworten vom Dialogflow-Agenten über den WebSocket an den Anrufer,
Rückmeldung von Echtzeit-Transkripten und Bewertungen des Sprachgefühls des Anrufers über Webhooks-Rückrufe an diese Voice API Beispielanwendung.
Sobald diese Anwendung läuft, rufen Sie die mit Ihrer Anwendung verknüpfte Telefonnummer an, um per Sprache mit Ihrem Dialogflow-Agenten zu kommunizieren.
Wir werden ngrok verwenden, um den Verbindungsserver zu tunneln, der mit unserem Dialogflow-Agenten interagiert. Wenn Sie jedoch ein Beispiel mit Heroku sehen möchten, können Sie die Schritte von Dialogflow Voice API Beispielanwendung von GitHub folgen.
Folgen Sie den Schritten
Klonen Sie von Ihrem Terminal aus die Dialogflow Voice API Beispielanwendung von GitHub und wechseln Sie das Verzeichnis
git clone https://github.com/nexmo-community/dialogflow-sample-voice-application && cd dialogflow-sample-voice-applicationSie können die folgenden Schritte weiter erklären oder der Readme-Datei der Dialogflow Voice API BeispielanwendungFügen Sie die
private.keydie aus dem Vonage Dashboard generiert und auf Ihren Rechner heruntergeladen wurde, in das Stammverzeichnis des Projekts einAus dem
.env.exampleerstellen Sie eine.envDateiBefüllen Sie die Umgebungsvariablen mit den Informationen, die auf dem Vonage API Dashboard
Die
SERVICE_NUMBERist die virtuelle Nummer, die Sie erworben haben. Denken Sie daran, die Landesvorwahl ohne 00 oder + vorher hinzuzufügenDer
DF_CONNECTING_SERVERist der Server aus der Dialogflow-Referenz, die Sie bereits laufen haben (der, den Sie zuvor notiert haben)
Installieren Sie die Abhängigkeiten
npm installFühren Sie die
df-application.jsnode df-application.jsNachfolgend finden Sie die nächsten Schritte für ngrok bzw. für Heroku:Option 1: Nachfolgend die Schritte mit ngrok
Führen Sie in einem separaten Terminal-Tab aus
ngrok http 8000Gehen Sie zurück zur Vonage Dashboard-Website und wählen Sie unter Fähigkeiten:Schalten Sie Voice ein, um diese Funktion zu aktivieren
Fügen Sie die ngrok-URL hinzu, die auf
dialogflow-sample-voice-applicationgefolgt von/answerin die Antwort-URL ein. Stellen Sie sicher, dass HTTP GET ausgewählt ist.Fügen Sie die ngrok-URL hinzu, die auf
dialogflow-sample-voice-applicationgefolgt von/eventin die Ereignis-URL ein. Stellen Sie sicher, dass HTTP POST ausgewählt ist.Klicken Sie auf Änderungen speichern
Vonage Dashboard
Option 2: Nachfolgende Schritte mit Heroku
Wenn Sie noch kein lokales Git-Repository haben, erstellen Sie eines in einem separaten Terminal-Tab:
git initBeginnen Sie mit der Erstellung dieser Anwendung auf Heroku von der Kommandozeile aus unter Verwendung der Heroku CLI. Hinweis: Ersetzen Sie im Befehl
myappnamedurch einen eindeutigen Namen für die gesamte Heroku-Plattform.heroku create myappnameKlicken Sie in Ihrem Heroku-Dashboard, wo Ihre Anwendungsseite angezeigt wird, auf die
SettingsSchaltfläche, fügen Sie die folgendenConfig Varsund setzen Sie sie mit den entsprechenden Werten aus Ihrer.envDatei.
Fügen Sie auch den Parameter PRIVATE_KEY_FILE mit dem Wert ./private.key
Klicken Sie in Ihrem Heroku-Dashboard, wo Ihre Anwendungsseite angezeigt wird, auf die Schaltfläche
Open Appund kopieren Sie die URLLassen Sie uns nun die Anwendung bereitstellen. Gehen Sie zurück auf die Vonage Dashboard-Website und wählen Sie unter capabilities:
Schalten Sie Voice ein, um diese Funktion zu aktivieren
Dieser Hostname (die URL, die Sie gerade von Heroku kopiert haben) wird gefolgt von
/answerin der Antwort-URL. Stellen Sie sicher, dass HTTP GET ausgewählt istMachen Sie dasselbe für
/eventfür die Ereignis-URL. Stellen Sie sicher, dass HTTP POST ausgewählt ist.Klicken Sie auf Änderungen speichern
Vonage Dashboard
Verbesserung des Dialogflow-Agenten
Wenn Sie an dieser Stelle des Tutorials versuchen würden, die Telefonnummer anzurufen, könnten Sie mit dem Ausgangspunkt des Gesprächs aus der Dialogflow-Perspektive interagieren, dem Default Welcome Intent.
Aus der Liste der Benutzerantworten würde eine Nachricht an den Anrufer zurückgeschickt werden. Aber das Gespräch würde nicht weitergehen, da wir keine anderen Daten für andere Gesprächsrunden trainiert haben.
Lassen Sie uns einen Schritt zurückgehen und einige der Concepts von Dialogflow erkunden, um die Äußerungen der Benutzer hinzuzufügen, sie mit einer Antwort zu versehen und das Ende der Konversation hinzuzufügen, so dass Sie sehen können, wie eine vollständige Konversation abwechselnd stattfindet.
Sobald Sie einen Agenten erstellt haben, erstellen Sie Intents, die die Konversation steuern und gestalten.
Im Falle einer Benutzeräußerung gleicht Dialogflow das Gesagte mit einer Absicht ab, die auf dem NLP und den Trainingssätzen basiert, die ein Benutzer möglicherweise sagen könnte, um dieser Absicht zu entsprechen. Sobald die Absichtsklassifizierung erfolgt ist, wird eine Antwort an den Benutzer zurückgeschickt.
Entitäten sind die Arten von Informationen, die wir aus dem Gespräch extrahieren werden. In dem unten beschriebenen Anwendungsfall buchen wir einen Tisch per Telefonanruf. Die Informationen, die wir aus dem Gespräch extrahieren werden, sind person, date und time.
Verbessern wir den Standard-Willkommens-Intent, erstellen wir einen Intent, skizzieren wir die Entitäten und fügen wir ein Ende der Konversation hinzu und testen wir es.
Folgen Sie den Schritten
Öffnen Sie die Dialogflow-Konsole und stellen Sie sicher, dass Sie sich im richtigen Agenten für dieses Tutorial befinden
Klicken Sie auf das
Default Welcome IntentScrollen Sie nach unten, löschen Sie die Antworten und fügen Sie sie hinzu:
Welcome to our Demonstration Restaurant. When and for whom would you like to book a table?Speichern anklicken
Klicken Sie auf den Menüpunkt Intents
Klicken Sie auf die Schaltfläche New Intent
Geben Sie ihm den Namen
Table BookerFügen Sie unter Trainingsphrasen die folgenden Trainingsphrasen hinzu
Einen Tisch für Nicole am 10. um 13:00 Uhr, bitte.
Kann ich am 10.12.2021 um 14:00 Uhr einen Platz für Joseph buchen?
Ich möchte einen Tisch am 10.09.2020 um 16:00 Uhr für Amanda reservieren Sie werden feststellen, dass bei der Eingabe dieser Sätze einige Wörter farblich hervorgehoben werden. Achten Sie darauf, die Wörter doppelt anzuklicken und sicherzustellen, dass sie die richtigen Einheiten verwenden
@sys.person,@sys.dateund@sys.time.
Kreuzen Sie unter Aktionen und Parameter
requiredfürperson,dateundtimeFügen Sie Aufforderungen für jeden der Parameter hinzu, denn falls sie diese spezifischen Informationen während des Gesprächs nicht gesagt haben, werden sie aufgefordert, sie hinzuzufügen
Training phrases examples
In der Antwort können Sie Folgendes hinzufügen:
Table booked for $person at $time on $date. Thank you!Umschalten auf
Set this intent as end of conversation, unter AntwortenSpeichern anklicken
Table Booker Intent Overview
Interaktion über Voice mit dem Dialogflow-Agenten
Nun, da wir alle Teile eingerichtet haben, ist es an der Zeit, Ihre virtuelle Telefonnummer anzurufen und sie auszuprobieren. Lassen Sie uns durchgehen, was vor sich geht, und folgen Sie dann unserem letzten Schritt, um den Anruf zu tätigen!
Sobald Sie die Telefonnummer anrufen, die mit Ihrer Voice API-Anwendung verknüpft ist, um mit dem Dialogflow-Agenten zu interagieren, hören Sie die Bestätigungsmeldung: Connecting your call, please wait.. Dieser Text To Speech von der Vonage API-Plattform wird abgespielt, sobald die Plattform Ihren Anruf entgegennimmt.
Sobald die WebSocket-Verbindung hergestellt ist, spielt die Vonage API-Plattform den Text To Speech Hello an den Dialogflow-Agenten ab (Sie als Anrufer werden das nicht hören).
Sie haben soeben die vom Dialogflow-Agenten zurückgelesenen Einstellungen vorgenommen.
An diesem Punkt interagieren Sie mit den Intents, die Sie im vorherigen Abschnitt dieses Tutorials eingerichtet haben, um einen Tisch zu buchen.
Sie sehen die Transkriptionen auf der Dialogflow-Referenzverbindungsanwendungskonsole und auch auf der Dialogflow-Beispielanwendungskonsole für die Voice API.
Wenn Sie die Ergebnisse der Stimmungsanalyse sehen möchten, müssen Sie die Cloud Natural API in der Google Cloud-Konsole aktivieren. Wenn sie nicht aktiviert ist, erhalten Sie eine Fehlermeldung ähnlich der folgenden PERMISSION_DENIED: Cloud Natural Language API has not been used in project xxxx before or it is disabled.
Gehen wir nun zum letzten Schritt über und sehen wir uns alle Bausteine zusammen in Aktion an!
Folgen Sie den Schritten
Rufen Sie die mit Ihrer Voice API-Anwendung verknüpfte Telefonnummer an und interagieren Sie mit dem Dialogflow-Agenten
Hier ist eine Möglichkeit, wie Sie das Gespräch testen können:
Vonage Websocket: Ihr Anruf wird verbunden, bitte warten.
Bot: Willkommen in unserem Vorführrestaurant. Wann und für wen möchten Sie einen Tisch reservieren?
Sie: Ich möchte einen Tisch am 01.09.2022 um 10:00 Uhr für Tanya reservieren.
Antwort des Botschafters: Tisch reserviert für Tanya um 10:00 am 01/09/2022. Dankeschön!
Ende des Gesprächs
Herzlichen Glückwunsch
Sie haben dieses Tutorial zum Telefonieren mit einem Dialogflow-Agenten unter Verwendung einer Vonage WebSockets-Integration abgeschlossen.
Ressourcen
Sie finden das Dialogflow-Referenzbeispiel und Sample Voice Application auf Github.
Prüfen Sie das WebSockets-Referenzhandbuch.
Prüfen Sie die Ein Blogbeitrag, der ngrok erklärt.
Sie können sich auch ein ähnliches Beispiel ansehen, bei dem ein Amazon Lex Bot.
Ich hoffe, dass Ihnen dies gefallen hat. Sie können mich gerne kontaktieren auf Twitter oder treten Sie unserem Slack-Kanal der Gemeinschaft.