Condições dos fluxos

Como escrever uma condição em um fluxo, quais dados ela pode olhar, exemplos prontos por segmento e como testá-la antes de ativar.

Atualizado:

Uma condição decide por qual ramo um fluxo segue. Escreve-se como uma frase curta que dá verdadeiro ou falso, por exemplo "o serviço custa mais de 100 e o cliente é VIP". Uma condição apenas olha dados: não altera nada.

Como se escreve

O quêExemplo
Comparar== (igual), !=, <, <=, >, >=
Combinar&& (e), || (ou), ! (não)
Texto"entrega" entre aspas
Está em uma lista"vip" in customer.tags
Contémservice.name.contains("Corte")
Se / entãoworkItem.priority == "urgent" ? now.hour < 22 : now.hour < 18
Um campocustomer.no_show_count, com ponto

Isso é toda a linguagem: não há laços nem funções próprias. As condições são validadas ao salvar o fluxo e de novo ao ativá-lo.

Quais dados ela pode olhar

ObjetoO que traz
triggerO evento que iniciou o fluxo. Com uma ação executada: action_key (a ação), from_stage, to_stage
workItemA tarefa: status, stage, priority, tags, party_size, start_at, due_at, age_minutes (minutos desde que foi criada), assigned (se tem responsável)
customername, locale (idioma), tags, no_show_count (ausências reais)
servicename, price_cents (o preço em centavos: 100,00 é 10000), deposit_cents, duration_min
resourcename, kind
nowA hora do seu negócio: hour, minute, weekday (0 = segunda ... 6 = domingo)
variablesValores calculados por um passo anterior

Por privacidade, uma condição não vê telefones, e-mails, documentos, endereços nem notas do cliente. Se o evento não traz uma tarefa, workItem, customer e service chegam vazios e a condição falha com uma mensagem clara, em vez de responder "falso" em silêncio.

Exemplos

VIP com um serviço caro: avisar o gerente

service.price_cents > 10000 && "vip" in customer.tags

"Não estava" antes das 18 h (gatilho: uma ação é executada)

trigger.action_key == "nao_estava" && now.hour < 18

Terceira ausência: pedir sinal na próxima vez

trigger.action_key == "ausencia" && customer.no_show_count >= 3

Tarefa sem responsável há mais de 2 horas (depois de um passo Esperar de 2 h)

!workItem.assigned && workItem.age_minutes > 120

Fora do horário comercial (sábado, domingo ou fora das 9 às 18)

now.weekday >= 5 || now.hour < 9 || now.hour >= 18

Tarefa urgente

workItem.priority == "urgent" || "urgente" in workItem.tags

Cliente que fala português

customer.locale == "pt"

Sinal pendente há mais de uma hora

workItem.stage == "aguardando_sinal" && workItem.age_minutes >= 60

Serviço longo de corte

service.name.contains("Corte") && service.duration_min >= 45

As chaves de ação e de etapa (ausencia, nao_estava, aguardando_sinal) são as do modelo do seu segmento. Se você mudou os nomes, use os seus.

Testar uma condição

No detalhe de um fluxo, toque em Testar esta condição (ou Testar condição):

  1. Escreva a condição.
  2. Escolha uma tarefa real do seu projeto com o buscador.
  3. Se ela olha trigger.action_key, escreva a chave da ação em Simular a ação.
  4. Toque em Testar.

Ele mostra Verdadeiro ou Falso e, abaixo, O que a condição viu: exatamente os dados com os quais decidiu. Nada é executado.

Erros comuns

Ao salvar, a mensagem diz qual passo falhou e por quê:

ProblemaO que significa
O campo não existeVocê usou um dado que não está disponível (por exemplo, customer.email)
Tipos que não combinamComparou texto com número (customer.name > 5)
Não dá verdadeiro ou falsoA condição precisa ser uma pergunta de sim ou não
Função não permitidaSó existe contains
Objeto desconhecidoSó dá para usar os objetos da tabela acima
Longa ou custosa demaisDivida em duas condições com outro passo no meio

Uma condição aceita até 1024 caracteres e é avaliada em uma fração de segundo.