Jak pracovat s Výrazy (Expression)

Co jsou Výrazy?

Výraz vypadá jako řetězec určité syntaxe. Bude «vykonán» na serveru v konkrétním kontextu a výsledkem vykonání bude jedna ze dvou booleovských hodnot: pravda nebo nepravda (true / false).

Fakticky výraz odpovídá na otázku: je třeba právě teď odeslat tento konkrétní e-mail tomuto konkrétnímu odběrateli?

U triggerových e-mailů takové otázky zpravidla chybí — ty je vždy třeba odeslat. Ale u marketingových e-mailů je to složitější. Nutnost odeslání závisí na tom, jaké údaje odběratel má (například e-mail s nápady, co darovat k 8. březnu, je logičtější odeslat mužskému publiku a nikoli ženskému), jaké e-maily dříve dostával a jak s nimi interagoval.

Všechna tato složitá pravidla (obchodní logiku) lze podat v podobě posloupnosti kontrol a porovnání, jejichž vykonání nás přivede k odpovědi «Ano» nebo «Ne» — již zmíněné booleovské hodnotě true / false.

V našem systému jsou takové Výrazy dostupné na několika místech a mohou mít různou sadu proměnných, na které lze uvnitř výrazu odkazovat.

Základní syntaxe

Uvnitř výrazu lze používat různé datové typy:

  • 10 — celé číslo
  • 3.14 — desetinné číslo
  • true — booleovská hodnota true
  • false — booleovská hodnota false
  • null — speciální hodnota null
  • "Hello" — řetězec
  • subscriber.id — přístup k vlastnosti objektu
  • "World" — další způsob zápisu řetězce
  • ["new", "paid", "shipped"] — pole řetězců

Operátory porovnání

  • == — rovná se
  • != — nerovná se
  • < — menší než
  • <= — menší nebo rovno
  • > — větší než
  • >= — větší nebo rovno

Matematické operátory

  • + — sčítání
  • - — odčítání
  • * — násobení
  • / — dělení

Logické operátory

  • and — logické A
  • or — logické NEBO
  • not — logická negace

Rovněž lze používat kulaté závorky pro změnu priority vykonávání, jak k tomu obvykle dochází v matematických vzorcích: to, co je v závorkách, se vykoná dříve.

Několik příkladů

subscriber.address_country in ["UA", "PL", "NL"] — vrátí true pouze v tom případě, pokud je země odběratele jednou z uvedených.

(subscriber.birthday_month == now.format("M")) and (now.format("Y") - subscriber.birthday_year == 18) — odběratel má tento měsíc narozeniny a bude mu 18 let.

Dostupné proměnné

Sada dostupných proměnných závisí na místě, kde se Výraz používá.

Proměnné pro podmínku vstupu do kampaně rozesílky odběratelů z databáze:

time, subscriber, tags, now

Proměnné pro kontrolu splnění Události v kampani rozesílky:

time, subscriber, tags, now, url (pouze pro událost přechodu na odkaz), url_md5 (pouze pro událost přechodu na odkaz)

Popis proměnných

  • time — celé číslo, aktuální čas ve formátu Unix timestamp
  • subscriber — objekt s údaji o odběrateli, podrobný popis polí je uveden na této stránce
  • tags — pole řetězců obsahující tagy odběratele, například ["tag1", "tag2", "tag3"]
  • now — speciální objekt aktuálního času, který má metodu format. Například now.format("Y") vrátí aktuální rok v podobě řetězce ze čtyř znaků
  • url — HTTP odkaz, na který byl proveden přechod
  • url_md5 — MD5 řetězec, tedy hodnota MD5 pro odkaz, na který byl proveden přechod