Um auch bei Messenger Chats den Kunden im Anschluss an einen mit dem menschlichen Agenten geführten Chat beispielsweise nach seiner Zufriedenheit befragen zu können, gibt es die Möglichkeit, einen nachgelagerten Chatbot nach Abschluss automatisiert starten zu können.
Um so einen Chatbot einzurichten, sind ein paar Schritte notwendig, die in dieser Anleitung beschrieben werden.
Inhalt/Content
Wissensbasis erstellen / erweitern
Event erstellen
Sobald ein nachfolgender Chat aus einem Agenten – Chat automatisiert gestartet wird, wird in der Wissensbasis ein Event ausgelöst, welches Informationen über den initialen Chat erhält. Diese Informationen (Eventparameter) können im Event empfangen und in Variablen gespeichert werden. Anhand dieser Informationen kann dann das Event entscheiden, ob überhaupt ein weiterer Chatbot Dialog gestartet werden soll.
Das Event, was in der Wissensbasis ausgelöst wird, heißt SUBSEQUENTCHAT. Ist so ein Event nicht in der Wissensbasis enthalten, so muss es neu angelegt werden. Hierfür im Agenten Bereich der Wissensbasis den Bereich „COMMON“->“EVENTS“ aufklappen und über das Kontextmenü ein neues Event anlegen. Als Namen SUBSEQUENTCHAT eingeben und speichern.
Nun kann im Bereich „Action“ Actioncode zum Übernehmen der Parameter eingegeben werden. Bitte beachten: Die Variablen, mit denen die Eventparameter empfangen werden, müssen vorab im Bereich „Global“ als „String“ Parameter definiert werden.
Beispiel als Kopiervorlage:
Request r = getRequest();
String payload = r.getPayload();
previousChatId = jsonString(payload,"$.previousChatInformation.previousChatId");
previousChatCategoryId = jsonString(payload,"$.previousChatInformation.previousChatCategoryId");
previousCategoryName = jsonString(payload,"$.previousChatInformation.previousCategoryName");
agentId = jsonString(payload,"$.previousChatInformation.agentId");
agentName = jsonString(payload,"$.previousChatInformation.agentName");
transactioncodeId = jsonString(payload,"$.previousChatInformation.transactioncodeId");
transactioncodeName = jsonString(payload,"$.previousChatInformation.transactioncodeName");
Über eine „Link“ Action kann anschließend direkt in den Bewertungszweig der Wissensbasis gesprungen werden. Es empfiehlt sich, die angesprungene Regel zu deaktivieren, also den Schalter „Active“ auf der über „Goto“ verlinkten Regel nicht einzuschalten. Dies verhindert, dass die Bewertung aus Versehen aus einem anderen Dialog gestartet wird – sie kann dann nur über direkte Gotos angesprungen werden – wie in unserem Beispiel oben zu sehen. Deaktivierte Regeln erscheinen auch in hellerem Grau im Baum. Oben im Bild zu sehen ist, dass nach dem Empfangen der Eventparameter bereits die erste Nachricht an den Kunden ausgespielt wird: „Subsequent chat started…“. Dies ist natürlich optional. Zuletzt wird im Bild das Goto auf die Bewertungs-Regel eingefügt. Diese startet dann mit einer Begrüßung und stellt die erste Frage an den Kunden.
Bewertungsregeln erstellen
Üblicherweise werden zusammengehörige Dialogschritte innerhalb eines Kontexts (Ordners) im Baum erstellt. Dies dient nicht zuletzt der Übersichtlichkeit.
Wir markieren also im Baum den Hauptknoten des Agenten, also im Beispielbild oben „Basic_Agent“ und legen über das Kontextmenü (drei-Punkte Icon in Orange) einen neuen „Context“ mit dem Namen „RATING“ an. Der Name ist natürlich frei wählbar. Anschließend speichern und schließen wir den Kontext, markieren ihn im Baum und legen über das Kontextmenü die erste Willkommens-Regel an. In unserem Beispiel hat die Regel den Namen „Welcome“ erhalten.

In dieser Regel begrüßen wir den Kunden und stellen die erste Frage. Damit die Antwort auf genau diese Frage auch ordnungsgemäß gespeichert werden kann, legen wir eine weitere Regel (in diesem Beispiel „Agent-competence“ an und verlinken sie über den Typ „Analyzer“ (siehe Bild oben).
In der verlinkten Analyzer Regel „Agent-competence“ empfangen wir dann das eingegebene über eine MATCH Regel – hier können wir auch reguläre Ausdrücke verwenden, um bestimmte Eingabeformate abzuprüfen. In unserem Beispiel halten wir es einfach und empfangen einfach alles, was eingegeben wurde im Platzhalter MATCH1:
("<MATCH1>.*<\MATCH1>")
Der Punkt in diesem Ausdruck bedeutet ja „beliebiges Zeichen“ und das Sternchen „beliebig oft“. Wir fangen also alles ab, was eingegeben wird. Daher ist es auch besonders wichtig, dass die Regel nicht aktiviert wird. Sonst gewinnt sie über jegliche anderen Regeln, die vielleicht noch in der Wissensbasis angelegt sind.
Um diesen Ausdruck eingeben zu können, aktivieren wir den Schalter „Edit Expression manually“ – und natürlich setzen wir „Active“ auf „aus“:

Jetzt können wir im Actioncode mit der Variable MATCH1 arbeiten und speichern das Eingegebene in einer globalen Variable, die wir vorab im Bereich Global definiert haben müssen:

Hier haben wir uns jetzt dazu entschieden, die globale Variable als Number anzulegen und konvertieren die Eingabe in eine Zahl. Bitte beachten: Hier gibt es keine Fehlerbehandlung bei der Konvertierung – dieses Beispiel ist also nicht 100% praxistauglich und wurde nur um die Übersichtlichkeit zu gewährleisten absichtlich einfach gehalten!
Der Bot speichert also hiermit die Eingabe in der Variable customerSatisfaction und stellt im Anschluss die Frage, wie es mit der Agenten-Kompetenz aussah. Dann wird in die nächste Analyzer-Regel verlinkt. In dieser ist dann die Konfiguration sehr ähnlich. Die Eingabe über MATCH1 empfangen, das Ergebnis in der nächsten Variable speichern und über Analyzer Link in die nächste Regel springen.
Sobald alle Daten über Analyzer Regeln abgefragt wurden, muss nach der letzten Antwort, also in der letzten Analyzer Regel in der Kette alles, was als Antworten in Variablen gespeichert wurde, als Datenfelder am Chat gespeichert werden. Dies geschieht über einen Actioncode. Im Actioncode wird erst einmal ein Hashtable erzeugt. Darin werden dann alle Parameter mit Typ, Namen und Inhalt gespeichert:
Hashtable storage = jsonToFlattable("{}");
storage.put("0.key", "customerSatisfaction");
storage.put("0.value", customerSatisfaction);
storage.put("0.type", "double");
storage.put("1.key", "agentsCompetence");
storage.put("1.value", agentsCompetence);
storage.put("1.type", "double");
storage.put("2.key", "agentsLanguageSkills");
storage.put("2.value", agentsLanguageSkills);
storage.put("2.type", "double");
set("setStorageValues", flattableToJson(storage));
Zur Verdeutlichung:

Damit sind alle Regeln erstellt und die Wissensbasis ist vorbereitet.
Die Wissensbasis muss nun auf einem Help System aktiviert werden, welches vom iAGENT System aus erreichbar ist (Firewalls, etc.).
Chatbot definieren im Supervisor
Als nächstes müssen wir nun den Chatbot mit dem Supervisor verbinden. Hierfür wird ein neuer Eintrag in der Liste der Chatbots des Supervisors über „Administration->Chat->Chatbot“ angelegt. Auf der Seite „Integration“ wird die URL zur Help REST API angegeben – dieser ist üblicherweise <Server-URL>/nmIQ/api/rest. Die Timeouts können nach Bedarf eingestellt werden.

Die Verbindung vom hier konfigurierten Chatbot mit dem Messenger-Eingangskonto wird dann im nächsten Schritt direkt auf dem Messenger Eingangskonto und NICHT hier auf dem Tab konfiguriert, da hier nur „vorgeschaltete Chatbots“ konfiguriert werden können!
Achtung: Nach der Konfiguration so eines Chatbots muss dieser noch über die Liste der Chatbots aktiviert werden!
Chatbot mit Messenger Eingangskonto verbinden
Damit das System auch weiß, wann es diesen Chatbot starten soll, müssen wir ihm das noch mitteilen. Dafür öffnen wir die Liste der Messenger-Eingangskonten („Administration->System->Messenger-Eingangskonten“) und wählen das passende Messenger Eingangskonto mit einem Klick aus. Die Bearbeitungsmaske öffnet sich.
Auf dem Tab „Automatische Antworten“ finden wir einen Bereich „Integration eines novomind iAGENT Help Chatbots“. Hier wird bei „Chatbot“ „Ausgewählter Chatbot“ ausgewählt und der neue Chatbot eingestellt:

Jetzt muss noch das Häkchen bei „Botchat starten nach Beendigung eines Agenten-Chats“ gesetzt und eine Kategorie, die für den nachfolgenden Chat genutzt werden soll, ausgewählt werden.
Nun noch darauf achten, dass das Messenger Eingangskonto auch aktiviert ist (wieder über die Liste einzustellen) und schon kann der erste Versuch gestartet werden. Direkt nachdem der Agent einen Chat über dieses Messenger-Eingangskonto geführt hat beendet hat, wird der neue Chatbot Dialog beim Kunden gestartet.
Auswertung der nachfolgenden Chats
Die nachfolgenden Chats sind komplett eigenständige Chats, die mit der im Messenger-Eingangskonto angegebenen Kategorie gestartet wurden.
Diese Chats werden mit dem ursprünglichen Chat über eine Referenztabelle „ISSUE_RELATION“ und dem „ISSUE_RELATION_TYPE“ 5 verbunden.
Über diese Verbindung können in einem Report nun die Daten aus den ursprünglichen Chats wie „Datum/Uhrzeit, Kategorie, Agent“ zusammen mit den Daten aus dem nachfolgenden Chat (Bewertungskriterien über CHAT_INFOS) angezeigt werden. Da die Bewertungskriterien in der Wissensbasis komplett frei definiert werden können, kann es keinen Standard-Report hierfür geben.
Es gibt jedoch die Möglichkeit, über den Reportgenerator mittels Chat Views (z.B. „Chats“) einen Report zu erzeugen. Die Feldauswahl bietet dann alle einmal genutzten Bewertungskriterien als Spalten für den Report an. Diese sind durch eine Zwischenüberschrift „Eigenschaften“ in der Auflistung der Spalten zu finden.
