Automation

Context

Diese Dokumentation beschreibt das Konzept der ContextParameter; was ist ein ContextParameter, wofür werden sie eingesetzt und wie werden sie definiert. Darüber hinaus behandelt diese Dokumentation das Konzept der ContextInitiativen.

Einleitung

Der Context ist ein zentrales Konstrukt welches im gesamten Projekt an verschiedenen Stellen Einsatz findet. So spielt Context eine zentrale Rolle bei der Gestaltung von Dialogen, oder kann als Filter in der Inbox und im Analytics verwendet werden. Der Context wird global im Projekt via ContextParameter definiert. Ein ContextParameter ist im einfachsten Fall nichts anderes als ein Key-Value Paar welche nutzerspezifisch im Dialog beschrieben und gelesen werden können. Der gesamte Context eines Nutzers beinhaltet also alle wichtigen Informationen die der Bot imm Dialog, ein Live-Agent in der Kommunikation, oder ein Projektmanager zur Auswertung der KPIs übers Analytics benötigt.

Als einfaches Beispiel kann ein ContextParameter den Vornamen eines Nutzers oder seine E-Mail-Adresse speichern. Per Default bieten wir eine Liste an verschiedenen vordefinierten ContextParametern an, diese lassen sich in folgende Kategorien einteilen:

  • Custom: Initial nicht befüllt. Hier werden eigens definierte (nicht-kategorisierte) ContextParameter aufgelistet. Alle Custom Parameter liegen im global-Namespace, z.B. global.MyCustomParameter.
  • User: Eine Reihe an typischen Nutzer-Informationen. Darunter fallen z.B. personenbezogene Daten wie Vorname, Nachname, Geburtsdatum etc. Manche dieser ContextParameter werden initial von den jeweiligen Channels gesetzt. ContextParameter im User-Namespace können, müssen aber nicht verwendet werden! Alle User Parameter liegen im user-Namespace, z.B. user.firstName.
  • Legal: Beinhaltet eine Reihe an ContextParametern die fürs OptIn, Consent relevant sind. Alle Legal Parameter liegen im legal-Namespace, z.B. legal.optIn.
    • optIn : Der OptIn - Parameter welcher im Legal Privacy Core Behavior verwendet wird. Wird der Parameter auf false gesetzt, kann der Nutzer mit dem Chatbot nicht mehr kommunizieren!
    • optInSource : Über welchen Weg wurde das OptIn gesetzt. Mögliche Werte BOT, WORKFLOW & CHANNEL.
    • dateOfOptIn : An welchem Datum wurde das OptIn gesetzt.
    • consent : Der Consent - Parameter welcher im Legal Privacy Core Behavior verwendet wird.
    • consentSource : Über welchen Weg wurde das Consent gesetzt. Mögliche Werte BOT, WORKFLOW & CHANNEL.
    • dateOfConsent : An welchem Datum wurde das Consent gesetzt.
  • Setting: Beinhaltet verschiedene Metasettings des Bots. Alle Setting Parameter liegen im setting-Namespace, z.B. setting.language.
    • language Die vom Kanal gesetzte Sprache im ISO_639_1 Format (z.B. de für Deutsch, en für Englisch etc.). Ein Update des ContextParameters ändert die Sprache des Bots!

Es gilt:

  • ContextParameter können nicht gelöscht werden.
  • Der Key und der Datentyp eines ContextParameters kann nicht verändert werden.

Wird ein Parameter fälschlicherweise angelegt gibt es keine Möglichkeit diesen zu löschen, stattdessen sollte er in eine Kategorie mit entsprechendem Label (z.B. Deprecated oder Unused) verschoben werden.

Create new context parameter

Mit Klick auf den Button Create new context parameter kann ein neuer Context Parameter angelegt werden. Es öffnet sich ein Modal in dem verschiedene Settings vorgenommen werden können.

Gib zunächst ein geeignetes Label und eine (optionale) Beschreibung ein. Der keydes Parameters ergibt sich automatisch aus dem Label!

Aktiviere Display in inbox wenn der Context Parameter den Live-Agents in der Inbox angezeigt werden soll.

Datentypen

Wähle aus ob der Kontextparameter eine (distinkte) Liste an Werten beinhalten soll (List of oder Set of), oder nur ein einzelnen (Single). Wähle danach den gewünschten Datentyp aus, z.B. Number.

Weiter führende Informationen zu den verschiedenen Datentypen findest du hier.

Category

Wähle eine Kategorie aus, in die der ContextParameter eingruppiert werden soll. Die Kategorie dient lediglich der übersichtlichkeit und kann hinterher angepasst werden. In den meisten Fällen bietet es sich an Parameter pro UseCase zu gruppieren.

Validierung

Über die Validierung kann sichergestellt werden, dass nur bestimmte Werte in den ContextParameter geschrieben werden können. Ein Versuch einen ungültigen Wert zu speichern führt im Dialog zu einem Fehler an entsprechender Stelle. In einer DialogAction würde das Fail target den Fehler behandeln. Beim Versuch den Wert über eine ContextInitiative zu setzen, würde entsprechend der dialogischen Optionen reagiert werden.

  • Regular expression: Gib einen beliebigen Regulären Ausdruck an. Weitere Informationen zu Regulären Ausdrücken sowie eine online Applikation zum Testen finden sie in diesem externen Link zu Regulären Ausdrücken.
  • Min/max: Der Wert muss innerhalb der angegebenen Range liegen. z.B. Min = 0 & Max = 10.

Default Value vs. Initiative

Es gibt zwei verschiedene Arten einen ContextParameter zu initialisieren:

  • Default-Wert: Ein ContextParameter kann entweder auf einen Default-Wert gesetzt werden, welcher nur bei Lesezugriffen im Dialog verwendet wird, sofern der parameter bisher noch nicht anderweitig (z.B. über eine Update Context Operation) gesetzt wurde.
  • ContextInitiative: Ist klar dass der ContextParameter vom Nutzer eingesammelt werden muss, z.B. eine Kunden-Id, der Name, etc. sollte eine ContextInitiative angelegt werden.

Context Initiative

Komplexere UseCases arbeiten häufig mit Variablen, wie beispielsweise einer AccountId. Diese Variablen sind üblicherweise als ContextParameter abgebildet. Die ContextInitiative ist ein zentrales Element eines ContextParameters und in der Gestaltung von Dialogen. Es ermöglicht die Kapslung von umständlichen Dialogabschnitten zur Einholung verschiedener Werte vom Kunden.

Wann immer in einem BotIntent oder einer DialogAction ein ContextParameter lesend verwendet wird, um seinen Wert in einer Bot-Nachricht oder Operation zu verwenden oder um basierend auf seinem Wert zu branchen, erscheint im Dialog-Editor auf der Verbindungslinie vor dem entsprechenden Knoten ein kleiner Blitz. Der Blitz zeigt an, dass der Bot sich an dieser Stelle aktiv um den Inhalt der Variable kümmert, da sie im darauf folgenden Schritt verwendet wird. Die Initiative des Bots kann beispielsweise das Fragen nach der AccountId sein oder die Validierung, ob es sich um eine gültige AccountId handelt.

Die Dialoginitiative wird automatisch in den Dialogablauf integriert, wenn der Bot-Builder den ContextParameter nutzt, zu dem eine Initiative angegeben ist. Der Dialogfluss wird mit dem nächsten Knoten fortgesetzt, nachdem eine erfolgreiche Initiative die erforderlichen Daten gesammelt hat.

Beachte folgende Regeln:

  • Eine ContextInitiative für einen Parameter wird maximal 1 Mal auf der Kante zwischen UserIntent und BotIntent ausgeführt.
  • ContextInitiativen können nicht in einander geschachtelt werden! Wird innerhalb einer ContextInitiative ein weiterer Parameter lesend verwendet, der nicht gesetzt ist und dadurch eine Initiative auslösen würde, tritt ein Fehler an der entsprechenden Stelle im Dialogs auf.

Dialog Optionen

Der Dialog um eine ContextInitiative erfolgt dabei nach einem bestimmten Mechanismus:

Die Dialogoptionen können nach belieben an bzw. aus geschaltet werden und sind wie folgt definiert:

Query

Wenn in diesem Kontext kein Wert gespeichert ist oder der Benutzer Einspruch gegen Confirm existing erhebt, wird der Benutzer in dieser Nachricht nach einem Wert gefragt.

Confirm existing

Wenn beim Auslösen der Initiative bereits ein Wert in diesem Kontext gespeichert ist, können Sie diese Nachricht verwenden, um den Benutzer den vorhandenen Wert bestätigen zu lassen.

Der Bot sollte hier ein Ja/Nein Frage verbalisieren. Es werden automatisch die unter den Advanced Settings angegeben Hooks mit der Bestätigung bzw. Ablehnung verknüpft.

Confirm understood

Wenn Sie den Benutzer mit Query oder Retry nach einem Wert gefragt haben, können Sie mit dieser Meldung um eine Bestätigung des verstandenen Werts bitten. Der Bot sollte hier ein Ja/Nein Frage verbalisieren. Es werden automatisch die unter den Advanced Settings angegeben Hooks mit der Bestätigung bzw. Ablehnung verknüpft.

Über den internen ContextParameter understoodValue kann an dieser Stelle auf den verstandenen Wert zugegriffen werden.

Retry

Wenn der Benutzer Einwände gegen Confirm Understood erhebt oder ein bereitgestellter Wert nicht validiert wird, können Sie mit dieser Meldung Ihre Abfrage umformulieren.

Success

Wenn die Initiative mit einem gültigen Wert endet, können Sie hierdurch eine Erfolgsmeldung senden.

Fail

Wenn die Initiative ohne einen gültigen Wert endet, können Sie auf diese Weise eine Fehlermeldung senden.

Advanced Settings

Eine ContextInitiative kann durch verschiedene Settings gesteuert werden.

Die Settings sind:

  • Relevant: Mit dieser Einstellung kannst Du Initiativen abhängig von Context-Bedingungen ausführen. Dazu lässt sich eine Bedingung definieren. Wenn diese Bedingung erfüllt ist, wird die Initiative ausgespielt; ansonsten wird sie ignoriert.
  • Mandatory: Mit dieser Einstellung bestimmst Du, ob die Initiative einen Wert sammeln muss, wenn sie ausgespielt wird. Wenn Mandatory aktiviert ist, scheitert die Initiative, sofern keine korrekte Eingabe erfolgt.
  • Interpretation mode: Der Interpretation Mode definiert ob ein Nutzer durch die Eingabe die initiative verlassen kann oder ob er gezwungen wird einen (korrekten) Wert einzugeben.
    • Local: Alle Nutzereingaben werden von der NLP nur innerhalb der Initiative evaluiert. Die Eingaben werden nicht gegen bestehende UserIntents evaluiert. Ein Verlassen der Initiative ist nicht vorgesehen.
    • Competing: Alle Nutzereingaben werden von der NLP innerhalb der Initiative und mit allen erreichbaren UserIntents evaluiert. Dies erlaubt es dem Nutzer auf eine Frage nicht antworten zu müssen und die Initiative zu verlassen.
  • Use full user utterance as value: Wenn aktiviert, wird die gesamte Antwort des Nutzers als Wert genommen. Siehe Eingabemöglichkeiten.
  • Positive Confirmation Hook: Setzt den Hook der für die Bestätigung der Confirm understood und Confirm existing Option verwendet werden soll.
  • Negative Confirmation Hook: Setzt den Hook der für die Ablehnung der Confirm understood und Confirm existing Option verwendet werden soll.

Eingabemöglichkeiten

Der Hauptzweck einer ContextInitiative ist es vom Nutzer einen bestimmten Wert einzusammeln der für den weiteren Dialogverlauf benötigt wird.

Für ContextParameter vom Typ Number, NumberWithUnit und String werden per Default wird die gesamte Nutzereingabe als Wert genommen.

Darüber hinaus gibt es verschiedenste Möglichkeiten einen Wert einzusammeln. Diese können nach Belieben kombiniert werden:

Utterances

Anstatt die gesamte Nutzereingabe als Wert zu verwenden, gibt es die Möglichkeit typische Nutzereingaben als Beispiele zu definieren, wie Nutzer den Wert übermitteln könnten. Dies passiert analog zur Eingabe von Utterances bei UserIntents.

Jede Utterance muss mindestens einen Slot definieren, in dem der eigentliche Wert stehen soll:

Ist der ContextParameter eine Liste von Werten können auch mehrere Slots pro Utterance verwendet werden. In diesem Fall werden alle Werte in den ContextParameter geschrieben.

Werden sowohl Utterances angegeben als auch das Flag Use full user utterance as value aktiviert, versucht die NLP zunächst die eingehende Nachricht einer der Beispiel-Utterances zuzuschreiben. In diesem Fall würde nur der entsprechende Slot-Wert ind en ContextParameter geschribeen werden. Gelingt dies nicht, wird die volle Nachricht als Wert verwendet.

Hooks

Eine Möglichkeit vordefinierte Werte zu verwenden ist es diese mit Hooks zu verknüpfen. Dies macht vor allem dann Sinn, wenn die konkreten Werte nicht vom Kunden verbalisiert werden können oder sollen. Ein typisches Beispiel ist ein boolescher Context Parameter. Anstelle trueoder falsevom Kunden zu erwarten verknüpfen wir einen Hook mit einem Wert. Wird ein hook von der NLP erkannt wird der dazugehörige Wert in den ContextParameter geschrieben.

Hooks werden in Reihenfolge abgearbeitet! Ein besonderer Hook ist hier der OrElse, welcher als generischer Fallback für beliebige Eingaben verwendet werden kann.

Buttons

Eine weitere Möglichkeit einen vordefinierten Wert zu setzen ist es mit provide value zu arbeiten. Über den Button-Klick können so Werte in den ContextParameter geschrieben werden:

Internal Parameter

Um an bestimmten Stellen im Dialog reagieren zu können gibt es eine Liste an internen ContextParametern, welche nur lesend verwendet werden können und von der Dialogengine gesetzt werden:

  • lastActiveNoneRecoveryModule: Der ContextParameter ìnternal.nlp.lastActiveNoneRecoveryModule beinhaltet immer den Key des zuletzt ausgespielte DialogModuls (Recovery ausgenommen).
  • understoodValue: Der ContextParameter internal.initiative.currentInitiative.understoodValue kann nur in der Confirm understood Option verwendet werden. Er beinhaltet den interpretierten Wert.
Previous
Core Behaviors