Cum să lucrați cu Expresiile (Expression)

Ce sunt Expresiile?

O expresie arată ca un șir cu o anumită sintaxă. El va fi «executat» pe server într-un context concret, iar rezultatul execuției va deveni una din două valori booleene: adevărat sau fals (true / false).

De fapt, expresia răspunde la întrebarea: este necesar acum să se trimită acest e-mail concret acestui abonat concret?

Pentru e-mailurile de declanșare astfel de întrebări, de regulă, lipsesc — ele trebuie întotdeauna trimise. Iar pentru e-mailurile de marketing totul este mai complicat. Necesitatea trimiterii depinde de ce anume date are abonatul (de exemplu, un e-mail cu idei ce să dăruiești de 8 martie este mai logic să fie trimis publicului masculin, și nu celui feminin), ce e-mailuri a primit anterior și cum a interacționat cu ele.

Toate aceste reguli complexe (logica de afaceri) pot fi prezentate sub forma unei secvențe de verificări și comparații, a căror execuție ne va conduce la răspunsul «Da» sau «Nu» — deja menționata valoare booleană true / false.

În sistemul nostru astfel de Expresii sunt disponibile în mai multe locuri și pot avea un set diferit de variabile la care se poate apela înăuntrul expresiei.

Sintaxa de bază

Înăuntrul unei expresii se pot folosi diferite tipuri de date:

  • 10 — număr întreg
  • 3.14 — număr fracționar
  • true — valoare booleană true
  • false — valoare booleană false
  • null — valoare specială null
  • "Hello" — șir
  • subscriber.id — accesul la proprietatea unui obiect
  • "World" — un alt mod de a scrie un șir
  • ["new", "paid", "shipped"] — array de șiruri

Operatori de comparație

  • == — egal
  • != — diferit
  • < — mai mic
  • <= — mai mic sau egal
  • > — mai mare
  • >= — mai mare sau egal

Operatori matematici

  • + — adunare
  • - — scădere
  • * — înmulțire
  • / — împărțire

Operatori logici

  • and — ȘI logic
  • or — SAU logic
  • not — negație logică

De asemenea, se pot folosi paranteze rotunde pentru schimbarea priorității de execuție, așa cum se întâmplă de obicei în formulele matematice: ceea ce este în paranteze se execută mai întâi.

Câteva exemple

subscriber.address_country in ["UA", "PL", "NL"] — va returna true doar în cazul în care țara abonatului este una dintre cele indicate.

(subscriber.birthday_month == now.format("M")) and (now.format("Y") - subscriber.birthday_year == 18) — abonatul are ziua de naștere luna aceasta și împlinește 18 ani.

Variabile disponibile

Setul de variabile disponibile depinde de locul unde se aplică Expresia.

Variabile pentru condiția de intrare în campania de marketing a abonaților dintr-o bază:

time, subscriber, tags, now

Variabile pentru verificarea îndeplinirii unui Eveniment în campania de marketing:

time, subscriber, tags, now, url (doar pentru evenimentul de clic pe un link), url_md5 (doar pentru evenimentul de clic pe un link)

Descrierea variabilelor

  • time — număr întreg, ora curentă în formatul Unix timestamp
  • subscriber — obiect cu date despre abonat, descrierea detaliată a câmpurilor este indicată pe această pagină
  • tags — array de șiruri care conține etichetele abonatului, de exemplu ["tag1", "tag2", "tag3"]
  • now — obiect special de oră curentă, care are metoda format. De exemplu, now.format("Y") va returna anul curent sub forma unui șir din patru caractere
  • url — link HTTP pe care s-a făcut clicul
  • url_md5 — șir MD5, adică valoarea MD5 a linkului pe care s-a făcut clicul