Entradas do Workflow
- O que são entradas de workflow e quais variáveis cada tipo de trigger expõe
- Como referenciar essas variáveis com expressões CEL nas etapas
- Como definir entradas personalizadas para workflows manuais
Entradas do workflow são os valores que transportam dados do evento trigger para as etapas do seu workflow. Você os lê dentro das etapas com expressões CEL (Common Expression Language), de modo que cada etapa se adapta aos dados específicos de cada execução em vez de usar valores fixos.
Como funcionam os campos CEL
Todo campo habilitado para CEL em uma etapa (texto, URL, body, filtro, condição e assim por diante) recebe um valor no formato de objeto {expr: "..."}. Quando o workflow executa, a expressão dentro de expr é avaliada contra o contexto de execução atual e substituída pelo resultado.
Por exemplo, o campo de texto de uma etapa de mensagem pode ser:
{"expr": "'Hello ' + contact.name + ', your appointment is confirmed for ' + format_datetime(occurrenceDate, 'YYYY-MM-DD')"}
Se contact.name for "Maria Silva" e occurrenceDate for 15 de março de 2025, a etapa envia:
"Hello Maria Silva, your appointment is confirmed for 2025-03-15."
Para campos com muito texto você também pode usar a função tpl(), que preenche placeholders de chave simples {key} a partir de um objeto de valores: tpl('Hello {name}', {name: contact.name}).
A sintaxe de chaves duplas {{ }} não se aplica aqui — ela existe somente nos templates de mensagem do WhatsApp.
Variáveis por tipo de trigger
As variáveis disponíveis para um workflow dependem do seu tipo de trigger. Estas estão sempre presentes:
| Variável | Descrição |
|---|---|
company | O objeto da empresa (companyName, _id, options, planId) |
step(N) | A saída da etapa N (indexada a partir de 0), ex.: step(0).data |
Um trigger hook (dispara ao criar/atualizar/excluir um documento) também expõe:
| Variável | Descrição |
|---|---|
doc | O documento sendo criado, atualizado ou excluído |
prev | O estado anterior do documento (apenas em atualização) |
op | A operação do ciclo de vida que disparou o hook, ex.: afterCreate, afterUpdate ou afterDelete (um de beforeSave/afterSave/beforeCreate/afterCreate/beforeUpdate/afterUpdate/beforeDelete/afterDelete) |
model | O modelo dynadata que disparou o hook (ex.: contacts, ct:events) |
Um trigger temporal (executa em um agendamento) expõe:
| Variável | Descrição |
|---|---|
occurrenceDate | A data/hora agendada para esta ocorrência |
Quando um workflow executa a partir de uma conversa com um agente, as variáveis do contexto do assistente também ficam acessíveis, incluindo contact (contact.name, contact.contactIdentification para o identificador do canal como um número de telefone ou nome de usuário, e contact.channelType para o canal) e contactMessage (contactMessage.body.text para o texto de uma mensagem recebida).
Usando entradas nas etapas
Ao configurar uma etapa na seção Etapas, defina cada campo CEL com um valor {expr: "..."} que referencie as variáveis acima. Você pode combinar texto estático com várias variáveis em uma única expressão:
{"expr": "'Dear ' + contact.name + ', you have an upcoming appointment on ' + format_datetime(occurrenceDate, 'DD/MM/YYYY') + '.'"}
Entradas personalizadas para workflows manuais
Quando um workflow usa um trigger manual, você pode definir campos de entrada personalizados na seção Parâmetros. O funcionário os preenche antes de executar o workflow — útil quando o workflow precisa de informações que nenhum evento automático fornece.
Cada parâmetro tem um nome, um tipo (string, number, boolean, datetime ou ref) e uma descrição opcional. O nome se torna uma variável CEL de nível superior: um parâmetro chamado report_date é referenciado como report_date (não parameters.report_date).
Por exemplo, defina um parâmetro report_date; o funcionário o insere ao clicar em Executar, e suas etapas o leem como:
{"expr": "report_date"}
O mesmo workflow então produz resultados diferentes dependendo do que o funcionário insere a cada vez.