Condições, desvios e atrasos
Faça um fluxo dividir-se com Se / senão e Desvio, faça-o esperar, procure registos, percorra listas e peça uma decisão
Última atualização em
Com os passos do grupo Lógica decide para que lado um fluxo segue e quando: o "se" e o "espere um pouco". Um exemplo: se a fatura continuar em aberto passada uma semana, crie uma tarefa. Estes passos comandam as ações que vêm a seguir. Só Pedir uma decisão cria algo por si, uma tarefa.
| Passo | O que faz | Saídas |
|---|---|---|
| Se / senão | Divide segundo condições | Sim, Não |
| Desvio | Escolhe um ramo segundo o valor de um campo | Uma por ramo e Predefinição |
| Atraso | Espera um tempo fixo ou até uma data | Seguinte |
| Aberto agora? | Verifica se está aberto neste momento | Aberto, Fechado |
| Aguardar até abrir | Espera até à próxima hora de abertura | Seguinte |
| Aguardar até fechar | Espera até à próxima hora de fecho | Seguinte |
| No máximo uma vez por período | Trava repetições | Continuar, Já executado |
| Procurar um registo | Obtém um registo pelo seu ID | Encontrada, Não encontrada |
| Para cada | Executa os passos seguintes por cada item de uma lista | Para cada, Concluído |
| Aguardar até | Espera até as condições se cumprirem | Cumprida, Tempo esgotado |
| Aguardar um evento | Espera até acontecer algo no Tillor | Recebido, Tempo esgotado, por vezes Eliminado |
| Pedir uma decisão | Deixa um colega escolher entre as suas opções | Uma por opção e Tempo esgotado |
Se / senão
Divide o fluxo em dois caminhos com base nos dados. É o mesmo princípio do filtro em Apenas quando do acionador, mas agora a meio do fluxo.
O passo tem duas saídas: Sim (as condições verificam-se) e Não (não se verificam).
- Adicione um passo Se / senão
- Em Condições, clique em Adicionar condição
- Escolha o campo com o botão Variável, ou escreva o caminho você mesmo, por exemplo
invoice.paymentStatus - Escolha a comparação (é, não é, contém, é maior que, é menor que, é um de, está vazio ou não está vazio) e preencha o valor
- Ligue a saída Sim e, se quiser, Não a um passo seguinte
Um passo Se / senão precisa de pelo menos uma condição. Caso contrário, o Tillor indica Adicione uma condição. Havendo várias condições, escolhe entre Todas têm de corresponder e Basta uma corresponder. As comparações funcionam como descrito em Apenas quando.
Não precisa de ligar as duas saídas. Se uma saída não leva a lado nenhum, a execução termina aí. Um fluxo que só faz algo em Sim está, por isso, perfeitamente bem.
Também pode usar campos de passos anteriores. Depois de um Pedido à API pode, por exemplo, verificar response.status ou response.data.paymentStatus.
Desvio
Escolha Desvio quando precisar de mais de dois caminhos. O passo olha para o valor de um campo e escolhe o ramo que lhe corresponde.
- Em Campo, escolha o campo que quer verificar, por exemplo
occupation.occupationType - Em Ramos, clique em Adicionar ramo. Preencha o Ramo (o nome que aparece na saída) e Igual a (o valor que o campo tem de ter)
- Repita para cada ramo
- Ligue cada saída a um passo seguinte
Cada ramo recebe uma saída própria por baixo do passo. Além disso, existe sempre uma saída Predefinição. É usada quando nenhum ramo serve.
- O campo tem de coincidir exatamente com o valor, incluindo maiúsculas e minúsculas
- Se mais de um ramo servir, ganha o primeiro da lista
- Um ramo sem valor em Igual a não conta
- Pode definir no máximo 8 ramos, mais Predefinição
- Se o campo estiver vazio ou não existir, o fluxo segue por Predefinição
Os valores de campos de escolha estão na notação do Tillor. Uma ocupação do tipo caravana de aluguer tem, por exemplo, o valor RENTAL_CARAVAN, uma fatura paga PAID.
A lista em Campo mostra os campos do evento e de passos anteriores. Os campos da resposta de um pedido à API só aparecem na lista quando o Tillor conhece um exemplo dessa resposta. Veja Usar uma resposta da API.
Atraso
Com Atraso faz o fluxo esperar antes de continuar. Usa-se para coisas como voltar a ver daqui a uma semana.
Em Aguardar escolhe uma de duas formas.
Um tempo fixo
Escolha Durante um tempo fixo e preencha em Duração uma quantidade e uma unidade: segundos, minutos, horas, dias ou semanas. Os segundos não são exatos. O fluxo pode continuar alguns segundos mais tarde.
Um atraso de 0 não faz nada, por isso o Tillor indica Um atraso de 0 não faz nada.
Até uma data
Escolha Até uma data quando o tempo de espera depende de uma data dos dados, como a data de vencimento de uma fatura ou a data final de uma reserva.
| Campo | O que preenche |
|---|---|
| Data | Um campo com uma data, por exemplo invoice.dueDate. A lista só mostra campos que são datas |
| Em relação a essa data | Antes ou Depois |
| Deslocamento | Quanto tempo antes ou depois dessa data, em minutos, horas, dias ou semanas. Com 0, o fluxo continua exatamente nessa data |
Exemplos:
- Data
invoice.dueDate, Depois, Deslocamento 1 dia: o fluxo continua um dia depois da data de vencimento - Data
reservation.checkIn, Antes, Deslocamento 2 dias: o fluxo continua dois dias antes da chegada
Se esse momento já estiver no passado, ou a data estiver vazia, o fluxo continua logo.
O que acontece durante a espera
- A execução recebe o estado A aguardar. No separador Execuções indica quando continua (Continua …). Esperas longas, como semanas, não são problema
- Depois do atraso, o Tillor lê os dados de novo, para que os passos seguintes vejam a situação atual. Veja abaixo
- Se puser a automação em pausa durante a espera, a execução para assim que o tempo de espera termina. Não continua e fica com o estado Cancelada. Se voltar a ativar a automação antes de o tempo de espera terminar, a execução continua normalmente
- Se eliminar a automação, as execuções em espera param
- Se alterar o fluxo enquanto uma execução espera, essa execução termina com o fluxo tal como era quando começou
Os dados são lidos de novo
Uma execução guarda os dados do momento do evento, mas lê de novo os registos que lhe pertencem antes de continuar. São o registo do evento (por exemplo a fatura) e os registos para que este aponta (por exemplo o cliente).
Um exemplo: uma automação envia um lembrete de uma fatura, espera 7 dias e depois verifica com Se / senão se invoice.paymentStatus não é PAID. Se a fatura tiver sido paga nessa semana, a condição vê a fatura paga e o fluxo segue por Não.
Há duas exceções:
- Se o registo já não existir, por exemplo porque uma ocupação foi eliminada, a execução mantém a cópia do momento do evento
- Os dados que um passo anterior produziu, como a resposta de um pedido à API, não são obtidos de novo. Se quiser esses dados atualizados depois de um atraso, faça um novo pedido à API
Num teste nada é lido de novo
Uma execução de teste salta os atrasos e trabalha com os dados de exemplo que preencher. O que acontece depois de um atraso verdadeiro só vê numa execução verdadeira.
Aberto agora?
Verifica se a sua organização está aberta neste momento e divide o fluxo em Aberto e Fechado. Não há nada a configurar. O Tillor usa o horário em Definições > Horário de funcionamento, com períodos sazonais, feriados e exceções. Veja Definições da organização.
Use-o, por exemplo, para enviar um texto diferente fora do horário ou criar uma tarefa. Se preferir esperar até voltar a abrir, use Aguardar até abrir. Se quiser esperar até fechar, use Aguardar até fechar.
Aguardar até abrir
Faz o fluxo pausar até à próxima hora de abertura e continua depois. A sua organização já está aberta? Então o fluxo continua logo. Não há nada a configurar.
- A hora de abertura vem de Definições > Horário de funcionamento, no fuso horário da sua organização
- Se no próximo mês não houver nenhuma hora de abertura, o fluxo continua logo em vez de ficar à espera
- Durante a espera, a execução recebe o estado A aguardar. O que acontece aí está em Atraso
Aguardar até fechar
Faz o fluxo pausar até à próxima hora de fecho e continua depois. A sua organização já está fechada? Então o fluxo continua logo. Não há nada a configurar.
- A hora de fecho vem de Definições > Horário de funcionamento, no fuso horário da sua organização
- Blocos que se seguem diretamente, como 9:00–12:00 e 12:00–17:00, contam como um só. O fluxo espera até ao fim desse bloco
- Durante a espera, a execução recebe o estado A aguardar. O que acontece aí está em Atraso
No máximo uma vez por período
Só deixa o fluxo passar se ele ainda não tiver passado por este passo para o mesmo registo dentro do período. Assim não envia ao cliente o mesmo lembrete todos os dias.
| Campo | O que preenche |
|---|---|
| Período | Durante quanto tempo contam as execuções anteriores, em minutos, horas, dias ou semanas. Por predefinição, 1 dia |
| Por | O que se conta. Vazio significa por registo com que o fluxo começou, como a fatura ou a reserva. Preencha uma variável, por exemplo {customer.id}, para contar por cliente ou por parcela |
O passo tem duas saídas: Continuar se o fluxo ainda não passou por aqui no período, e Já executado se já passou. Ligue Já executado a outro passo, ou deixe-a vazia para que a execução termine aí.
Tenha em conta:
- Só contam as execuções da mesma automação, e só se passaram por este passo através de Continuar
- Se não ligar Eliminado a nada, o Tillor para os fluxos em espera desse registo e elimina as tarefas que o fluxo criou e que só o fluxo podia concluir. Se ligar a saída, o fluxo continua aí
- Se o fluxo começar sem registo, por exemplo com Todos os dias a uma hora, preencha você mesmo uma variável em Por. Sem esse valor, cada execução é nova e o passo não trava nada
- A execução que está a decorrer não conta para si própria
Um exemplo: Período 7 dias e Por {invoice.customerId} deixa passar, por cliente, no máximo um lembrete por semana, mesmo que esse cliente tenha várias faturas vencidas.
Procurar um registo
Carrega um registo com base no seu ID, para que os passos seguintes possam usar os seus campos. É útil quando o evento só traz um ID, como a mensagem numa conversa da caixa de entrada.
| Campo | O que preenche |
|---|---|
| Tipo de registo | Cliente, Reserva, Ocupação, Fatura, Pagamento, Parcela, Tarefa, Documento, Meio de acesso, Etiqueta NFC, Contador, Conversa da caixa de entrada ou Mensagem da caixa de entrada. Por predefinição, Mensagem da caixa de entrada |
| ID | O ID do registo, por exemplo {messageId}. Obrigatório |
O passo tem duas saídas: Encontrada e Não encontrada. Se o registo não existir ou o ID estiver vazio, o fluxo segue por Não encontrada.
Depois de Encontrada, os campos do registo ficam em variáveis que começam por found e depois o tipo: {foundCustomer.firstName}, {foundInvoice.displayId}, {foundReservation.checkIn}, {foundTerrain.name}, {foundInboxMessage.direction}. Os outros tipos chamam-se foundOccupation, foundPayment, foundTask, foundAccessMethod, foundNfcTag, foundMeter e foundInboxThread. Também ficam disponíveis os registos para que este aponta, um nível abaixo, como {foundReservation.customer.firstName}. Tudo está na lista atrás do botão Variável.
Uma segunda pesquisa do mesmo tipo substitui a primeira. Atenção em Tarefa: usa o mesmo nome foundTask que Procurar tarefa, e ganha a última das duas. O mesmo vale para Documento e foundDocument de Procurar documento.
Mapear variáveis
Copia valores para novos nomes de variáveis, para que os passos seguintes possam usar uma única forma. É útil quando um fluxo começa por Webhook recebido ({body.…}) e por Fatura vencida ({invoice.…}).
| Campo | O que preenche |
|---|---|
| Mapeamentos | Linhas com Variável de destino (por ex. invoice) e Origem (por ex. {foundInvoice} ou {body.invoiceId}) |
O passo tem uma saída: Seguinte. Se a origem for exatamente uma variável entre chavetas, por exemplo {foundInvoice}, o Tillor copia o registo inteiro (objeto). Caso contrário, o Tillor preenche a origem como texto, como Fatura {foundInvoice.displayId} em meta.label.
Teste de webhook típico: Webhook recebido → Procurar um registo (Fatura, ID {body.invoiceId}) → Mapear variáveis (invoice ← {foundInvoice}) → as mesmas condições e aprovação que no acionador de agenda.
Executar código
Executa um pedaço de TypeScript sobre as variáveis do fluxo e guarda o que devolve como nova variável. Serve para lógica que não cabe em campos e condições: que subtarefas têm de surgir, calcular um montante ou uma data, transformar o corpo de um webhook.
| Campo | O que preenche |
|---|---|
| Código | TypeScript. As variáveis escrevem-se como nos textos, com chavetas: {customer.firstName} é lida como valor, não preenchida como texto. Termine com return. Obrigatório |
| Variável de saída | O nome com que os passos seguintes leem o resultado, como result (depois {result}) ou result.names. Por predefinição, result |
O passo tem uma saída: Seguinte. Funciona assim:
- O código só vê as variáveis que menciona. Uma variável que o fluxo não tem é
null; uma data chega como texto (2026-07-01T10:00:00.000Z) - Formatações e deslocamentos de datas (
{bedrag|currency},{datum + 1 day}) não funcionam aqui: calcule-os no código - Devolva uma lista, texto, número ou objeto. Um objeto lê-se depois campo a campo:
{result.total} - O código não pode obter nem enviar nada: sem internet, sem base de dados. Só calcula. Se calcular durante demasiado tempo (mais de 50 ms), é interrompido
- Se o código lançar um erro, a execução pára com esse erro e o número da linha. Vê-los no separador Execuções
- À direita do código vê logo o que devolve no exemplo; ao testar, corre também
Um exemplo: após a partida quer subtarefas que dependem da parcela. Coloque um passo Executar código com:
const tasks = ["Plaats vegen", "Sanitair"];
if ({occupation.terrain.metadata.gasMeterNumber}) tasks.push("Gasmeterstand noteren");
return tasks;Depois, em Criar tarefa, preencha o campo Subtarefas só com {result}: cada texto da lista torna-se uma subtarefa.
Para cada
Executa os passos depois de Para cada uma vez por cada item de uma lista, por exemplo por cada fatura em aberto de um cliente. O próprio fluxo continua por Concluído.
| Campo | O que preenche |
|---|---|
| Lista | Métodos de acesso de um cliente, Etiquetas NFC de um cliente, Faturas em aberto de um cliente, Reservas confirmadas de um cliente, Ocupações de um cliente, Documentos de um cliente (só ativos) ou Contadores de uma parcela. Por predefinição, Métodos de acesso de um cliente |
| De | O cliente ou a parcela de que quer a lista, por exemplo {customer.id} ou {occupation.terrainId}. Obrigatório |
O passo tem duas saídas com significado próprio:
- Para cada leva aos passos que quer fazer por item
- Concluído é como o próprio fluxo continua
Funciona assim:
- Cada item recebe uma execução própria, que percorre os passos depois de Para cada até ao fim desse ramo. Vê-las no separador Execuções, que só mostra as últimas 20
- O item está na variável
item, por exemplo{item.id}. As variáveis do evento e de passos anteriores continuam disponíveis - O fluxo não espera que os itens terminem. Logo depois de eles começarem, continua por Concluído. Por isso não pode usar o resultado de um item nos passos depois de Concluído
- São processados no máximo 100 itens, os mais antigos primeiro. Se houver mais na lista, os restantes não são processados
- Se a lista estiver vazia ou o campo De estiver vazio, nada começa e o fluxo continua logo por Concluído
- Faturas em aberto de um cliente são faturas lançadas de que ainda há algo por pagar. Reservas confirmadas de um cliente são reservas com o estado Reservada
Um exemplo: uma fatura vence e quer criar uma ligação de pagamento para cada fatura em aberto desse cliente. Escolha Faturas em aberto de um cliente, preencha {invoice.customerId} em De e coloque depois de Para cada um passo Criar link de pagamento com {item.id} como fatura.
Aguardar até
Verifica condições uma e outra vez até se verificarem, ou pára ao fim de algum tempo. Use-o quando não sabe quando algo acontece mas sabe o que espera, por exemplo até uma fatura estar paga.
| Campo | O que preenche |
|---|---|
| Até | Uma ou mais condições, da mesma forma que em Se / senão |
| Verificar a cada | Com que frequência o Tillor volta a ver, em minutos, horas, dias ou semanas. No mínimo 5 minutos. Por predefinição, 1 hora |
| Deixar de aguardar após | Durante quanto tempo o passo espera no máximo. Por predefinição, 7 dias |
O passo tem duas saídas: Cumprida (as condições verificam-se) e Tempo esgotado (o tempo de espera terminou sem que se verificassem).
Tenha em conta:
- A primeira verificação é logo. Se as condições já se verificarem, o fluxo continua de imediato por Cumprida. Se não preencher nenhuma condição, verifica-se sempre
- Em cada verificação, o Tillor lê de novo os registos do evento, como num atraso. Uma condição como
invoice.paymentStatuséPAIDvê, por isso, o pagamento assim que ele existe - Um intervalo inferior a 5 minutos passa a 5 minutos
- Durante a espera, a execução recebe o estado A aguardar. Para pausar e alterar o fluxo vale o mesmo que em Atraso
Aguardar um evento
Faz o fluxo pausar até acontecer algo no Tillor, por exemplo a fatura ser paga.
| Campo | O que preenche |
|---|---|
| Evento | O que espera. A mesma lista que no acionador. Obrigatório |
| Apenas para o mesmo registo | Só continua se o evento disser respeito ao registo com que o fluxo começou. Ativo por predefinição |
| Deixar de aguardar após | Durante quanto tempo o passo espera no máximo. Por predefinição, 7 dias |
O passo tem duas saídas: Recebido (o evento chegou) e Tempo esgotado (o tempo de espera terminou sem evento). Se Apenas para o mesmo registo estiver ativo, surge uma terceira saída, Eliminado. Use-a quando o registo do fluxo foi eliminado enquanto o fluxo esperava.
Tenha em conta:
- Com Apenas para o mesmo registo ativo, conta, por exemplo, apenas o pagamento da fatura com que o fluxo começou. Se o desativar, qualquer evento desse tipo faz o fluxo continuar
- Se não ligar Eliminado a nada, o Tillor para os fluxos em espera desse registo e elimina as tarefas que o fluxo criou e que só o fluxo podia concluir. Se ligar a saída, o fluxo continua aí
- Se o fluxo começar sem registo, por exemplo com Todos os dias a uma hora, conta qualquer evento desse tipo
- Um evento que um passo de uma automação causa por si também conta. Os fluxos em espera continuam, portanto, também com trabalho de Fluxo de trabalho
- Depois de Recebido, os dados do evento que esperava estão nas variáveis, sem o colega que o causou. Se esperar por
invoice:paid, então{invoice.paymentStatus}dá o novo estado - Durante a espera, a execução recebe o estado A aguardar. Para pausar e alterar o fluxo vale o mesmo que em Atraso
Pedir uma decisão
Cria uma tarefa com botões que define você mesmo, e espera até alguém escolher um botão. Assim constrói um momento em que uma pessoa acompanha, por exemplo antes de o fluxo bloquear um cliente ou lançar uma fatura. Cada opção é um botão na tarefa e uma saída do passo.
| Campo | O que preenche |
|---|---|
| Título da tarefa | O título da tarefa. Obrigatório |
| Descrição | Diga ao seu colega o que é preciso decidir |
| Opções | Os botões da tarefa. Veja abaixo. Pelo menos uma |
| Atribuir a | Escolha um ou mais colegas |
| Atribuir a grupos | Escolha um ou mais grupos |
| Associar a | Os registos em que a tarefa aparece, como o cliente ou a fatura. Preenchido de antemão com os registos conhecidos neste passo |
| Deixar de aguardar após | Durante quanto tempo o passo espera no máximo. Por predefinição, 3 dias |
Definir opções
- Em Opções, clique em Adicionar opção e preencha o nome, por exemplo Aprovar. Esse nome aparece no botão e na saída
- Clique na caixa colorida à esquerda do nome (Ícone e cor) para escolher uma cor e um ícone. Um ícone não é obrigatório
- Ative Pedir uma nota se o colega tiver de indicar um motivo nesta escolha
- Ative Pedir confirmação se o colega tiver primeiro de confirmar. Preenche então um Título da confirmação e uma Mensagem de confirmação e escolhe em Gravidade entre Informação, Aviso ou Destrutivo. Nestes textos pode usar variáveis
- Repita para cada opção. Pode criar no máximo 8 opções
Se a lista ainda estiver vazia, o botão Aprovar / Rejeitar prepara logo duas opções: um Aprovar verde e um Rejeitar vermelho. Cada opção precisa de um nome, caso contrário o Tillor indica Cada opção precisa de um nome. Sem opções, o Tillor indica Adicione pelo menos uma opção.
Saídas
O passo tem uma saída por opção, com o nome e a cor dessa opção, mais sempre Tempo esgotado.
| Saída | Quando |
|---|---|
| O nome de uma opção | Alguém escolheu esse botão na tarefa |
| Tempo esgotado | O tempo de espera terminou sem escolha, ou a tarefa foi eliminada |
Tenha em conta:
- Os botões estão no cartão da tarefa, na lista de tarefas e na própria tarefa. Uma tarefa assim não tem visto: não pode simplesmente concluí-la, só escolher um botão. Depois da escolha, a tarefa fica em Concluída e indica que opção foi escolhida. Veja Tarefas com botões de escolha
- Pode escolher quem está atribuído à tarefa, também através de um grupo, e os administradores. Se não atribuir ninguém, qualquer pessoa que veja a tarefa pode escolher
- A tarefa recebe prioridade Alta. Está em nome de Fluxo de trabalho
- Se a tarefa for eliminada antes de alguém escolher, o fluxo continua por Tempo esgotado. Depois de Tempo esgotado pelo tempo de espera, a tarefa continua a existir
- Os passos seguintes podem usar
{approvalTask.id},{approval.decision},{approval.label},{approval.note}e{approval.decidedBy.name}.{approval.label}é o nome da opção escolhida e{approval.note}a nota que o colega preencheu - Durante a espera, a execução recebe o estado A aguardar. Para pausar e alterar o fluxo vale o mesmo que em Atraso
Num teste escolhe você a saída
Uma execução de teste não pode saber se está aberto, o que um colega decide e se um registo existe. Em O que acontece nestes passos? escolhe, por isso, você mesmo a saída de Aberto agora?, No máximo uma vez por período, Procurar um registo, Para cada, Aguardar até, Aguardar um evento e Pedir uma decisão. Em Para cada, o teste segue pela saída que escolher, Para cada ou Concluído, não pelas duas.
O que acontece depois?
- Uma saída que não ligar faz a execução terminar aí.
- Num passo de espera, a execução recebe o estado A aguardar e continua mais tarde. Uma automação em pausa pára as execuções em espera assim que o tempo de espera termina.
- Depois de um tempo de espera, o Tillor lê os dados de novo, para que os passos vejam a situação atual.