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:
/oderdiv - Modulus:
%odermod - Unäre Negation (Vorzeichen):
-
Logische Operatoren
- Und:
&&oderand - Oder:
||oderor - Nicht:
!odernot - Leer-Prüfung:
empty(Prüft ob ein Wert null oder leer ist)
Relationale Operatoren
- Gleich:
==odereq - Ungleich:
!=oderne - Kleiner als:
<oderlt - Größer als:
>odergt - Kleiner gleich:
<=oderle - Größer gleich:
>=oderge
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)}ergibt1234,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')}
- Beispiel:
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.
yyyyfür 2023). - M (Monat): Stellt den Monat dar (z. B.
MMfür den Monat als Zahl,MMMfü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).
- y (Jahr): Stellt das Jahr dar (z. B.
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.