İfadelerle (Expression) nasıl çalışılır

İfadeler nedir?

Bir ifade, belirli bir sözdizimine sahip bir dize gibi görünür. O, sunucuda belirli bir bağlamda «yürütülür» ve yürütmenin sonucu iki boolean değerden biri olur: doğru veya yanlış (true / false).

Aslında ifade şu soruyu yanıtlar: bu belirli e-postayı bu belirli aboneye şimdi göndermek gerekli mi?

Tetikleyici e-postalar için bu tür sorular kural olarak yoktur — onların her zaman gönderilmesi gerekir. Pazarlama e-postaları için ise her şey daha karmaşıktır. Gönderim gerekliliği, abonenin tam olarak hangi verilere sahip olduğuna (örneğin, 8 Mart'ta ne hediye edileceğine dair fikirler içeren bir e-postayı kadın kitleye değil, erkek kitleye göndermek daha mantıklıdır), daha önce hangi e-postaları aldığına ve onlarla nasıl etkileşimde bulunduğuna bağlıdır.

Tüm bu karmaşık kurallar (iş mantığı), yürütülmesi bizi «Evet» veya «Hayır» yanıtına — daha önce bahsedilen true / false boolean değerine — götürecek bir dizi kontrol ve karşılaştırma biçiminde sunulabilir.

Sistemimizde bu tür İfadeler birkaç yerde mevcuttur ve ifadenin içinde erişilebilen farklı bir değişken kümesine sahip olabilir.

Temel sözdizimi

Bir ifadenin içinde farklı veri türleri kullanılabilir:

  • 10 — tam sayı
  • 3.14 — ondalık sayı
  • true — boolean değer true
  • false — boolean değer false
  • null — özel değer null
  • "Hello" — dize
  • subscriber.id — bir nesnenin özelliğine erişim
  • "World" — bir dizeyi yazmanın başka bir yolu
  • ["new", "paid", "shipped"] — dize dizisi

Karşılaştırma operatörleri

  • == — eşittir
  • != — eşit değildir
  • < — küçüktür
  • <= — küçük veya eşittir
  • > — büyüktür
  • >= — büyük veya eşittir

Matematiksel operatörler

  • + — toplama
  • - — çıkarma
  • * — çarpma
  • / — bölme

Mantıksal operatörler

  • and — mantıksal VE
  • or — mantıksal VEYA
  • not — mantıksal olumsuzlama

Ayrıca, matematiksel formüllerde genellikle olduğu gibi, yürütme önceliğini değiştirmek için yuvarlak parantezler kullanılabilir: parantez içindekiler önce yürütülür.

Birkaç örnek

subscriber.address_country in ["UA", "PL", "NL"] — yalnızca abonenin ülkesi belirtilenlerden biriyse true döndürür.

(subscriber.birthday_month == now.format("M")) and (now.format("Y") - subscriber.birthday_year == 18) — abonenin doğum günü bu ayda ve 18 yaşına giriyor.

Mevcut değişkenler

Mevcut değişken kümesi, İfadenin uygulandığı yere bağlıdır.

Tabandaki abonelerin gönderim kampanyasına giriş koşulu için değişkenler:

time, subscriber, tags, now

Gönderim kampanyasında bir Olayın gerçekleşmesinin kontrolü için değişkenler:

time, subscriber, tags, now, url (yalnızca bir bağlantıya tıklama olayı için), url_md5 (yalnızca bir bağlantıya tıklama olayı için)

Değişkenlerin açıklaması

  • time — tam sayı, Unix timestamp formatında mevcut zaman
  • subscriber — abone hakkında veri içeren nesne, alanların ayrıntılı açıklaması bu sayfada belirtilmiştir
  • tags — abonenin etiketlerini içeren dize dizisi, örneğin ["tag1", "tag2", "tag3"]
  • nowformat metoduna sahip özel bir mevcut zaman nesnesi. Örneğin, now.format("Y") mevcut yılı dört karakterlik bir dize biçiminde döndürür
  • url — tıklamanın yapıldığı HTTP bağlantısı
  • url_md5 — MD5 dizesi, yani tıklamanın yapıldığı bağlantının MD5 değeri