... | ... | @@ -73,7 +73,7 @@ Die Abbildungen, des Frameworks Dialogflow sind Ausschnitte der [Dialogflow-Webs |
|
|
|
|
|
Der Chatbot kann durch das bestehende Chatfenster des Accelerators angesprochen werden. Da dieses Chat-Modul nicht nur ausschließlich zum Ansprechen des Chatbots, sondern auch zur textuellen Kommunikation der Teilnehmer und des Moderators eines Konferenzraums untereinander verwendet wird, wurde ein zusätzlicher Button implementiert, durch den der Chatbot an- oder ausgeschaltet werden kann. Dadurch wird einerseits die Situation vermieden, dass alle Teilnehmer sehen können, was ein Einzelner mit dem Chatbot kommuniziert - und andererseits antwortet der Chatbot nur dann, wenn dies auch vom jeweiligen Nutzer erwünscht ist.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 1: Chatbot-Button*
|
|
|
|
... | ... | @@ -122,7 +122,7 @@ Wird der Button betätigt oder wird in den Chat "Hi Chatbot" geschrieben, so wir |
|
|
Da es in den vorinstallierten Schriftarten (beispielsweise FontAwesome) kein geeignetes Symbol bzw. Icon gab, das mit einem Chatbot assoziiert werden könnte, wurde in der Icon-Produktion selbst Hand angelegt. Mithilfe einer kommerziell nutzbaren Software wurde ein schlichtes Icon für einen Chatbot erstellt. Um der Flat Design Methodik treu zu bleiben, die auch bei den anderen bereits verwendeten Icons und Buttons im Accelerator vorgefunden werden konnte, wurde das Icon mit schlichten Standard-Formen umgesetzt. Auf besondere Effekte, wie dreidimensionale Darstellungen, Schattenwürfe oder starken Details, wie es in der Design-Methodik des Skeuomorphismus häufig vorkommt, wurde verzichtet. Die folgende Abbildung zeigt die verwendete Endversion des Chatbot-Icons.
|
|
|
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 2: Chatbot-Icon*
|
|
|
|
... | ... | @@ -157,7 +157,7 @@ In der folgenden Liste haben wir die allgemeinen Kriterien in Dialogflow überpr |
|
|
|
|
|
Für die Entwicklung des Chatbots haben wir uns für Dialogflow entschieden, da dieses Framework die oben beschriebenen Kriterien alle erfüllt. Mit Hilfe von Dialogflow wird eine textbasierte Ausgabe in sehr vielen verschiedenen Sprachen ermöglicht. Die Chatbot Daten liegen als JSON Datei vor und werden auch in Dialogflow intern als solche abgespeichert. Da der Output in Form einer JSON Datei vorliegt, kann man diesen relativ einfach mit Hilfe von JavaScript ansprechen und auslesen. Des Weiteren bietet Dialogflow eine Node.js Schnittstelle an. Da die Entwicklung von Dialogflow noch nicht abgeschlossen ist, beziehungsweise manche Tools noch weiter entwickelt werden, werden Teile des Frameworks kostenlos angeboten. Der einzige Aspekt, bei dem Kosten enstehen können, ist die Integrations eines Chatbot in einer Webseite über das Dialogflow System. Dialogflow bietet zwei Rubriken an, so gibt es zum einen die Rubrik "Dialogflow Standard Edition" und die "Dialogflow Enterprise Edition". Beide Versionen bieten eine unlimitierte Anzahl an textbasierter Ausgabe über den entwickelten Chatbot an. Bei der Standardversion, die wir nutzen, werden lediglich drei Abfragen pro Sekunde zugelassen und auch bei der sprachbasierten Bedienung liegt eine Limitation vor. So dürfen hierbei lediglich 1000 Abfragen pro Tag gestellt werden und insgesamt nur 15. 0000 pro Monat. Da wir jedoch einen textbasierten Chatbot implementiert haben und wir in den meisten Fällen nicht mehr als drei Abfragen pro Sekunde an das System stellen, ist für dieses Projekt die Standardversion sehr gut geeignet. Mit Hilfe von Dialogflow wird die natürliche textbasierte Sprache simmuliert. So werden falsch geschriebene Wörter dem richtig gemeinten Wort zugewiesen, was dazu führt, dass die Ausgabe wiederrum funktioniert. Dialogflow unterstütz seit der aktuellen Version auch die Spracheingabe. Dies wurde mit Hilfe des Tools Google Assistant ermöglicht. Weiterhin haben wir darauf geachtet, welche weiteren Schnittstellen oder Anbindungen das Framework bietet. Dialogflow bietet eine Vielzahl von Integrationen in andere Tools, wie beispielsweise Microsoft Cortana, Slack, Amazon Alexa, Facebook Messenger, Skype. Mit diesen Tools kann man den Chatbot in einem weiteren Schritt verknüpfen, was die Anzahl an möglichen Umsetzungen erweitert. Dialogflow hebt sich von den anderen Frameworks dahingehend ab, dass man die verschiedenen Dialoge auf der Webseite ausprobieren kann. Diesen Service haben nicht alle Frameworks unterstützt. Dies reduziert die mögliche Fehlersuche innerhalb des geschriebenen Codes deutlich. Diese Gründe haben dazu geführt das wir uns für Dialogflow entschieden haben.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 3: Preistabelle dialogflow*
|
|
|
Quelle: https://cloud.google.com/dialogflow-enterprise/docs/editions (Letzter Zugriff 27.01.2018)
|
... | ... | @@ -167,7 +167,7 @@ Quelle: https://cloud.google.com/dialogflow-enterprise/docs/editions (Letzter Zu |
|
|
|
|
|
Unter Dialogflow (früher: Api.ai) versteht sich ein Programmiergerüst, das im WebRTC-Tool "Accelerator" eingesetzt wird, um dem darin integrierten Chatbot eine künstliche Intelligenz zu verleihen. Die Intelligenz besteht einerseits darin, dass man mit dem Chatbot nicht nur per Kommandos und Befehlen kommunizieren kann, sondern dass der Chatbot auch natürliche Sprache versteht und daraufhin entsprechend agieren (bzw. Funktionen ausführen) kann, andererseits dass der Chatbot zum Erkennen der natürlichen Sprache trainiert werden kann und dadurch lernt. Die darin verborgenen Grundmechaniken gehen auf das sogenannte Natural Language Processing (kurz: NLP) zurück. Ein Großteil aller Frameworks, die natürliche Sprache in Kommandos und Befehle übersetzen können, suchen in der Regel bei eingegebenen oder eingesprochenen Nutzertexten nach sogenannten Intents und Entities.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 4: Intents und Entities*
|
|
|
|
... | ... | @@ -179,27 +179,27 @@ Um sich Zugang zu Dialogflow zu verschaffen, benötigt man lediglich nur die Zug |
|
|
## 3.3 Intents
|
|
|
Mit Hilfe des in Abbildung 5 gezeigten Auswahlmenüs gelangt man zu den Intents. Mit Intents wird in Dialogflow ein Dialog simuliert. Ein Dialog beginnt immer damit, dass der Anwender anfängt mit dem Chatbot zu kommunzieren. So können entweder Aussagen oder Fragen an den Chatbot gesendet werden. Hierbei können viele verschiedene Abfragen definiert werden. Je mehr Abfragen definiert werden, desto höher wird die Wahrscheinlichkeit, dass am Schluss der richtige Intent ausgewählt wird.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 5: Menu des Dialogflow*
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 6: Eingabe des Benutzers im Dialogflow*
|
|
|
|
|
|
Nun gibt es verschiedene Möglichkeiten, wie es weitergehen kann. Zum einen können an diesem Punkt verschiedene Parameter abgefragt werden, zum anderen gibt es die Möglichkeit ohne Parameterabfrage eine Antwort zu formulieren. Die Möglichkeit weitere Abfragen durchzuführen wird in Abbildung 7 dargestellt. An dieser Stelle können verschiedene Parameter und weitere Fragen gestellt werden. Mit Hilfe des Feldes "Required" wird ausgewählt, ob dieser Input zwingend abgefragt werden muss. Das Feld Parametername kann frei benannt werden, es bietet sich jedoch an, dieses Feld gleich zu nennen, wie das Feld "Value". Die gleiche Nennung vereinfacht das spätere Vorgehen ungemein. In dem Feld "Entity" werden die Entitäten eingetragen. Diese können entweder selbst definiert werden oder aber mit Hilfe von System Entititys. Dialogflow bietet eine Reihe von Systementitys, die es einem ermöglichen, einen großen Teil der Parameterabfragen abzudecken. Die genaue Funktion der Entities wird in Kapitel 3.4 beschrieben. Das Feld Value beinhaltet den Wert der nachgefragt werden soll. Mit Hilfe der Values werden die Interaktionen, die der User nach dieser Eingabe tätigt gespeichert. Ein Value Feld wird mit Hilfe der folgenden Notation gesetzt: "$Value". Wobei die Begrifflichkeit Value durch jeden beliebigen Text ersetzt werden kann. Wenn man nun, wie in Abbildung 8 das Feld "Required" auswählt, erscheint das zusätzliche Feld "Prompts". Innerhalb dieses Feldes können nun individuelle Abfragetexte definiert werden. In userem Projekt wurde hierbei beispielsweise die Zeit des Countdown abgefragt. Wie in Abbildung 8 zu sehen ist, kann man hierbei durch die Aktivierung des Buttons new Parameter einen neuen Parameter hinzufügen und somit die Abfrage beliebig erweitern. Bei den von uns durchgeführten Abfragen wurde noch kein oberes Limit erreicht.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 7: Action Feld im Dialogflow Framework*
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbdilung 8: Action Feld im Dialogflow Framework mit markierten Required Feld*
|
|
|
|
|
|
Nach dem die Actions definiert sind, kommt nun der dritte Schritt: der sogenannte Text Response. Das Feld Text Response wird in der Abbildung 9 dargestellt. In diesem Feld kann man die Antwortmöglichkeiten definieren, die der Chatbot geben soll. Hierbei ist es möglich verschiedene Antworten zu definieren. Durch ein Zufallsprinzip wird dann die Antwort ausgesucht. Wenn man einen Parameter innerhalb der Antwort einsetzt, kann man dies mit Hilfe der Notation "$value" ermöglichen.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 9: Darstellung des Feldes Text Response im Dialogflow*
|
|
|
|
... | ... | @@ -208,7 +208,7 @@ Nach dem die Actions definiert sind, kommt nun der dritte Schritt: der sogenannt |
|
|
## 3.4 Entities
|
|
|
Dank Entities können verschiedene Parameterwerte aus dem Input des Benutzers extrahiert werden. Damit das funktioniert, markiert man in der Input-Aussage das Wort, dem ein Parameterwert verliehen werden soll.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 10: Anlegen von Entities*
|
|
|
|
... | ... | @@ -219,13 +219,13 @@ Es besteht eine Möglichkeit benutzerdefinierte Entities zu erstellen. Momentan |
|
|
|
|
|
### *Entities* im Small Talk
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 11: Anlegen eines Entity im Bereich Small Talk*
|
|
|
|
|
|
Damit das Gespräch persönlicher aussieht, wird im Intent "smalltalk.agent.name" in der Antwort des Benutzers eine im Voraus erstellte Entity `@usersname` eingebaut (Siehe Abbildung unten). Auf die Aussage des Benutzers "Ich heiße Hans" antwortet der Chatbot "Sehr angenehm, Hans!"
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 12: Erstellen eines Entity im Bereich Small Talk Step 2*
|
|
|
|
... | ... | @@ -249,20 +249,20 @@ Der Dialog mit dem Chatbot soll natürlich wirken. Natürliche Sprache weicht le |
|
|
|
|
|
Den Intent kann bzw. soll man direkt nach seiner Erstellung trainieren. Das kann man im Dialogflow im Panel "Try it now" (Siehe Abbildung unten) machen. In diesem Panel soll man alle im Intent vorgesehene Benutzeraussagen ausprobieren und kontrollieren, ob der Chatbot die zuerwartende Antworten gibt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 13: Training eines Chatbots in Dialogflow mit Hilfe von "Try It Now*
|
|
|
|
|
|
Wie bringe ich dem Chatbot bei, dass seine Antwort gerade falsch war?
|
|
|
Nachdem man mehrere Intents in einer flüßigen Dialogform ausprobiert hat, geht man in den Menüpunkt *Training* im Panel rechts (der sich mit Stand vom 20.01.2018 erst als eine Beta-Version vorhanden ist) um die Dialog-Logs zu sehen.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 14: Training eines Chatbots in Dialogflow mit Hilfe der Rubrk Training*
|
|
|
|
|
|
Die Logs sind unter dem Namen des Intents gespeichert, bei welchem das Training des Dialogs angefangen wurde. In der Abbildung unten ist das *Harlem Shake*, unter dem Namen sind aber natürlich viele verschiedene Intents zu finden, die im Dialog benutzt wurden.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 15: Training eines Chatbots*
|
|
|
|
... | ... | @@ -338,11 +338,11 @@ module.exports = { |
|
|
|
|
|
Die Anbindung des Chatbots innerhalb der Chatbot.js wurde mit Hilfe der [Node.js](https://github.com/dialogflow/dialogflow-nodejs-client-v2) (Letzter Zugriff 27.01.2018) Schnittstelle des GITs umgesetzt. In dem oben aufgeführten Code wurde die Programmierschnittstelle (API) von Dialogflow hinzugefügt, um so die Verbindung zum Framework aufzubauen. In der folgenden Abbildung wird ein Screenshot der Google Plattform gezeigt, aus welcher der Code für die API entspringt. Da es sich bei einem Teil der Daten um vertrauliche Informationen handelt, wurden diese geschwärzt. Um die Daten zu erhalten, kann man auf einen Link in Dialogflow klicken, wodurch man auf die entsprechende Unterseite gelangt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 16: Herauslesen der Google Daten aus der Google Cloud Platform*
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 17: Dialogflow Link für die Google Plattform*
|
|
|
|
... | ... | @@ -447,19 +447,19 @@ Außerdem wurde in Dialogflow für jede Funktion sowohl für die deutsche, als a |
|
|
## 4.2 Default Intent
|
|
|
Da der Chatbot garantiert nicht alle Wünsche der Nutzer erfüllen kann, war zunächst die Definition wichtig, wie der Chatbot auf Eingaben reagiert, die zu keinen bereits vorhandenen Intents und daher zu implementierten Funktionen zugeordnet werden können. Dialogflow liefert hierzu einen sogenannten "Default Fallback Intent". Dies ist derjenige Intent, der angesprungen wird, wenn eine Nutzereingabe nicht verstanden bzw. nicht zugeordnet werden kann.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 18: Default Fallback Intent auf Dialogflow*
|
|
|
|
|
|
Die auf Dialogflow angelegten Responses (zu Deutsch: Antworten), die der Chatbot genau dann von sich gibt, wenn eine Eingabe nicht verstanden oder nicht zugeordnet werden kann, wurden darüber hinaus mit einem Link ergänzt, der zu einem Google-Formular führt. Über dieses Formular können Nutzer Wünsche bezüglich Implementierungen beim Chatbot äußern.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 19: Anlegen eines Formular-Eintrags für zukünftige Implementierungen des Chatbots*
|
|
|
|
|
|
Das Formular wurde über das Google-Profil des Chatbots, welches auch für Dialogflow verwendet wird, in Google-Drive angelegt. Von dort aus kann die Liste kontinuierlich durch Nutzerwünsche ergänzt werden. Als Administrator und **eingeloggt in den Google-Account des Chatbots** können die Eingaben unter folgendem Link eingesehen werden: [Google-Formular Responses](http://goo.gl/EtFRSS) (Letzter Zugriff 27.01.2018)
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 20: Angelegte Liste von Nutzern für zukünftige Implementierungen des Chatbots*
|
|
|
|
... | ... | @@ -468,13 +468,13 @@ Das Formular wurde über das Google-Profil des Chatbots, welches auch für Dialo |
|
|
## 4.3 Small Talk
|
|
|
Die Hauptaufgabe von einem Chatbot besteht darin, einen Dialog mit Benutzern zu führen. Zusätzlich zu der Assistentenfunktion hat der Accelerator-Chatbot eine unterhaltende Rolle. Der Chatbot kann mit Benutzern einen Small-Talk führen. Im Dialogflow wird ein zusätzlicher Small-Talk-Agent (*Prebuilt Agent*) mit vorgefertigten 87 *Intents* bereitgestellt. Diese können mit eigenen Intents nach Bedarf vervollständigt werden. Intents sind nach Themen klassifiziert und bieten eine Vielzahl von Phrasen, die ein Benutzer beim Chatten mit dem Chatbot sagen könnte - *User Says*. Wenn man einen den *Intents* öffnet, finden Sie diese Sätze im Feld *User Says*. Das Feld "User Says" soll synonymische Ausdrücke beinhalten. Zum Beispiel, wenn der User den Chatbot nach seinem Alter fragt, kann er die Frage unterschiedlich formulieren: Wie alt bist du? Wann wurdest du geboren? Wann wurdest du entwickelt? usw.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 21: Small Talk User Says*
|
|
|
|
|
|
*Intents* sind ursprünglich nicht vollständig und nicht immer korrekt ausgefüllt, man kann sie also nicht direkt einsetzen. Um sie zu verwenden, muss man das Feld *Text Response* selbstständig ausfüllen und *Entities* nach Bedarf erstellen und einbauen. Das Feld "User Says" sollte auch angepasst werden, da z.B. im Intent *"good evening"* sowohl eine Bregüßung als auch ein Abschied mit einem Schönen-Abend-Wunsch zu finden war. Die ausgefüllten Antworte werden vom Chatbot randomisiert, um den Effekt echter Live-Sprache zu erreichen. Daher ist es im Feld *Text Response* wünschenswert, mindestens drei Varianten der Antwort einzugeben. Auch mehr Varianten sind möglich.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 22: Small Talk Antworten*
|
|
|
|
... | ... | @@ -493,7 +493,7 @@ Aus technischen Gründen kann ein Dialog mit dem Chatbot vom Benutzer initiiert |
|
|
|
|
|
Damit der Dialog natürlicher aussieht, soll in der Antwort des Chatbots bereits eine Rückfrage beinhaltet werden. Solches Vorgehen macht die Kette aus Fragen und Antworten natürlicher. Genau aus dem Grund der Natürlichkeit, soll nicht jede Antwort des Chatbots eine Rückfrage beinhalten.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 23: Aufbau von Small Talk*
|
|
|
|
... | ... | @@ -503,7 +503,7 @@ In dem Dokument "Chatbeispiele mit Intents" sind Dialogbeispiele zu finden. Dort |
|
|
### 4.3.2 *Contexts* im Small Talk
|
|
|
Im Dialogaufbau werden *Contexts* benutzt, um eine bestimmte Reihenfolge den Aussagen festzulegen. Ein Context muss nicht im Voraus vordefiniert werden, sondern er wird direkt im Intent eingelegt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbbildung 24: Contexts in Intents*
|
|
|
|
... | ... | @@ -515,7 +515,7 @@ Im Intent, in dem eine bestimmte Frage gestellt wird, soll *Context* als *Output |
|
|
### 4.3.3 Import des Small-Talk-Agenten
|
|
|
Der Small-Talk-Agent ist einer der *Prebuilt Agenten* von *Dialogflow*. Er wurde nicht direkt in den Accelerator-Chatbot importiert, sondern als ein separater Agent. Man kann nun im Rahmen des Accounts zwischen den zwei (bzw. mehreren) Agenten umschalten.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 25: Import eines Agenten*
|
|
|
|
... | ... | @@ -523,7 +523,7 @@ Um die *Small-Talk-Intents* im Accelerator-Chatbot zu verwenden, muss man im Dia |
|
|
- Im *Small-Talk-Agent* einen Backup mit "EXPORT ALS ZIP" erstellen;
|
|
|
- Zu dem *Accelerator-Chatbot-Agenten* wechseln und mit dem Button "IMPORT FROM ZIP" die Intents hochladen.
|
|
|
-
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 26: Export eines Agenten*
|
|
|
|
... | ... | @@ -548,33 +548,33 @@ Es ist deswegen notwendig die Namenskonvention zu beachten. |
|
|
Diese Funktion wurde in englischer, sowie deutscher Sprache umgesetzt. Der Use Case der Funktion ist es, dass der Moderator eine Aufgabe stellt die innerhalb eines gesetzten Zeitrahmens von den Teilnehmern erfüllt werden muss. Nun kann der
|
|
|
Moderator in dem Chat beispielsweise "Starte den Countdown" reinschreiben. Anschließend erscheint nun die Frage, wie lange dieser laufen soll? Dieser Dialog wird in der folgenden Abbildung visualisiert. Der Moderator kann aber auch eine Abfrage stellen, wie "starte den Countdown von 5 Minuten". Bei dieser Abfrage wird der entsprechende Countdown gestartet.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 27 : Darstellung des Countdown Dialogs*
|
|
|
|
|
|
Nun können verschiedene Werte eingeben werden, wie beispielsweise 5 Sekunden, Minuten oder Stunden. Der Ablauf wird in Abbilung 27 visualisiert.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 28: Darstellung des zweiten Teil des Countdown Dialogs*
|
|
|
|
|
|
Anschließend wird die Zeit in Bezug zu der jeweiligen Zeiteinheit heruntergezählt. Dies wird in der folgenden Abbildung visualisiert.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 29: Darstellung des dritten Teil des Countdown Dialogs*
|
|
|
|
|
|
Die Eingaben werden vom Dialogflow gesendet und vom Accelerator empfangen. In den folgenden Abbildungen sieht man, wie der oben dargestellte Dialog innerhalb von Dialogflow abgedeckt wird.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 30: Darstellung des Countdown Dialogs Teil 1 in Dialogflow*
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 31: Darstellung des Countdown Dialogs Teil 2 in Dialogflow*
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 32: Darstellung des Countdown Dialogs Teil 3 in Dialogflow*
|
|
|
|
... | ... | @@ -640,13 +640,13 @@ In der ersten Zeile wird übeprüft, ob die Texteingabe die im Accelerator getä |
|
|
## 4.5 Random User List
|
|
|
Mit Hilfe der Funktion Random User List werden die Teilnehmer des Webinars in einer zufälligen Reihenfolge aufgezeigt. In der folgenden Abbildung werden die jeweiligen Abfragen abgebildet. Der Name des Intents lautet in Dialogflow in der deutschen Version "Zufällige Liste"
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 33: Dialogflow Intent zufällige Liste der Teilnehmer*
|
|
|
|
|
|
Im Chatfenster des Dialogflow wird anschließend der folgende Output erzeugt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 34: zufällige Liste der Teilnehmer*
|
|
|
|
... | ... | @@ -685,7 +685,7 @@ Am Anfang der Methode wird überprüft, ob der jeweilige Text, der im Chatfenste |
|
|
## 4.6 Random User
|
|
|
Mithilfe der Funktion "Random User" wählt der Chatbot randomisiert genau einen Namen der aktuellen Teilnehmerliste aus und schreibt diesen Namen in den Chat. Der Hintergrundgedanke zur Implementierung dieser Funktionalität begründet sich aus der Moderatorsicht heraus: Wenn beispielsweise eine Frage offen bleibt und sicht kein Teilnehmer freiwillig äußern möchte, kann diese Funktion taktisch genutzt werden, um tatsächlich randomisiert eine Person aus der Liste auszuwählen. Ähnlich allen anderen Funktionen wurde auch diese bilingual implementiert und mit Intents von Dialogflow referenziert. Daher werden keine exakten Kommandos zum Ansprechen der Funktion benötigt, sondern hierbei reicht lediglich eine ähnliche Eingabe, wie sie in den dazugehörigen Intents bestenfalls bereits eingelernt wurden. Die Code-Zeilen wurden zu der uiHelper.js-Datei ergänzt. Die entsprechenden Intents "Zufälliger Teilnehmer" und "randomUser" wurden auf Dialogflow angelegt. Nachfolgend wird ein Screenshot der Implementierung und der zugehörige Code aufgeführt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 35: Zufälliger User*
|
|
|
|
... | ... | @@ -735,7 +735,7 @@ Der Chatbot liefert auch eine Funktion, einen Chatverlauf eines Meetings in der |
|
|
|
|
|
Im Folgenden wird die Implementierung anhand einem Screenshot beispielhaft aufgezeigt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 36: Save Chat in der Anwendung*
|
|
|
|
... | ... | @@ -785,13 +785,13 @@ else { |
|
|
|
|
|
Der Chatbot ist daher in der Lage, bei der Enttarnung eines gewissen Intents, das auf eine Interaktionsmöglichkeit mit dem Accelerator beruht, auch den entsprechenden Step der Guided Tour aufzuzeigen. Im folgenden Screenshot wird dies beispielhaft demonstriert.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 37: Chatbot als Guide durch Accelerator*
|
|
|
|
|
|
Da alle einzelnen Steps der Guided Tour, sowie auch alle Intents auch auf Englisch angelegt wurden, funktionieren die Funktionen selbstverständlich auch auf Englisch, wie im folgenden Screenshot demonstriert wird.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 38: Chatbot als internationaler Guide durch Accelerator*
|
|
|
|
... | ... | @@ -870,19 +870,19 @@ else if(intent == "specific search"){ |
|
|
|
|
|
In der ersten Zeile wird überprüft ober der Intent zu dem jeweiligen Intent in dialogflow passt. Der Intent wird durch die in der nachfolgenden Abbildung dargestellten Wörter ausgelöst. Diese Abfrage wurde in Dialogflow definiert.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 39: Darstellung der Specific Search Abfragen in Dialogflow*
|
|
|
|
|
|
Anschließend wurde nun nach den Parametern der präferierten Webseite sowie den gewünschten Suchterm abgefragt. Die Abfrage wird in der folgenden Abbildung visualisiert. Hierbei wird mit Hilfe der Frage "Auf welcher Seite wollen Sie suchen?" und "Nach was wollen Sie suchen?" die Parameter abgefragt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 40: Darstellung der Parameterabfrage in Dialogflow*
|
|
|
|
|
|
Nach der Abfrage wird nun der folgende String erstellt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 41: Darstellung der Antworten*
|
|
|
|
... | ... | @@ -895,7 +895,7 @@ Der ausgegebene String wird dafür benutzt um innerhalb der Funktion die Paramet |
|
|
### 4.11.1 Do a barrel roll
|
|
|
Der Google-Klassiker "do a barrel roll" kann auch vom Chatbot auf Accelerator gestartet werden. Hierzu einfach "do a barell roll" in den Chat eingeben. Auch kleine Schreibfehler sind hierbei erlaubt, da im Hintergrund ein intent hinterlegt wurde, der verschiedene Eingabevariationen hinsichtlich der "barrel roll" beinhaltet.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 40: Do a barrel roll*
|
|
|
|
... | ... | @@ -921,7 +921,7 @@ else if(intent == "Do a barrel roll"){ |
|
|
Da alle Easter-Eggs mit bestimmten Intents aufgerufen werden, sind sie als Code in der Datei *uiHelper.js* angelegt.
|
|
|
Ein ziemlich süßes Easter-Egg "Cat Attack" besteht darin, dass alle Bilder im Meeting-Raum, und zwar die Benutzerbilder, das Präsentationssymbol und das Chatbot-Symbol mit einem Kätzchenbild ersetzt werden. Die JavaScript-Funktion ist in den Intent "Cat Attack_GIG" eingepflegt. Das Easter-Egg kann der Benutzer mit dem folgenden Input aufrufen: "Miau", "Kitten Attack", "Cat Attack", "Kätzchen Attack", "Kätzchen Angriff". Der Effekt geht in 10 Minuten wieder weg.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 43: Darstellung des Easter Eggs Cat Attack*
|
|
|
|
... | ... | @@ -942,7 +942,7 @@ else if(intent == "Cat Attack_GIG"){ |
|
|
### 4.11.3 Destroy Page
|
|
|
Das Easter-Egg "Destroy Page" macht den Aufbau der Webseite kaputt. Nach dem Befehl "Destroy (the) page" werden die Elemente der Webseite schief und verschoben. In so einem "kaputten" Meeting-Raum kann man aber trotzdem weiter schreiben, was ziemlich lustig aussieht. Der Effekt geht in 10 Minuten wieder weg.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 44: Darstellung des Easter Eggs Destroy Page*
|
|
|
|
... | ... | @@ -964,7 +964,7 @@ else if(intent == "destroy the page_GIG"){ |
|
|
### 4.11.4 Upside Down
|
|
|
In diesem Easter Egg wird der Bildschirm mit der Texteingabe "Upside Down" kopfüber gestellt. Solange der Bildschirm umgedreht ist, kann man im Chatfenster immer noch schreiben. In 10 Sekunden ist der Effekt wieder weg.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 45: Darstellung des Easter Egg Upside Down*
|
|
|
|
... | ... | @@ -985,13 +985,13 @@ else if(intent == "upside down_GIG"){ |
|
|
### 4.11.5 "Alexa" Easteregg
|
|
|
Dieses Easteregg spielt auf die missverständliche Erkennung von Befehlen des Chatbots Alexa von Amazon an. So wurden hierbei falsche Order getätigt, indem ein Papagei ["Geschenkpapier"](http://www.computerbild.de/artikel/cb-News-Panorama-Amazon-Alexa-Papagei-Buddy-bestellt-19035157.html) (Letzter Zugriff 27.01.2018) geordert hat oder ein kleines Mädchen ein [Pupenhaus](http://www.computerbild.de/artikel/cb-News-Internet-Alexa-Panne-Amazon-Echo-Puppenhaeuser-17145863.html) (Letzter Zugriff 27.01.2018) . Das Intent wurde mit Hilfe von Dialogflow und im Accelerator umgesetzt.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 46: Intent Easteregg*
|
|
|
|
|
|
In Dialogflow wurde die folgende Antwort definiert:
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 47: Intent Antworten*
|
|
|
|
... | ... | @@ -1016,7 +1016,7 @@ else if (intent == "easterEggAlexa"){ |
|
|
### 4.11.6 Easter Egg Verweis auf ELIZA
|
|
|
Dieser Easter Egg verweist auf den Chatbot ELIZA. ELIZA war der erste Chatbot und wurde von Joseph Weizenbaum entwickelt. Wenn man im Chatfenster den Dialog startet und schreibt "Ich bin ängstlich" erwidert daraufhin der Chatbot mit Hilfe der folgenden Antwort:
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 48: Intent ELIZA Easter EGG*
|
|
|
|
... | ... | @@ -1028,7 +1028,7 @@ Mit Hilfe des dargestellten Links kann man nun auf die Seite kommen, wo ELIZA vi |
|
|
### 4.11.7 Badwords
|
|
|
Auch bei scharfen Zungen, zumindest wenn diese an den Chatbot gerichtet sind, agiert der Chatbot vorbildlich. Um einer naiven Schneeballschlacht aus dem Wege zu gehen, wird der entsprechende "giftige Teilnehmer" nach drei Sekunden aus dem Konferenzraum entfernt und gesteht automatisch im Chat an Alle ein, was er gemacht hat.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 49: Badwords*
|
|
|
|
... | ... | @@ -1084,7 +1084,7 @@ Das Husky-Emoticon selbst kann mit der Eingabe **:husky:** im Chat erzeugt werde |
|
|
# 5 Systemarchitektur Chatbot
|
|
|
Die [Systemarchitektur von Accelerator](http://git.reutlingen-university.de/ksystem/Accelerator/wiki/Systemarchitektur) (Letzter Zugriff: 28.01.2018) wurde durch die Integration des Chatbots etwas erweitert, wie die folgende Abbildung zusammenfassend darstellen soll.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
*Abbildung 50: Systemarchitektur Chatbot*
|
|
|
|
... | ... | |