Comment travailler avec les Expressions (Expression)

Qu'est-ce que les Expressions ?

Une expression a l'apparence d'une chaîne d'une certaine syntaxe. Elle sera «exécutée» sur le serveur dans un contexte concret, et le résultat de l'exécution sera l'une des deux valeurs booléennes : vrai ou faux (true / false).

De fait, une expression répond à la question : faut-il envoyer maintenant cet e-mail précis à cet abonné précis ?

Pour les e-mails déclencheurs, de telles questions sont en règle générale absentes — il faut toujours les envoyer. Mais pour les e-mails marketing, tout est plus complexe. La nécessité de l'envoi dépend des données que possède l'abonné (par exemple, un e-mail avec des idées de cadeaux pour le 8 mars est plus logique à envoyer à un public masculin, et non féminin), des e-mails qu'il a reçus auparavant et de la façon dont il a interagi avec eux.

Toutes ces règles complexes (logique métier) peuvent être présentées sous la forme d'une séquence de vérifications et de comparaisons, dont l'exécution nous mènera à la réponse «Oui» ou «Non» — la valeur booléenne déjà mentionnée true / false.

Dans notre système, de telles Expressions sont disponibles à plusieurs endroits et peuvent avoir un ensemble différent de variables auxquelles on peut accéder à l'intérieur de l'expression.

Syntaxe de base

À l'intérieur d'une expression, on peut utiliser différents types de données :

  • 10 — nombre entier
  • 3.14 — nombre décimal
  • true — valeur booléenne true
  • false — valeur booléenne false
  • null — valeur spéciale null
  • "Hello" — chaîne
  • subscriber.id — accès à une propriété de l'objet
  • "World" — une autre façon d'écrire une chaîne
  • ["new", "paid", "shipped"] — tableau de chaînes

Opérateurs de comparaison

  • == — égal à
  • != — différent de
  • < — inférieur à
  • <= — inférieur ou égal
  • > — supérieur à
  • >= — supérieur ou égal

Opérateurs mathématiques

  • + — addition
  • - — soustraction
  • * — multiplication
  • / — division

Opérateurs logiques

  • and — ET logique
  • or — OU logique
  • not — négation logique

On peut également utiliser des parenthèses pour modifier la priorité d'exécution, comme cela se produit habituellement dans les formules mathématiques : ce qui est entre parenthèses est exécuté en premier.

Quelques exemples

subscriber.address_country in ["UA", "PL", "NL"] — renverra true uniquement dans le cas où le pays de l'abonné est l'un de ceux indiqués.

(subscriber.birthday_month == now.format("M")) and (now.format("Y") - subscriber.birthday_year == 18) — l'abonné a son anniversaire ce mois-ci et il aura 18 ans.

Variables disponibles

L'ensemble des variables disponibles dépend de l'endroit où l'Expression est appliquée.

Variables pour la condition d'entrée dans la campagne d'envoi des abonnés depuis la base :

time, subscriber, tags, now

Variables pour la vérification de l'exécution d'un Événement dans la campagne d'envoi :

time, subscriber, tags, now, url (uniquement pour l'événement de clic sur un lien), url_md5 (uniquement pour l'événement de clic sur un lien)

Description des variables

  • time — nombre entier, heure actuelle au format Unix timestamp
  • subscriber — objet avec les données sur l'abonné, la description détaillée des champs est indiquée sur cette page
  • tags — tableau de chaînes qui contient les tags de l'abonné, par exemple ["tag1", "tag2", "tag3"]
  • now — objet spécial de l'heure actuelle, qui possède la méthode format. Par exemple, now.format("Y") renverra l'année actuelle sous la forme d'une chaîne de quatre caractères
  • url — lien HTTP sur lequel le clic a été effectué
  • url_md5 — chaîne MD5, c'est-à-dire la valeur MD5 du lien sur lequel le clic a été effectué