O que são Expressões?
Uma expressão tem a aparência de uma string com uma determinada sintaxe. Ela será «executada» no servidor em um contexto específico, e o resultado da execução será um de dois valores booleanos: verdadeiro ou falso (true / false).
Na prática, a expressão responde à pergunta: é preciso enviar agora este e-mail específico a este assinante específico?
Para e-mails de gatilho, tais perguntas, via de regra, não existem — eles sempre precisam ser enviados. Já para e-mails de marketing tudo é mais complicado. A necessidade de envio depende de quais dados o assinante possui (por exemplo, um e-mail com ideias sobre o que presentear no 8 de março é mais lógico enviar ao público masculino, e não ao feminino), quais e-mails ele recebeu antes e como interagiu com eles.
Todas essas regras complexas (a lógica de negócios) podem ser apresentadas na forma de uma sequência de verificações e comparações, cuja execução nos levará à resposta «Sim» ou «Não» — o já mencionado valor booleano true / false.
No nosso sistema, tais Expressões estão disponíveis em vários lugares e podem ter um conjunto diferente de variáveis às quais é possível recorrer dentro da expressão.
Sintaxe básica
Dentro de uma expressão é possível usar diferentes tipos de dados:
10— número inteiro3.14— número fracionáriotrue— valor booleano truefalse— valor booleano falsenull— valor especial null"Hello"— stringsubscriber.id— acesso à propriedade de um objeto"World"— outra forma de escrever uma string["new", "paid", "shipped"]— array de strings
Operadores de comparação
==— igual!=— diferente<— menor<=— menor ou igual>— maior>=— maior ou igual
Operadores matemáticos
+— adição-— subtração*— multiplicação/— divisão
Operadores lógicos
and— E lógicoor— OU lógiconot— negação lógica
Também é possível usar parênteses para alterar a prioridade de execução, como normalmente acontece nas fórmulas matemáticas: o que está entre parênteses é executado antes.
Alguns exemplos
subscriber.address_country in ["UA", "PL", "NL"] — retornará true apenas no caso de o país do assinante ser um dos indicados.
(subscriber.birthday_month == now.format("M")) and (now.format("Y") - subscriber.birthday_year == 18) — o assinante faz aniversário este mês e completa 18 anos.
Variáveis disponíveis
O conjunto de variáveis disponíveis depende do local onde a Expressão é aplicada.
Variáveis para a condição de entrada na campanha de envios de assinantes de uma base:
time, subscriber, tags, now
Variáveis para a verificação do cumprimento de um Evento na campanha de envios:
time, subscriber, tags, now, url (apenas para o evento de clique em um link), url_md5 (apenas para o evento de clique em um link)
Descrição das variáveis
- time — número inteiro, hora atual no formato Unix timestamp
- subscriber — objeto com dados sobre o assinante, a descrição detalhada dos campos está indicada nesta página
- tags — array de strings que contém as tags do assinante, por exemplo
["tag1", "tag2", "tag3"] - now — objeto especial de hora atual, que tem o método
format. Por exemplo,now.format("Y")retornará o ano atual na forma de uma string de quatro caracteres - url — link HTTP pelo qual foi feito o clique
- url_md5 — string MD5, ou seja, o valor MD5 do link pelo qual foi feito o clique