In diesem Codelab erfahren Sie, wie Sie einen Frontend-Django-Client erstellen, um eine Konversationsschnittstelle für eine Dialogflow-App zu entwickeln. Konkret gehen Sie so vor:
- Laden Sie den Django-Frontend-Client herunter, richten Sie ihn ein und führen Sie ihn aus.
- Richten Sie den Dialogflow-Endpunkt „detectIntent“ ein, der vom Django-Frontend-Client aufgerufen werden soll.
- Stellen Sie die Anwendung in Google Cloud in App Engine bereit.
- Testen Sie, ob Kalendereinladungen gemäß Nutzeranfrage eingerichtet werden.
Vorbereitung
Bevor Sie fortfahren, müssen Sie die folgenden Codelabs durcharbeiten:
- Terminplaner mit Dialogflow erstellen
- Entitäten in Dialogflow verstehen
- Auftragsausführung durch Integration von Dialogflow mit Google Kalender
Lerninhalte
- Django-Frontend-Client für Dialogflow einrichten und ausführen
- Django-Frontend-Client in Google Cloud in App Engine bereitstellen
- Dialogflow-App über ein benutzerdefiniertes Frontend testen
Aufgaben
- Sie richten einen Django-Frontend-Client für Dialogflow ein und führen ihn aus.
- Sie stellen den Django-Frontend-Client in Google Cloud auf App Engine bereit.
- Sie testen eine Dialogflow-App über dieses benutzerdefinierte Frontend.
Voraussetzungen
- Grundlegendes Verständnis von Python
- Grundlegende Kenntnisse von Dialogflow
Sie verwenden die Terminplaner-Konversationsfunktion, die Sie zuvor erstellt haben, und erstellen ein benutzerdefiniertes Frontend für die App. Sie erstellen das Frontend mit Django, führen es lokal aus und testen es und stellen es in App Engine bereit.
Der Nutzer sendet über das Frontend eine Terminanfrage, wodurch die Dialogflow-API „detectIntent“ aufgerufen wird, um einen Termin für das angegebene Datum und die angegebene Uhrzeit zu vereinbaren. Die Dialogflow-Auftragsausführung sendet dann eine Anfrage an Google Kalender, um den entsprechenden Termin festzulegen, und gibt über Dialogflow eine Bestätigung an den Nutzer zurück.
Das Endergebnis sieht so aus:
- Klonen Sie das Repository auf Ihren lokalen Computer, indem Sie diesen Befehl in das lokale Terminal Ihres Computers eingeben:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- Wechseln Sie zu dem Verzeichnis, das den Code enthält. Alternativ können Sie das Beispiel als ZIP-Datei herunterladen und extrahieren.
cd Django-Dialogflow-Appointment-Scheduler
Nach der Bereitstellung verwendet die Anwendung den in die App Engine-Standardumgebung integrierten Cloud SQL-Proxy, um mit der Cloud SQL-Instanz zu kommunizieren. Sie müssen jedoch eine lokale Kopie des Cloud SQL-Proxys in Ihrer Entwicklungsumgebung installieren und verwenden, um die Anwendung lokal zu testen. Weitere Informationen finden Sie unter Informationen zum Cloud SQL-Proxy.
Für einfache Verwaltungsaufgaben in der Cloud SQL-Instanz können Sie den Cloud SQL for MySQL-Client verwenden.
Cloud SQL-Proxy installieren
Laden Sie den Cloud SQL-Proxy herunter und installieren Sie ihn. Der Cloud SQL-Proxy wird verwendet, um eine Verbindung zu Ihrer Cloud SQL-Instanz herzustellen, wenn Programme lokal ausgeführt werden.
Laden Sie den Proxy herunter.
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
Machen Sie den Proxy ausführbar.
chmod +x cloud_sql_proxy
Cloud SQL-Instanz erstellen
- Cloud SQL for MySQL-Instanz der zweiten Generation erstellen: Benennen Sie die Instanz „polls-instance“ oder ähnlich. Es kann einige Minuten dauern, bis die Instanz bereit ist. Sobald das der Fall ist, wird sie in der Instanzenliste aufgeführt.
- Führen Sie mit dem gcloud-Tool den folgenden Befehl aus. Dabei stellt
[YOUR_INSTANCE_NAME]
den Namen Ihrer Instanz dar. Notieren Sie sich den für den Namen der Instanzverbindung angezeigten Wert für den nächsten Schritt. Er wird im Format[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
angezeigt.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
Alternativ können Sie auf die Instanz klicken, um den Namen der Instanzverbindung aufzurufen.
Cloud SQL-Instanz initialisieren
Starten Sie den Cloud SQL-Proxy mit dem Verbindungsnamen der Instanz aus dem vorherigen Schritt. Ersetzen Sie [YOUR_INSTANCE_CONNECTION_NAME]
durch den Wert, den Sie im vorherigen Schritt notiert haben. Dadurch wird eine Verbindung vom lokalen Computer zur Instanz hergestellt, damit lokale Tests durchgeführt werden können. Lassen Sie den Cloud SQL-Proxy während des lokalen Tests Ihrer App laufen.
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
Als Nächstes müssen Sie einen neuen Cloud SQL-Nutzer mit einer verknüpften Datenbank erstellen.
- Erstellen Sie mit der Google Cloud Console eine neue Datenbank für Ihre Cloud SQL-Instanz mit dem Namen polls-instance. Sie können beispielsweise „Umfragen“ als Namen eingeben.
- Erstellen Sie mit der Cloud Console ein neues Nutzerkonto für Ihre Cloud SQL-Instanz mit dem Namen polls-instance.
Datenbankeinstellungen konfigurieren
- Öffnen Sie
mysite/settings.py
zum Bearbeiten. - Ersetzen Sie an zwei Stellen
[YOUR-USERNAME]
und[YOUR-PASSWORD]
durch den Datenbanknutzernamen und das Passwort, die Sie im vorherigen Abschnitt erstellt haben. So wird die Verbindung zur Datenbank für die App Engine-Bereitstellung und lokale Tests eingerichtet. - Ersetzen Sie in der Zeile
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_NAME],'
[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
durch den Wert, den Sie im vorherigen Abschnitt notiert haben. - Führen Sie den folgenden Befehl aus und kopieren Sie den ausgegebenen Wert für den Namen der Instanzverbindung für den nächsten Schritt.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
- Ersetzen Sie
[YOUR-CONNECTION-NAME]
durch den Wert, den Sie im vorherigen Abschnitt notiert haben. - Ersetzen Sie
[YOUR-DATABASE]
durch den Namen, den Sie im vorherigen Abschnitt ausgewählt haben.
# [START db_setup] if os.getenv('GAE_APPLICATION', None): # Running on production App Engine, so connect to Google Cloud SQL using # the unix socket at /cloudsql/<your-cloudsql-connection string> DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '/cloudsql/[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]', 'USER': '[YOUR-USERNAME]', 'PASSWORD': '[YOUR-PASSWORD]', 'NAME': '[YOUR-DATABASE]', } } else: # Running locally so connect to either a local MySQL instance or connect to # Cloud SQL via the proxy. To start the proxy via command line: # $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306 # See https://cloud.google.com/sql/docs/mysql-connect-proxy DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': '3306', 'NAME': '[YOUR-DATABASE]', 'USER': '[YOUR-USERNAME]', 'PASSWORD': '[YOUR-PASSWORD]' } } # [END db_setup]
- Schließen und speichern Sie
settings.py
.
- Klicken Sie in der Dialogflow-Konsole auf
. Klicken Sie auf dem Tab Allgemein neben Projekt-ID auf Google Cloud
.
- Klicken Sie auf das Navigationsmenü ☰ > APIs & Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > Dienstkonto.
- Geben Sie unter Dienstkontodetails „appointment-scheduler“ als Name des Dienstkontos ein und klicken Sie dann auf Erstellen.
- Klicken Sie unter Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Weiter, um diesen Schritt zu überspringen.
- Klicken Sie unter Nutzern Zugriff auf dieses Dienstkonto erteilen (optional) auf Schlüssel erstellen > JSON > Erstellen.
Eine JSON-Datei wird auf Ihren Computer heruntergeladen. Sie benötigen sie in den folgenden Einrichtungsabschnitten.
- Ersetzen Sie im Chatordner
AppointmentScheduler.json
durch Ihre JSON-Datei mit Anmeldedaten. - Ändern Sie in
views.py
im ChatordnerGOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
in Ihre Projekt-ID.
Zum Ausführen der Django-App auf Ihrem lokalen Computer müssen Sie eine Python-Entwicklungsumgebung einrichten, einschließlich Python, pip und virtualenv. Eine Anleitung finden Sie unter Python-Entwicklungsumgebung einrichten.
- Erstellen Sie eine isolierte Python-Umgebung und installieren Sie Abhängigkeiten:
virtualenv env source env/bin/activate pip install -r requirements.txt
- Führen Sie die Django-Migrationen aus, um die Modelle einzurichten.
python3 manage.py makemigrations python3 manage.py makemigrations polls python3 manage.py migrate
- Starten Sie einen lokalen Webserver:
python3 manage.py runserver
- Geben Sie in Ihrem Webbrowser http://localhost:8000/ ein. Sie sollten eine einfache Webseite wie im folgenden Screenshot sehen:
Die Beispiel-App-Seiten werden vom Django-Webserver bereitgestellt, der auf Ihrem Computer ausgeführt wird. Wenn Sie fortfahren möchten, drücken Sie Control+S
(Command+S
auf Macintosh), um den lokalen Webserver zu beenden.
Führen Sie den folgenden Befehl aus, um alle statischen Dateien der App in den durch STATIC_ROOT
angegebenen Ordner in settings.py
zu verschieben:
python3 manage.py collectstatic
Laden Sie die App hoch, indem Sie im Verzeichnis der App, in dem sich die Datei app.yaml
befindet, den folgenden Befehl ausführen:
gcloud app deploy
Warten Sie auf die Nachricht, dass das Update abgeschlossen ist.
Geben Sie in Ihrem Webbrowser https://<your_project_id>.appspot.com ein.
Dieses Mal wird Ihre Anfrage von einem Webserver bearbeitet, der in der App Engine-Standardumgebung ausgeführt wird.
Mit dem Befehl app deploy
wird die App wie unter app.yaml
beschrieben bereitgestellt und die neu bereitgestellte Version als Standardversion festgelegt. Dadurch wird der gesamte neue Traffic verarbeitet.
Rufen Sie https://<your_project_id>.appspot.com auf und geben Sie Folgendes ein:
- Nutzer: „Stell einen Termin für die Fahrzeugregistrierung auf morgen um 15:00 Uhr ein.“
- Der Chatbot antwortet so:
- Google Kalender bucht die Antwort.
Wenn Sie weitere Dialogflow-Codelabs durcharbeiten möchten, überspringen Sie diesen Teil jetzt und kehren Sie später dazu zurück.
Dialogflow-Agent löschen
- Klicken Sie neben Ihrem vorhandenen Agent auf
.
- Scrollen Sie auf dem Tab Allgemein ganz nach unten und klicken Sie auf Diesen Agent löschen.
- Geben Sie im eingeblendeten Fenster Löschen ein und klicken Sie auf Löschen.
Sie haben einen Chatbot in Dialogflow erstellt und in Google Kalender eingebunden. Sie sind jetzt Chatbot-Entwickler!
Weitere Informationen
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Vision API in Dialogflow einbinden
- Codebeispiele auf der Seite Dialogflow GitHub