Wie man mit Ausdrücken (Expression) arbeitet

Was sind Ausdrücke?

Ein Ausdruck sieht aus wie eine Zeichenkette einer bestimmten Syntax. Er wird auf dem Server in einem konkreten Kontext «ausgeführt», und das Ergebnis der Ausführung ist einer der beiden Booleschen Werte: wahr oder falsch (true / false).

Faktisch beantwortet ein Ausdruck die Frage: Muss diese konkrete E-Mail gerade an diesen konkreten Abonnenten gesendet werden?

Für Trigger-E-Mails fehlen solche Fragen in der Regel — sie müssen immer gesendet werden. Bei Marketing-E-Mails ist alles komplizierter. Die Notwendigkeit des Versands hängt davon ab, welche Daten genau der Abonnent hat (zum Beispiel ist es logischer, eine E-Mail mit Ideen, was man zum 8. März schenken kann, an ein männliches Publikum zu senden und nicht an ein weibliches), welche E-Mails er zuvor erhalten hat und wie er mit ihnen interagiert hat.

Alle diese komplexen Regeln (Geschäftslogik) können als Abfolge von Prüfungen und Vergleichen dargestellt werden, deren Ausführung uns zur Antwort «Ja» oder «Nein» führt — dem bereits erwähnten Booleschen Wert true / false.

In unserem System sind solche Ausdrücke an mehreren Stellen verfügbar und können einen unterschiedlichen Satz von Variablen haben, auf die innerhalb des Ausdrucks zugegriffen werden kann.

Grundlegende Syntax

Innerhalb eines Ausdrucks können verschiedene Datentypen verwendet werden:

  • 10 — Ganzzahl
  • 3.14 — Dezimalzahl
  • true — Boolescher Wert true
  • false — Boolescher Wert false
  • null — spezieller Wert null
  • "Hello" — Zeichenkette
  • subscriber.id — Zugriff auf eine Eigenschaft des Objekts
  • "World" — eine weitere Möglichkeit, eine Zeichenkette zu schreiben
  • ["new", "paid", "shipped"] — Array von Zeichenketten

Vergleichsoperatoren

  • == — gleich
  • != — ungleich
  • < — kleiner
  • <= — kleiner oder gleich
  • > — größer
  • >= — größer oder gleich

Mathematische Operatoren

  • + — Addition
  • - — Subtraktion
  • * — Multiplikation
  • / — Division

Logische Operatoren

  • and — logisches UND
  • or — logisches ODER
  • not — logische Negation

Außerdem können runde Klammern verwendet werden, um die Ausführungspriorität zu ändern, wie es üblicherweise in mathematischen Formeln geschieht: Das, was in Klammern steht, wird zuerst ausgeführt.

Einige Beispiele

subscriber.address_country in ["UA", "PL", "NL"] — gibt true nur in dem Fall zurück, wenn das Land des Abonnenten eines der angegebenen ist.

(subscriber.birthday_month == now.format("M")) and (now.format("Y") - subscriber.birthday_year == 18) — der Abonnent hat diesen Monat Geburtstag und wird 18 Jahre alt.

Verfügbare Variablen

Der Satz der verfügbaren Variablen hängt von der Stelle ab, an der der Ausdruck angewendet wird.

Variablen für die Eintrittsbedingung in eine Versandkampagne für Abonnenten aus der Basis:

time, subscriber, tags, now

Variablen für die Prüfung der Ausführung eines Ereignisses in einer Versandkampagne:

time, subscriber, tags, now, url (nur für das Ereignis des Klicks auf einen Link), url_md5 (nur für das Ereignis des Klicks auf einen Link)

Beschreibung der Variablen

  • time — Ganzzahl, aktuelle Zeit im Format Unix-Timestamp
  • subscriber — Objekt mit Daten über den Abonnenten, eine detaillierte Beschreibung der Felder finden Sie auf dieser Seite
  • tags — Array von Zeichenketten, das die Tags des Abonnenten enthält, zum Beispiel ["tag1", "tag2", "tag3"]
  • now — spezielles Objekt der aktuellen Zeit, das die Methode format hat. Zum Beispiel gibt now.format("Y") das aktuelle Jahr als Zeichenkette aus vier Zeichen zurück
  • url — HTTP-Link, auf den geklickt wurde
  • url_md5 — MD5-Zeichenkette, also der MD5-Wert für den Link, auf den geklickt wurde