Automation

Dialog Module

Diese Dokumentation beschreibt das Konzept der Dialog Module; was ist ein Dialog Modul, wofür wird es eingesetzt und woraus besteht es.

Einleitung

Vordefinierte Dialogstrecken werden im Mercury Chatbot in sogenannte Dialog Module beschrieben. Ein Dialog Module dient dabei als Container für eine Sammlung an Dialogen die sich um ein bestimmtes Thema oder einen UseCase drehen. Die Aufteilung der Themen-spezifischen Dialoge in Module dient darüber hinaus der Übersichtlichkeit und ermöglicht modulares bauen des Chatbots. So ist es möglich, komplette Dialog Module zu exportieren, zu importieren, oder zu löschen. Dies macht sie zu einem wichtigen Werkzeug im Management von Multi-Bot-Setups und gewährleisten einheitliche und konsistente Dialog-Stories über verschiedenen Bots eines Unternehmens.

Eine Konversation beginnt typischerweise mit einer Intention eines Nutzers z.B. einer Begrüßung UserIntent und endet mit einer Antwort des Bots BotIntent. Dazwischen können verschiedene Aktionen ausgeführt werden, die den Dialogverlauf beeinflussen, indem sie unter bestimmten Bedingungen verzweigen oder Operationen durchführen, z.B. Workflows aufrufen, API-Aufrufe tätigen oder interne Zustände aktualisieren.

Obwohl natürliche Dialoge in der Regel keinem streng vordefinierten Ablauf folgen, kapseln die Dialogmodule einen einzelnen Anwendungsfall. Sie schränken den Bot-Ersteller und den Endbenutzer jedoch nicht auf die Grenzen eines Dialogs Moduls ein. Knoten in einem Dialogablauf können jederzeit mit anderen Dialog Modulen verknüpft werden.

Wir bieten zwei Möglichkeiten einen Dialog Module zu erstellen:

  1. Um ein neues leeres Dialog Module für deinen UseCase zu erstellen, klicke auf das den Button mit der Aufschrift Create new dialog module. Gebe einen eindeutigen Namen und optional eine Beschreibung des UseCases an. Ein leeres Module wird erstellt und kann jetzt befüllt werden.

  2. Alternativ gibt es die Möglichkeit ein Dialog Module basierend auf einem Freitext zu generieren. Dies kann z.B. der Inhalt einer FAQ-Seite sein. Klicke dazu auf den Button mit der Aufschrift Create dialog from text input. Ein Module wird erstellt, welches basierend auf dem Text verschiedene Frage-Antwort Paare generiert.

Klicke auf das neu erstellte Dialog Modul um den Dailogflow-Editor zu öffnen:

Dialogflow-Editor

Der Dialogflow-Editor ist das Haupttool mit dem Du redaktionell gepflegte Dialoge in Deinem Mercury ChatBot erstellst. Er stellt eine grafische Oberfläche zur Verfügung, die den Beziehungsfluss einzelner Dialogbausteine und Module darstellt und den Verlauf einer erwarteten Konversation abbilden.

Dialog Bausteine

Dialoge bestehen dabei aus 3 verschiedenen Grundbausteinen welche in einer grafischen Struktur organisiert werden.

  • UserIntent : Ein UserIntent spiegelt eine Benutzerabsicht wider und werden im Editor blau dargestellt.
  • BotIntent : Ein BotIntent ist die Antwort auf einen UserIntent welche vom Chatbot ausgespielt werden soll. BotIntents werden im Editor grün dargestellt.
  • DialogAction : Eine DialogAction liegt immer zwischen einem UserIntent und einem BotIntent. Sie kann verschiedene Operationen ausführen wie Kontext setzen oder über den Branching-Mechanismus den Dialog konditional steuern. DialogActions werden im Editor gelb dargestellt.

In manchen Situationen ist es hilfreich nicht nur das Label eines Intents zu kennen, sondern auch den dazugehörigen Key, da dieser nachträglich nicht mehr geändert werden kann. Um erweiterte Informationen zu einem Intent zu bekommen klicke auf den blauen (UserIntent), gelben (DialogAction) oder grünen (BotIntent) Button der sich neben dem Label des Intents befindet.

Ein neuer UserIntent kann auf zwei verschiedene Arten angelegt werden:

  • per Klick auf den blau markierten Button Create user intent, welcher sich in der linken unteren Ecke befindet. Der UserIntent wird ohne weitere Verknüpfung angelegt.
  • per Klick auf das (+) - Symbol hinter einem existierenden BotIntent und dann auf den Button Create new. Dies erzeugt einen neuen UserIntent welcher direkt mit dem ausgewählten BotIntent über ein Priming verknüpft ist.

Ein neuer BotIntent ebenfalls auf zwei Arten angelegt werden:

  • per Klick auf den grün markierten Button Create bot intent, welcher sich in der linken unteren Ecke befindet. Der UserIntent wird ohne weitere Verknüpfung angelegt.
  • per Klick auf das (+) - Symbol hinter einem existierenden noch nicht verknüpften UserIntent und dann auf den Button Create new. Der neu angelegte BotIntent wird automatisch mit dem ausgewählten userIntent verknüpft.

Eine neue DialogAction kann nur zwischen einem UserIntent und einem BotIntent oder einer DialogAction und einem BotIntent angelegt werden:

  • per Klick auf das (+) - Symbol hinter einem existierenden verknüpften UserIntent und dann auf den Button Create new. Die neu angelegte DialogAction wird automatisch mit dem vorherigen und nachstehenden Knoten verknüpft.

Ein fehlerhaftes Target, z.B wenn ein Knoten gelöscht wird, während er noch verlinkt ist, wird im Editor mit einem roten Ausrufezeichen markiert:

Sollte der Intent ausgespielt werden, wird von der DialogEngine an der entsprechenden Stelle als Fallback der Dead End Trigger ausgespielt!

Ghost Nodes

Obwohl Dialog Module im besten Fall einzelne UseCases kapseln, kann es durchaus sein, dass zwischen den UseCases logische Verknüpfungen bestehen. Ein häufiges Beispiel ist ein dialog Module welches eine Art Navigation oder Menüstruktur beinhaltet. Über Buttons werden von hier auf die verschiedenen UseCases und andere Dialog Module referenziert. Eine eingehende Verknüpfung wird im Editor als halb transparenter Knoten (Ghost-Node) dargestellt. Ein Klick auf den Knoten springt an die Stelle im Editor wo der Knoten definiert ist.

Settings

Der Editor bietet verschiedene Möglichkeiten, um Dialoge effizient bauen und darzustellen.

Knoten-Setting

Oben links befinden sich Settings zur Anzeige und Handling von Knoten:

  • show external nodes: Aktivere den Schalter um eingehende Knoten aus externen Dialog Modulen (Ghost-Nodes) anzuzeigen.

  • group node references: Aktiviere den Schalter um Verknüpfungen zum selben Knoten zu gruppieren.

Finder

Der Finder bietet eine hilfreiche Suchfunktion um direkt zu diversen Knoten zu springen. Gebe in das Suchfeld einen beliebigen Suchbegriff ein und durchsuche alle Knoten nach diesem Text. Dabei werden sowohl BotMessages (BotIntent), Utterances (UserIntent), Operationen (DialogAction) so wie Label und Keys der Knoten verwendet und nach Relevanz sortiert.

TryMe

Das TryMe-Konzept ermöglicht es, gemachte Änderungen direkt im Bot-Editor testen zu können. Sobald der TryMe einsatz bereit ist steht die aktuellste Version des Bots zur Verfügung. Der TryMe kann über den Button auf der rechten Seite geöffnet werden:

Er bietet eine einfache Eingabe-Maske und zeigt Bot-Nachrichten in vereinfachter Form (Kanal-Agnostisch) an.

Mit Klick auf den Button Show debugging info werden erweiterte Dialog-Informationen zwischen den Messages angezeigt die dabei helfen, den Dialogfluss zu verstehen. Weitere Infos zum Dialog-Debugger befinden sich hier.

Language - Selector

Oben rechts in der Ecke befindet sich die Sprachauswahl. In einem Dropdown-Menü kann so die Sprache geändert werden.

Betroffen von der Sprachauswahl sind alle Sprach-relevanten Attribute der Knoten. Dies sind beim UserIntent die Canonical, die Utterances, so wie beim BotIntent die Bot-Messages. Ausserdem setzt es die Sprache die im TryMe benutzt werden soll.

UserIntent

EIn UserIntent spiegelt eine explizit definierte Benutzerabsicht wider und reflektiert was ein Nutzer durch seine sprachlichen oder Klick-basierten Aktionen erreichen möchte. Soll ein UserIntent adressierbar sein, so muss eine Liste an Beispiel-Phrasen oder Begriffen definiert werden, um diese bestimmte Absicht auszudrücken. Diese sogenannten Utterances dienen der NLP Komponente als Trainingsdaten. Ein UserIntent ist entweder der Startpunkt eines Gesprächs und somit der erste Knoten in einem Dialogablauf, oder eine erwartete Antwort auf eine Frage des Bots und meistens direkt mit dem vorhergehenden BotIntent über ein Priming verknüpft.

Es gibt vier zentrale Bestandteile, die einen UserIntent charakterisieren:

  1. Target Node: Der Zielknoten definiert den nächsten Schritt im Dialogablauf, der auf den UserIntent folgt.
  2. Canonical: Ein kanonischer Wert der die Grundform des UserIntents repräsentiert, die unabhängig von der spezifischen Wortwahl oder Formulierung des Endbenutzers bleibt.
  3. Utterances: Dies sind die Phrasen oder Begriffe, die der Endbenutzer verwenden könnte, um die spezifische Absicht des UserIntents zu äußern.
  4. NLP Access Mode: Dieser Modus bestimmt, unter welchen dialogischen Gegebenheiten der Bot den UserIntent adressieren kann.

Target Node

Die Target Node bezeichnet das nächste Element im Dialog, das aktiviert wird, nachdem der UserIntent vom NLP erkannt wurde. Es kann sich hierbei entweder um eine Dialogaktion oder um einen BotIntent handeln. Zielknoten des UserIntents können nur im selben DialogModule liegen, ein Wechsel in ein anderes Dialog Module kann nicht von einem UserIntent ausgehen.

Canonical

Die Canonical ist ein kurzer sprachlicher Ausdruck (20 Zeichen limitiert), der die Bedeutung des UserIntent zusammenfasst. Sie sind keine Trainingsdaten, sondern dienen zum einen im Dialog-Editor der Verdeutlichung der Intention, indem sie unterhalb Labels des UserIntents angezeigt werden.

Ihre Hauptaufgabe gilt jedoch der Disambiguierung ähnlicher UserIntents. Wenn der Bot die tatsächliche Absicht des Benutzers nicht mit Sicherheit erkennen kann, kann er eine Liste von kanonischen Begriffen (Canonicals) der möglichen UserIntents dem Nutzer als Buttons zur Auswahl anzeigen. Dies ist ein Hauptbestandteil des Active Learning Verhaltens.

Utterances

Utterances sind sprachliche Ausdrücke, die eine konkrete Nutzerabsicht zum Ausdruck bringen. Sie werden verwendet, um das NLP-Modell für diesen Intent zu trainieren. Die zur Verfügung gestellten Äußerungen sollten dabei ein breites Spektrum an Beispielen abdecken, wie ein Nutzer diese Absicht ausdrücken könnte.

Utterance Generierung

Um eine robuste und generalisierende Fährigkeit des Sprachverständnisses zu erreichen, sind variantenreiche Trainingsdaten erforderlich. Wir bieten die Möglichkeit, neue Utterances von einer generativen KI erstellen zu lassen. Klicke dazu auf das Magic-Symbol rechts-oben neben den Utterances:

Ungeeignete Vorschläge können dann entfernt und die geeigneten Utterances für das Training verwendet werden.

Reguläre Ausdrücke

In manchen Fällen erwartet man nur eine bestimmte Art von Ausdrücken. Zum Beispiel, wenn an die Eingabe eines Datums, einer spezifischen Kunden-Id oder ähnliches erwartet. Da diese Art der speziellen Eingaben schwierig mit probabilistischen Modellen zu trainieren sind, erlauben wir bei Utterances die Verwendung von sogenannten. Hierüber lassen sich bequem zum Beispiel ihre Kunden-Ids abbilden.

Um zum Beispiel eine Id 'CID-12345-9876' mit Prefix 'CID-' (CustomerId) gefolgt von einer beliebigen 5-stelligen Zahl, einem Bindestrich und einer weiteren beliebigen 4-stelligen Zahl abzubilden, wäre folgender RegEx geeignet:

CID-[0-9]{5}-[0-9]{4}

Beachte, dass Reguläre Ausdrücke nicht in das Training der NLP einfließen! Reguläre Ausdrücke werden im Editor kursiv dargestellt. Um eine Utterance als RegEx zu markieren, klicke auf das Menü rechts neben der entsprechenden Utterance.

Weitere Informationen zu Regulären Ausdrücken sowie eine online Applikation zum Testen finden sie in diesem externen Link zu Regulären Ausdrücken.

Slots

Ein Slot stellt eine Art Platzhalter in einer Utterance dar, auf die im Dialogverlauf zugegriffen werden kann, sofern dieser Slot gefüllt ist. Jeder Slot wird über ein Label und ein Datentyp definiert. Unterschiedliche Slots mit gleichem Label referenzieren im folgenden Dialogverlauf denselben Slot (unabhängig von dem Datentyp).

Um einen Slot einer Utterance hinzuzufügen, schreibe zunächst die volle Utterance zum beispiel My name is CustomerName, wähle dann den entsprechenden Teil der Utterance aus welcher mit dem Platzhalter versehen werden soll: CustomerName, und klicke auf das {}-Symbol rechts neben der entsprechenden Utterance. Ist dies der erste Slot innerhalb des UserIntents, kannst Du jetzt den Daten typ sowie ein Label bzw. eine Slot-Rolle für diesen Slot eingeben. Falls es schon einen oder mehrere Slots innerhalb dieses UserIntents gibt, wird dieser automatisch ausgewählt. Klicke auf new slot definition, wenn Du den Slot anpassen willst.

Weiterführende Informationen und Beispiele wie Slots verwendet werden findest Du im Kapitel Variablen im Dialog

NLP-Access Mode

Der NLP-Access Mode kontrolliert, in welchen Dialogsituationen ein UserIntent erreichbar ist. Dies kann sein:

  • global: Der UserIntent ist jederzeit erreichbar, wenn die NLP aus einer Eingabe den Intent identifizieren kann.
  • module: Der UserIntent ist nur dann erreichbar, wenn der vorher ausgespielte BotIntent im selben Dialog Modul liegt.
  • priming: Der UserIntent ist nur dann erreichbar, wenn er über ein Priming des zuvor ausgespielten BotIntents gebunden ist.
  • none: Der UserIntent ist nie über die NLP erreichbar und kann nur durch Buttons ausgelöst werden.

Weiterführende Informationen und Beispiele wie der Modus verwendet wird, findest Du im Kapitel NLP Component

Weiteres

  • pinning: Jeder UserIntent kann bei Bedarf zur Erhöhung der Übersichtlichkeit an die linke Seite des Editors "gepinned" werden. Dies verhindert, dass der Graph-Algorithmus diesen UserIntent frei anordnen kann.
  • delete: Um einen UserIntent zu löschen, klicke unten rechts auf das Menü und wähle Delete node aus.
  • merge into: Um einen UserIntent in einen anderen UserIntent zu integrieren, wähle Merge into other user intent aus und folge den Anweisungen.

BotIntent

Der BotIntent spielt als einer der drei Hauptknotentypen eine entscheidende Rolle beim Aufbau von Dialogabläufen. Er besteht in erster Linie aus einer Antwort, die der Chatbot dem Benutzer gibt. Darüber hinaus verfügt ein BotIntent über die Fähigkeit, eine Sammlung erwarteter Benutzerabsichten vorzubereiten, bei denen es sich um die erwarteten Antworten auf eine Anfrage oder einfach nur um den natürlichen Verlauf des Dialogflusses handeln kann.

Der Bot bzw. der Bot-Builder hat mehrere Möglichkeiten, Antworten zu erstellen. Mit dem Bot-Message Editor können diese Antworten bearbeitet und konfiguriert werden. Hier können verschiedene statische Nachrichten definiert und bei Bedarf um dynamische Elemente erweitert werden. Im Idealfall wird jede Bot-Nachricht für jede Sprache und jeden Kanal definiert.

Nachrichten Templates und Kanalspezifikationen

Beim Umgang mit Vorlagen gibt es eine automatische Fallback-Funktion. Das heißt, wenn bestimmte Nachrichten nur für einen bestimmten Kanaltyp verfügbar sind, z.B. "Web", und eine Konversation über einen anderen Kanal, z.B. WhatsApp, geführt wird, wird die Nachricht für den Web-Kanal als Fallback verwendet. Sie wird in einer automatisch an Whastapp angepassten Version gerendert, um ein einheitliches Nutzererlebnis über alle Kanäle hinweg zu gewährleisten. Beachten Sie jedoch, dass verschiedene Kanäle manchmal unterschiedliche Nachrichtentypen haben. In diesen Fällen werden nicht übereinstimmende Nachrichtentypen automatisch so gut wie möglich in das jeweilige Format umgewandelt.

Bot-Message Editor

Der Bot-Message Editor ermöglicht das Erstellen der Chatbot-Nachrichten. Mit der Möglichkeit, spezifische Nachrichten Templates für unterschiedliche Kanaltypen zu verwenden, bietet der Editor eine flexible Handhabung von Text- und Multimedia-Inhalten und sorgt für ein anpassungsfähiges, kanalspezifisches Nutzererlebnis.

Nachrichten können dabei aus mehreren Elementen bestehen, wie Text, Bildern, Buttons usw. Neben statischen Eingaben, wie z.B. Text, bietet der Message Builder die Möglichkeit, dynamische Elemente zu jeder Art von Nachricht hinzuzufügen. Diese werden erst direkt vor dem Versand der Nachricht ausgewertet.

Dynamische Elemente werden in einer Bubble gerendert:

Dazu gehören unter Andrem:

  • Slot-Werte: Platzhalter in UserIntent Utterances auf die z.B. in einer Bot-Message zugegriffen werden kann.
  • Context Parameter: Globale Werte die während eines Dialogs gesetzt werden können.
  • Edge Variablen: Lokale Variablen die während des Dialogs gesetzt werden können. Im Gegensatz zu Context Parametern existieren Edge-Variablen immer nur im Dialog zwischen dem startenden UserIntent und dem endenden BotIntent.
  • Smart Expressions: Smart-Expressions können dynamisch andere Variablen auswerten ( z.B. boolsche Werte) und konditional Text setzen.

Um ein dynamisches Element hinzuzufügen, klicke an eine beliebige Stelle in der Bot-Message und klicke auf das {}-Symbol welches auf der rechten Seite der Message angezeigt wird.

Primings, Buttons & Targets

Primings ermöglichen es dem Bot, bestimmte Erwartungen an den als nächstes folgenden UserIntent zu haben. Priming wirkt sich darauf aus, wie die NLP-Engine verschiedene UserIntents erkennt und behandelt. Nachdem ein BotIntent ausgespielt wurde, sorgt das Priming dafür, dass der mit ihm verbundene UserIntent von der NLP bevorzugt behandelt wird. Das Priming priorisiert sozusagen den "jetzt gerade richtigen" Intent. Ein Priming wird immer hinzugefügt, wenn ein Button in einer Bot-Nachricht verwendet wird kann jedoch auch unabhängig von einem Button hinzugefügt werden. Im letzteren Fall ist das Priming für den Nutzer im Dialog "nicht sichtbar".

Wird ein UserIntent über einen Button mit einem BotIntent verknüpft erscheint im Editor eine durchgezogene Linie zwischen den beiden Intents. Wird der UserIntent dagegen nur mit einem Priming an den BotIntent gehangen, ist die Linie gestrichelt.

Einem Priming kann eine beliebige Anzahl an Hooks angehangen werden um das Sprachverständnis des Bots in diesem speziellen dialogischen Moment zu verbessern.

Sealing

Normalerweise ist es nicht notwendig, dass ein Nutzer auf eine Frage des Bots antwortet. Das Sealing erweitert die Basisfunktion des Primings und ermöglicht es, die durch Priming aktivierten UserIntents exklusive zu machen. Dies impliziert, dass nach dem BotIntent nur die UserIntents, die durch das Priming verbunden wurden, aktiviert werden können. Diese Funktion spielt eine entscheidende Rolle, wenn nur bestimmte nachfolgende Aktionen in einem Dialog zugelassen werden sollen.

Ist das Sealing in einem BotIntent aktiviert und die Nutzereingabe passt zu keinem der geprimten UserIntents wird ein No Parse ausgespielt. Das Sealing und das Priming bleiben dabei erhalten. Erst wenn der Bot ins Start Over kommt, wird beides aufgehoben.

Ein aktives Sealing wird im Editor mit einem gelben Schloss-Symbol gekennzeichnet:

DialogAction

Die Dialog Action ist ein spezieller Knoten im Dialog mit zwei Hauptfunktionen:

  • das Ausführen von Operationen
  • das kontextualisiere Verzweigen des Dialogs

DialogActions werden im Editor gelb dargestellt. Zum Hinzufügen einer DialogAction klicke einfach auf das (+)-Symbol auf der Verbindungslinie zwischen zwei Knoten.

Operations

Unter Operations können verschiedene Dialog-relevante Operationen oder Workflows ausgeführt werden welche nacheinander ausgeführt werden. Aktionen könnten beispielsweise das Aktualisieren von Context Parametern, das Beschreiben von Edge-Variablen, das Arbeiten mit Content Objekten oder zum Beispiel das Initiieren eines Handovers sein.

Neben den standardmäßig vorhandenen Aktionen können Sie auch selbst erstellte Workflows verwenden. Alle Workflows, die von einem Bot gestartet werden können, stehen automatisch in der Liste der verfügbaren Aktionen.

Um eine neue Operation zu verwenden, wird erst über das Dropdown-Menü die entsprechende Operation ausgewählt und anschließen über den Button add operation der DialogAction hinzugefügt.

Jede Operation hat dabei ihre eigene Input-Maske. Eine Update Context-Operation zum Beispiel benötigt zuerst den Context Parameter welcher gesetzt werden soll, dann einen Executional Operator (z.B. set) und dann einen entsprechenden Wert.

Weiterführende Informationen zu den verschiedenen Operationen findest du hier.

Edge Variables

Manche Operationen liefern von sich aus ein oder mehrere Variablen welche nur im lokalen Kontext des Dialogabschnitts zur verfügung stehen. Diese Variablen nennt man Edge-Variablen.

Weiterführende Informationen zu Edge-Variablen findest du hier.

Branches

Unter Branching können Sie bedingte Folgeknoten festlegen. Bei Erfüllung der Bedingung wird der Dialog auf den entsprechenden BotIntent umgeleitet.

Diese Verzweigung ist essenziell für kontextualisierte Dialogverläufe und ermöglicht es, die Konversation dynamisch an die Nutzereingaben oder den Dialogzustand anzupassen.

Wenn mehrere Branches definiert sind, werden sie der Reihe nach ausgewertet. Der erste Branch, dessen Bedingung erfüllt ist, wird fortgesetzt.

Eine Bedingung besteht dabei immer aus drei Teilen, der zu überprüfenden Variable (Edge-Variable, Context Parameter, Slot etc.) einem Conditional Operator (z.B. equals) und einem zu überprüfenden Wert.

Jede DialogAction enthält außerdem ein Default Target und ein Fail Target.

  • Das Default Target wird verwendet, wenn keine der Verzweigungsbedingungen erfüllt ist oder keine Verzweigung definiert wurde. Es bestimmt den nächsten Knoten im Dialogverlauf.
  • Das Fail Target wird verwendet, wenn während der Ausführung der Operationen oder der Auswertung der Verzweigungsbedingungen ein Fehler auftritt. Es bestimmt den nächsten Knoten im Dialogverlauf, wenn beispielsweise ein Workflow aufgrund einer fehlerhaften externen Integration kein gültiges Ergebnis liefert. Wenn kein Fail-Target definiert ist, wird das allgemeine General Error als Fallback verwendet.

Weiteres

Die Auswahl der zur Verfügung stehenden Werte, sowohl beim Setzen eines Context Parameters in der Context Update-Operation als auch bei der Definition des Branches ist immer abhängig vom Datentyp.

Generell bieten wir drei verschiedene Arten an einen Wert zu verwenden.

  • input static value: Ermöglicht die Eingabe eines statischen Wertes. Bei boolschen Werten true & false, bei Zahlen eine Zahleingabe etc.
  • input expression: erlaubt als Eingabe eine beliebige Smart-Expression. Diese muss bei der Evaluierung in den entsprechenden Datentyp geparst werden können! Ansonsten schlägt die DialogAction fehl.
  • parameter Auswahl: Zuletzt bieten wir auch immer eine Auswahl an existierenden globalen und lokalen Parametern an, welche mit Keywords durchsucht werden kann. Auch hier müssen entweder die Datentypen übereinstimmen oder der ausgewählte Wert in den entsprechenden Parameter geparst werden können.

Weiterführende Informationen zu Variablen und Datentypen findest du hier.

Previous
Overview