Automation

Smart Expressions

Smart Expressions sind eine leistungsstarke Methode, um Dynamik und Flexibilität in Ihre Chatbot-Konversationen zu bringen. Durch die Verwendung von Smart Expressions können Sie Echtzeitdaten in Gesprächsvariablen und Bot-Nachrichten einbeziehen, so dass Ihr Chatbot auf der Grundlage des sich entwickelnden Kontexts oder der Datenvariablen intelligent reagieren kann.

Smart Expressions folgen einem bestimmten Format: ${smart expression}

Variablen und Namespaces

In Smart Expressions können Sie auf verschiedene Variablen zugreifen. Die meisten benutzerdefinierten Parameter befinden sich im global-Namespace.

  • global: Enthält die meisten vom Benutzer erstellten Kontextparameter. Beispiel: ${global.meinParameter}
  • user: Informationen über den Benutzer (z.B. ${user.name}).
  • legal: Zugriff auf rechtliche Informationen oder Zustimmungen (z.B. ${legal.optIn}).
  • setting: Zugriff auf Bot-spezifische Einstellungen (z.B. ${setting.language}).

Operatoren

Smart Expressions unterstützen eine Vielzahl von Operationen, die von arithmetischen bis hin zu logischen und relationalen Operationen reichen.

Arithmetische Operatoren

  • Addition: +
  • Subtraktion: -
  • Multiplikation: *
  • Division: / oder div
  • Modulus: % oder mod
  • Unäre Negation (Vorzeichen): -

Logische Operatoren

  • Und: && oder and
  • Oder: || oder or
  • Nicht: ! oder not
  • Leer-Prüfung: empty (Prüft ob ein Wert null oder leer ist)

Relationale Operatoren

  • Gleich: == oder eq
  • Ungleich: != oder ne
  • Kleiner als: < oder lt
  • Größer als: > oder gt
  • Kleiner gleich: <= oder le
  • Größer gleich: >= oder ge

Sonstige Operatoren

  • Zeichenketten-Verknüpfung (+=): Kombiniert Zeichenketten.
  • Bedingter Operator (A ? B : C): Wenn A wahr ist, wird B zurückgegeben, sonst C.
  • Lambda-Ausdruck (->): Erstellt anonyme Funktionen (z.B. ${(x, y) -> x * y}(3, 5) ergibt 15).
  • Zuweisung (=): Weist einer Variablen einen Wert zu.
  • Semikolon (;): Trennt mehrere Ausdrücke.

Rangfolge der Operatoren

(Von höchster zu niedrigster Priorität)

[] .
() 
- not ! empty
* / div % mod
+ - 
+=
< > <= >= lt gt le ge
== != eq ne
&& and
|| or
? :
-> 
= 
;

Literale

In Smart Expressions gibt es Literale für Booleans (="true"/"false"), Integer, Floats und Strings. Das bedeutet das die Werte der Variablen aus einem String Format abgelesen werden können.

Für Strings in einfachen oder doppelten Anführungszeichen, gibt es folgende Escape-Regeln:

  • \\ für ein Backslash
  • \" in doppelt-quotierten Strings
  • \' in einfach-quotierten Strings
  • weitere Escapes sind nicht erlaubt

Funktionen

Funktionen erweitern die Möglichkeiten von Smart Expressions erheblich. Sie werden im Format ${prefix:funktionsName(argumente)} aufgerufen.

Texte (strings:)

Manipulation und Prüfung von Zeichenketten.

  • strings:concat(s1, s2): Verbindet zwei Texte.
  • strings:contains(s, sub): Prüft, ob ein Teiltext enthalten ist.
  • strings:startsWith(s, prefix) / strings:endsWith(s, suffix): Prüft auf Anfang oder Ende eines Textes.
  • strings:toLowerCase(s) / strings:toUpperCase(s): Wandelt in Klein- oder Großbuchstaben um.
  • strings:trim(s): Entfernt Leerzeichen am Anfang und Ende.
  • strings:substring(s, start, end): Gibt einen Teil des Textes zurück.
  • strings:replace(s, target, replacement): Ersetzt alle Vorkommen eines Textes durch einen anderen.
  • strings:length(s): Gibt die Anzahl der Zeichen (UTF-8 kodiert) zurück.
  • strings:isEmpty(s): Prüft, ob der Text leer oder nicht vorhanden ist.

Zahlen (numbers:)

Mathematische Funktionen und Formatierung.

  • numbers:random(min, max): Erzeugt eine Zufallszahl zwischen min (inklusive) und max (exklusive).
  • numbers:abs(v), numbers:round(v), numbers:ceil(v), numbers:floor(v): Absolute Werte, Runden, Auf- und Abrunden.
  • numbers:min(v1, v2), numbers:max(v1, v2): Minimum oder Maximum von zwei Werten.
  • numbers:pow(base, exp), numbers:sqrt(v): Potenzrechnung und Quadratwurzel.
  • numbers:parseInt(v), numbers:parse(v): Konvertiert einen Text oder Wert in eine Ganzzahl oder Dezimalzahl.
  • numbers:format(<pattern>, locale, input): Formatiert eine Zahl (z.B. ${numbers:format('#.00', 'de', 1234.56)} ergibt 1234,56).

Pattern

  • pattern : Beschreibt das Pattern in dem die Zahl angezeigt wird. Das Pattern ermöglicht es, Zahlen mithilfe bestimmter Symbole nach einem definierten Muster zu formatieren. Die vier Hauptsymbole sind:
    • 0 (Null): Dieses Symbol gibt eine Ziffer aus, wenn eine vorhanden ist; andernfalls wird eine 0 ausgegeben. Es stellt sicher, dass an dieser Stelle eine Ziffer erscheint.
    • # (Raute): Dieses Symbol gibt eine Ziffer aus, wenn eine vorhanden ist; andernfalls wird nichts ausgegeben. Es wird für optionale Ziffern verwendet.
    • . (Punkt): Dieses Symbol markiert die Stelle des Dezimaltrennzeichens.
    • , (Komma): Dieses Symbol markiert die Stelle des Gruppierungstrennzeichens (z. B. für Tausendertrennung).

Datum und Uhrzeit (dates:)

Umgang mit Zeitstempeln und Datumsangaben.

  • dates:nowInZone(zoneId): Aktueller Zeitstempel als ISO-8601 String in der angegebenen Zeitzone.
  • dates:nowFormattedInZone(<pattern>, zoneId): Aktueller Zeitstempel formatiert in einer bestimmten Zeitzone.
    • Beispiel: ${dates:nowFormattedInZone(<pattern>, 'Europe/Berlin')}
  • dates:hour(zoneId), dates:minute(zoneId), dates:day(zoneId), dates:month(zoneId), dates:year(zoneId): Einzelne Bestandteile der aktuellen Zeit in der angegebenen Zeitzone.
    • hour(zoneId): 0 bis 23.
    • minute(zoneId): 0 bis 59.
    • day(zoneId): Tag des Monats (1 bis 31).
    • month(zoneId): Monat (1 bis 12).
    • year(zoneId): Das Jahr (z.B. 2023).
  • dates:dayOfWeek(zoneId): Aktueller Wochentag in der angegebenen Zeitzone (z.B. "MONDAY", "TUESDAY", ...).
  • dates:format(date, <pattern>, zoneId): Formatiert ein beliebiges Datum oder einen Text unter Berücksichtigung der Zeitzone.
  • dates:isBefore(d1, d2), dates:isAfter(d1, d2), dates:isEqual(d1, d2), dates:isSameDay(d1, d2): Vergleicht zwei Datumsangaben.

Pattern

  • pattern : Beschreibt das Pattern, in dem das Datum oder die Uhrzeit angezeigt wird. Das Pattern ermöglicht es, Datumsangaben mithilfe bestimmter Platzhalter zu formatieren. Die gängigsten Symbole sind:
    • y (Jahr): Stellt das Jahr dar (z. B. yyyy für 2023).
    • M (Monat): Stellt den Monat dar (z. B. MM für den Monat als Zahl, MMM für die Abkürzung).
    • d (Tag): Stellt den Tag des Monats dar (z. B. dd).
    • H (Stunde): Stellt die Stunde im 24-Stunden-Format dar (0-23).
    • m (Minute): Stellt die Minute dar (0-59).
    • s (Sekunde): Stellt die Sekunde dar (0-59).

Verfügbare Zeitzonen (Auszug)

Hier sind einige gängige Zeitzonen-IDs, die Sie verwenden können:

  • Europe/Berlin (Deutschland)
  • Europe/Vienna (Österreich)
  • Europe/Zurich (Schweiz)
  • Europe/London (Großbritannien)
  • Europe/Paris (Frankreich)
  • Europe/Rome (Italien)
  • Europe/Madrid (Spanien)
  • UTC (Koordinierte Weltzeit)

Beispiele für Dates

  • Begrüßung nach Tageszeit: ${dates:hour('Europe/Berlin') < 12 ? 'Guten Morgen' : (dates:hour('Europe/Berlin') < 18 ? 'Guten Tag' : 'Guten Abend')}
  • Datum in Berlin ausgeben: ${dates:nowFormattedInZone('dd.MM.yyyy HH:mm', 'Europe/Berlin')}
  • Prüfen ob heute ein bestimmter Tag ist: ${dates:dayOfWeek('Europe/Berlin') == 'FRIDAY' ? 'Endlich Freitag!' : 'Noch kein Wochenende.'}
  • Relativer Vergleich: ${dates:isBefore(global.terminDatum, dates:nowInZone('UTC')) ? 'Der Termin liegt in der Vergangenheit' : 'Zukünftiger Termin'}

Kodierung (encode:)

  • encode:base64(input): Kodiert einen Text oder binäre Daten als Base64-String.

Weitere Beispiele

Hier sind einige praktische Anwendungsfälle für Smart Expressions:

  • Personalisierte Begrüßung: Hallo ${!empty global.vorname ? global.vorname : 'Gast'}! (Gibt den Vornamen aus, falls vorhanden, sonst 'Gast')

  • Guthaben-Anzeige: Ihr aktuelles Guthaben beträgt ${numbers:format('#,##0.00', 'de', global.balance)} €. (Formatiert eine Zahl nach deutschen Standards mit zwei Dezimalstellen)

  • Zeitgesteuerte Nachrichten: ${dates:hour('Europe/Berlin') < 12 ? 'Guten Morgen' : 'Guten Tag'}, ${global.vorname}!

  • Prüfung von Eingaben: ${strings:length(global.passwort) < 8 ? 'Das Passwort ist zu kurz!' : 'Passwort akzeptiert.'}

  • Komplexe Logik: ${global.userIsPremium || global.bestellwert > 100 ? 'Versandkostenfrei' : 'zzgl. 4,95 € Versand'}

Mit Smart Expressions können Sie Ihre Chatbot-Interaktionen dynamischer, persönlicher und intelligenter gestalten.

Previous
NLP Component