Jak pracować z Wyrażeniami (Expression)

Co to są Wyrażenia?

Wyrażenie wygląda jak ciąg o określonej składni. Zostanie «wykonane» na serwerze w konkretnym kontekście, a wynikiem wykonania stanie się jedna z dwóch wartości logicznych: prawda lub fałsz (true / false).

Faktycznie wyrażenie odpowiada na pytanie: czy należy teraz wysłać tę konkretną wiadomość temu konkretnemu subskrybentowi?

W przypadku wiadomości wyzwalanych takie pytania z reguły nie występują — zawsze trzeba je wysyłać. Natomiast w przypadku wiadomości marketingowych wszystko jest bardziej skomplikowane. Konieczność wysłania zależy od tego, jakie dokładnie dane ma subskrybent (na przykład wiadomość z pomysłami, co podarować na 8 marca, logiczniej jest wysyłać do męskiej publiczności, a nie do żeńskiej), jakie wiadomości otrzymywał wcześniej i jak z nimi wchodził w interakcję.

Wszystkie te złożone reguły (logikę biznesową) można przedstawić w postaci sekwencji sprawdzeń i porównań, których wykonanie doprowadzi nas do odpowiedzi «Tak» lub «Nie» — wspomnianej już wartości logicznej true / false.

W naszym systemie takie Wyrażenia są dostępne w kilku miejscach i mogą mieć różny zestaw zmiennych, do których można odwoływać się wewnątrz wyrażenia.

Podstawowa składnia

Wewnątrz wyrażenia można używać różnych typów danych:

  • 10 — liczba całkowita
  • 3.14 — liczba ułamkowa
  • true — wartość logiczna true
  • false — wartość logiczna false
  • null — wartość specjalna null
  • "Hello" — ciąg znaków
  • subscriber.id — dostęp do właściwości obiektu
  • "World" — jeszcze jeden sposób zapisu ciągu znaków
  • ["new", "paid", "shipped"] — tablica ciągów znaków

Operatory porównania

  • == — równa się
  • != — nie równa się
  • < — mniejsze
  • <= — mniejsze lub równe
  • > — większe
  • >= — większe lub równe

Operatory matematyczne

  • + — dodawanie
  • - — odejmowanie
  • * — mnożenie
  • / — dzielenie

Operatory logiczne

  • and — logiczne I
  • or — logiczne LUB
  • not — logiczna negacja

Można też używać nawiasów okrągłych do zmiany priorytetu wykonania, jak zwykle ma to miejsce w formułach matematycznych: to, co w nawiasach, wykonuje się wcześniej.

Kilka przykładów

subscriber.address_country in ["UA", "PL", "NL"] — zwróci true tylko w tym przypadku, jeśli kraj subskrybenta jest jednym z wymienionych.

(subscriber.birthday_month == now.format("M")) and (now.format("Y") - subscriber.birthday_year == 18) — subskrybent ma urodziny w tym miesiącu i kończy 18 lat.

Dostępne zmienne

Zestaw dostępnych zmiennych zależy od miejsca, w którym stosowane jest Wyrażenie.

Zmienne dla warunku wejścia subskrybentów z bazy do kampanii wysyłki:

time, subscriber, tags, now

Zmienne do sprawdzania wykonania Zdarzenia w kampanii wysyłki:

time, subscriber, tags, now, url (tylko dla zdarzenia kliknięcia w link), url_md5 (tylko dla zdarzenia kliknięcia w link)

Opis zmiennych

  • time — liczba całkowita, bieżący czas w formacie Unix timestamp
  • subscriber — obiekt z danymi o subskrybencie, szczegółowy opis pól podano na tej stronie
  • tags — tablica ciągów znaków zawierająca tagi subskrybenta, na przykład ["tag1", "tag2", "tag3"]
  • now — specjalny obiekt bieżącego czasu, który ma metodę format. Na przykład now.format("Y") zwróci bieżący rok w postaci ciągu czterech znaków
  • url — link HTTP, w który kliknięto
  • url_md5 — ciąg MD5, czyli wartość MD5 dla linku, w który kliknięto