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ém | service.name.contains("Corte") |
| Se / então | workItem.priority == "urgent" ? now.hour < 22 : now.hour < 18 |
| Um campo | customer.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
| Objeto | O que traz |
|---|---|
trigger | O evento que iniciou o fluxo. Com uma ação executada: action_key (a ação), from_stage, to_stage |
workItem | A tarefa: status, stage, priority, tags, party_size, start_at, due_at, age_minutes (minutos desde que foi criada), assigned (se tem responsável) |
customer | name, locale (idioma), tags, no_show_count (ausências reais) |
service | name, price_cents (o preço em centavos: 100,00 é 10000), deposit_cents, duration_min |
resource | name, kind |
now | A hora do seu negócio: hour, minute, weekday (0 = segunda ... 6 = domingo) |
variables | Valores 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):
- Escreva a condição.
- Escolha uma tarefa real do seu projeto com o buscador.
- Se ela olha
trigger.action_key, escreva a chave da ação em Simular a ação. - 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ê:
| Problema | O que significa |
|---|---|
| O campo não existe | Você usou um dado que não está disponível (por exemplo, customer.email) |
| Tipos que não combinam | Comparou texto com número (customer.name > 5) |
| Não dá verdadeiro ou falso | A condição precisa ser uma pergunta de sim ou não |
| Função não permitida | Só existe contains |
| Objeto desconhecido | Só dá para usar os objetos da tabela acima |
| Longa ou custosa demais | Divida em duas condições com outro passo no meio |
Uma condição aceita até 1024 caracteres e é avaliada em uma fração de segundo.