Como trabalhar com Expressões (Expression)

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 inteiro
  • 3.14 — número fracionário
  • true — valor booleano true
  • false — valor booleano false
  • null — valor especial null
  • "Hello" — string
  • subscriber.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ógico
  • or — OU lógico
  • not — 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