Es empfiehlt sich beim Durchführen der Installationsschritte nur mit einem Google-Account angemeldet zu sein. Durch Fehler im Mutliaccount-Handling über die verschiedenen Services hinweg, kann es passieren, dass Schritte nicht ohne weiteres durchgeführt werden können.
Zunächst muss unterhttps://console.firebase.google.com/ ein neues Projekt erstellt werden.
Hierzu wählt man zunächst in der Sidebar den Punkt Database aus.
Anschließend wird die Anlage eines Firestore direkt angeboten.
Hierbei ist es wichtig den Firestore im Testmodus zu starten. Das erlaubt uns in der Folge die Kalenderdaten von außen in die Datenbank zu importieren.
Die Credentials zur Kommunikation mit dem Firebase-Projekt sind den Projekteinstellungen zu entnehmen.
Hier navigieren wir zum Punkt Dienstkonten und wählen Firebase Admin SDK.
Aus den gezeigten Code-Snippets entnehmen wir die URL, diese wird später benötigt. Außerdem erzeugen wir durch einen Klick auf Neuen privaten Schlüssel generieren die Credentials.
Mit diesen Daten verfahren wir so:
- Schlüssel in Projekt firebase-schedule-import unter
src/main/resources
ablegen. - In der
Main.java
insrc/main/java
das FeldFIRESTORE_URL
durch die URL aus den Projekteinstellungen ersetzen.
Jetzt führen wir den Datenbankimport mittels ./gradlew run
aus (Java-Installation erforderlich).
Anschließend steht die Datenbank für den Bot zu Verfügung.
Als Basis für die Kalendereinträge wird ein aggregierter Stundenplan verwendet. Diesen kann man mittels Mein Stundeplan generiert werden.
Dieser ist außerdem im Projekt unter /src/main/resources
abgelegt, und kann verwendet werden, wenn die URL nicht mehr funktionieren sollte. Diesen muss man über HTTP zur Verfügung stellen, sodass diese von JSoup ausgelesen werden kann. Das Feld calendar_uri
in Main.java
ist hierzu zu ersetzen.
Zunächst erstellen wir unter https://console.dialogflow.com einen neuen Agenten.
Hierbei wählen wir als Google-Projekt das zuvor erstellte Firebase-Projekt aus.
In den nun erstellen Agenten importieren wir jetzt die Intents und Entities. Hierzu wählt man in den Projekteinstellungen > Export and Import.
Wir wählen Import und wählen das im Projekt dialogflow-stundenplan-bot enthaltene .zip
aus.
Anschließend sollten Intents und Entities vorhanden sein.
Im .zip
ist zwar auch die Anbindung an den Firestore enthalten, dieser wird jedoch gegenwärtig nicht importiert. Daher muss das Fulfillment über die Dialogflow Console konfiguriert werden. Hierzu wechseln wir in Fulfillment in der Sidebar.
Hier aktivieren wir den Inline Editor und klicken als nächstes auf Deploy um die Beispielanbindung zu deployen. Hierbei wird im zuvor angelegten Firebase-Projekt eine Cloud Function erzeugt. Diese Dient als Brücke zwischen dem Dialogflow Agenten und dem Firestore.
Das Deployment der Beispielfunktion als Zwischenschritt ist notwendig, da das Erstdeployment mit der tatsächlichen Cloud-Function derzeit fehlschlägt.
Ist das Deployment der Beispielfunktion abgeschlossen können wir die eigentliche Funktion importieren. Hierzu kopieren wir die Inhalte von functions_index.js
und package.json
in dialogflow-stundeplan-bot/functions
in die entsprechenden Editortabs und führen anschließend ein erneutes Deployment aus.
❗ Dialogflow meldet das erfolgreiche Deployment der Funktion, es hat sich jedoch gezeigt, dass das leider meistens nicht korrekt ist. Man muss sich noch einige Augenblicke mehr gedulden bis das Deployment tatsächlich abgeschlossen ist.
Nach erfolgreichem Deployment können wir den Agenten in der Konsole testen.