Pular para o conteúdo principal
Você está vendo a documentação para desenvolvedores
Esta documentação é para desenvolvedores que trabalham com a plataforma para desenvolvedores Base44. Para informações sobre automations no editor de apps, veja Criando automations para seu app.
As Automations permitem que funções de backend sejam executadas automaticamente em um cronograma, em resposta a eventos do banco de dados ou quando uma integração conectada envia um evento de webhook. Use as automations para processar dados em intervalos regulares, lidar com mudanças de entidade, reagir a eventos de serviços externos ou executar tarefas únicas em horários específicos. Cada função de backend pode ter múltiplas automations anexadas, configuradas no arquivo function.jsonc da função. Se você só tem um arquivo entry.ts ou entry.js, precisará adicionar este arquivo de configuração para usar automations. Automations são implantadas atomicamente com o código da função quando você executa deploy ou functions deploy.

Tipos de automation

A Base44 suporta 4 tipos de automations:

Campos comuns

Campos comuns para todas as automations

Todos os tipos de automation compartilham os seguintes campos:
CampoTipoObrigatórioDescrição
typestringSimO tipo de automation. Valores possíveis: "scheduled", "entity" ou "connector".
namestringSimIdentificador único da automation.
descriptionstringNãoDescrição legível.
function_argsobjectNãoArgumentos passados à função quando disparada. Veja Argumentos de função.
is_activebooleanNãoSe a automation está habilitada. O padrão é true.

Campos comuns para automations agendadas

Tanto automations agendadas com cron quanto com cronograma simples compartilham estes campos adicionais:
CampoTipoObrigatórioDescrição
schedule_modestringSimSe o cronograma se repete. Valores possíveis: "recurring" ou "one-time".
schedule_typestringSimMétodo de agendamento a usar. Valores possíveis: "cron" ou "simple".
ends_typestringNãoQuando o cronograma recorrente deve parar. Valores possíveis: "never", "on" ou "after". O padrão é "never".
ends_on_datestringCondicionalData em que o cronograma recorrente termina, inclusiva, em UTC. Obrigatório quando ends_type é "on". Formato: YYYY-MM-DDTHH:MM:SSZ. Por exemplo, "2026-12-31T23:59:59Z".
ends_after_countnumberCondicionalNúmero de execuções após o qual o cronograma recorrente para. Obrigatório quando ends_type é "after".

Configuração de automation

Configure automations no seu arquivo function.jsonc usando uma das abordagens a seguir. Todas as automations usam os campos comuns para todas as automations listados acima, mais os campos específicos de cada tipo.

Cron

Use os campos comuns para todas as automations e os campos comuns para automations agendadas junto com os campos específicos de cron listados aqui. Defina type como "scheduled" e schedule_type como "cron" para usar expressões cron para controle preciso de agendamento. Automations cron usam a sintaxe padrão de 5 campos: minute hour day-of-month month day-of-week. Veja crontab.guru para um editor interativo e referência de sintaxe de expressões cron.
CampoTipoObrigatórioDescrição
cron_expressionstringSimExpressão cron de 5 campos.

Exemplo de cron

Este exemplo executa uma função todos os dias à meia-noite UTC:
{
  "name": "sendDailyReport",
  "entry": "entry.ts",
  "automations": [
    {
      "type": "scheduled",
      "name": "daily_midnight_report",
      "description": "Runs every day at midnight UTC",
      "function_args": { "mode": "full_sync" },
      "is_active": true,

      "schedule_mode": "recurring",
      "schedule_type": "cron",
      "cron_expression": "0 0 * * ?"
    }
  ]
}

Cronograma simples

Use os campos comuns para todas as automations e os campos comuns para automations agendadas junto com os campos de cronograma simples listados aqui. Defina type como "scheduled" e schedule_type como "simple" para necessidades de agendamento mais simples. Configure tarefas recorrentes por intervalo como minutos, horas, dias, semanas ou meses sem escrever expressões cron.
CampoTipoObrigatórioDescrição
one_time_datestringCondicionalData e hora em que a automation é executada uma vez, em UTC. Obrigatório quando schedule_mode é "one-time". Formato: YYYY-MM-DDTHH:MM:SSZ. Por exemplo, "2026-02-15T10:00:00Z".
repeat_unitstringCondicionalUnidade de tempo para automations recorrentes. Obrigatório quando schedule_mode é "recurring". Valores possíveis: "minutes", "hours", "days", "weeks" ou "months".
repeat_intervalnumberCondicionalIntervalo entre execuções. Obrigatório quando repeat_unit é "minutes", "hours" ou "days".
start_timestringCondicionalHora do dia em que a automation é executada, em UTC. Obrigatório quando repeat_unit é "days", "weeks" ou "months". Formato: HH:MM.
repeat_on_daysnumber[]CondicionalDias da semana em que a automation é executada. Obrigatório quando repeat_unit é "weeks". Array de números de dia da semana, onde 0 é domingo e 6 é sábado.
repeat_on_day_of_monthnumberCondicionalDia do mês em que a automation é executada. Obrigatório quando repeat_unit é "months". Valores válidos: 1-31.

Exemplos de cronograma simples

Os exemplos a seguir mostram diferentes maneiras de agendar automations com cronogramas simples:
{
  "type": "scheduled",
  "name": "every_30_minutes",
  "description": "Runs every 30 minutes.",
  "is_active": true,

  "schedule_mode": "recurring",
  "schedule_type": "simple",
  "repeat_unit": "minutes",
  "repeat_interval": 30
}

Eventos de entidade

Use os campos comuns para todas as automations junto com os campos de evento de entidade listados aqui. Defina type como "entity" para disparar funções automaticamente quando registros do banco de dados são criados, atualizados ou excluídos. Automations de entidade podem escutar 1 ou mais tipos de evento em uma entidade específica.
CampoTipoObrigatórioDescrição
entity_namestringSimNome da entidade a monitorar.
event_typesstring[]SimEventos do banco de dados a escutar. Valores possíveis: "create", "update", "delete". Pelo menos 1 obrigatório.

Exemplos de eventos de entidade

Os exemplos a seguir mostram como disparar funções com base em eventos de entidade:
{
  "name": "processOrders",
  "entry": "entry.ts",
  "automations": [
    {
      "type": "entity",
      "name": "on_order_changes",
      "description": "Triggered on order create, update, or delete.",
      "function_args": { "notify_slack": true },
      "is_active": true,

      "entity_name": "orders",
      "event_types": ["create", "update", "delete"]
    }
  ]
}

Connector automations

Use os campos comuns para todas as automations junto com os campos específicos de conector listados aqui. Defina type como "connector" para disparar funções quando uma integração conectada envia um evento de webhook. Use estes para reagir à atividade de serviços externos em tempo real. Por exemplo, você pode analisar um novo e-mail, sincronizar uma mudança de calendário ou responder a uma atualização de arquivo no Google Drive. Você pode opcionalmente adicionar condições de gatilho para filtrar eventos para que sua função só rode quando o payload corresponder a regras que você define. Quando uma connector automation dispara, sua função recebe um payload de webhook estruturado contendo o tipo de evento, detalhes da integração e os dados brutos do serviço externo.
O conector deve estar configurado no seu projeto e autorizado antes do deploy. Veja Conectores compartilhados para instruções de configuração.
CampoTipoObrigatórioDescrição
integration_typestringSimO identificador do tipo de conector para escutar. Veja integrações suportadas para valores aceitos.
eventsstring[]SimUm ou mais nomes de evento de webhook para assinar. Veja integrações suportadas para eventos disponíveis por conector.
resource_idstringCondicionalRestringe a automation a um recurso específico. O formato esperado depende do conector. Veja Formatos de Resource ID abaixo. Obrigatório para eventos de Google Drive com escopo de arquivo. Opcional para outros conectores.
trigger_conditionsobjectNãoRegras que devem corresponder ao evento recebido antes que sua função seja executada. Se o evento não corresponder, a execução é pulada. Veja Condições de gatilho para a referência completa.

Integrações e eventos suportados

Conectorintegration_typeValor de eventsDescrição
GmailgmailmailboxQualquer mudança na caixa de e-mail, incluindo novas mensagens, atualizações de label e mudanças de status de leitura.
Google CalendargooglecalendareventsQualquer mudança em evento de calendário, incluindo criado, atualizado e excluído.
Google DrivegoogledrivechangesQualquer mudança no drive, incluindo arquivos adicionados, modificados ou excluídos.
Google DrivegoogledrivefileQualquer mudança em um arquivo específico (requer resource_id).
Google Drivegoogledrivefile.updateConteúdo ou propriedades do arquivo mudaram (requer resource_id).
Google Drivegoogledrivefile.trashArquivo movido para a lixeira (requer resource_id).
Google Drivegoogledrivefile.untrashArquivo restaurado da lixeira (requer resource_id).
Google Drivegoogledrivefile.deleteArquivo excluído permanentemente (requer resource_id).
Microsoft OneDriveone_driveupdatedQualquer mudança em arquivo ou pasta, incluindo criado, modificado e excluído.
Microsoft OutlookoutlookcreatedUm novo e-mail, evento de calendário ou contato é criado.
Microsoft OutlookoutlookupdatedUm e-mail, evento de calendário ou contato é atualizado.
Microsoft OutlookoutlookdeletedUm e-mail, evento de calendário ou contato é excluído.
Microsoft SharePointshare_pointupdatedQuando um item de lista ou documento é criado, modificado ou excluído.
Microsoft Teamsmicrosoft_teamscreatedQuando uma nova mensagem de chat é postada.
Microsoft Teamsmicrosoft_teamsupdatedQuando uma mensagem de chat é atualizada.
Microsoft Teamsmicrosoft_teamsdeletedQuando uma mensagem de chat é excluída.
SlackslackmessageQuando uma mensagem é postada em um canal.
Slackslackmessage.imQuando uma mensagem direta é postada.
Slackslackmessage.groupsQuando uma mensagem é postada em um canal privado.
Slackslackmessage.channelsQuando uma mensagem é postada em um canal público.
Slackslackmessage.mpimQuando uma mensagem é postada em um IM multipartido.
Slackslackreaction_addedQuando uma reação é adicionada a uma mensagem.
Slackslackreaction_removedQuando uma reação é removida de uma mensagem.
Slackslackmember_joined_channelQuando um usuário entra em um canal.
Slackslackmember_left_channelQuando um usuário sai de um canal.
Slackslackfile_sharedQuando um arquivo é compartilhado.
O evento mailbox do Gmail dispara para qualquer mudança na caixa de e-mail, não apenas novas mensagens. Para executar sua função somente quando novos e-mails chegarem, adicione uma condição de gatilho: { "field": "has_new_messages", "operator": "equals", "value": true }.
Connector automations do Slack exigem condições de gatilho. O deploy falhará se nenhuma condição for definida para connector automations do Slack.

Formatos de Resource ID

O valor esperado para resource_id varia por conector:
  • Google Drive: O ID do arquivo. Obrigatório para eventos com escopo de arquivo (file, file.update, file.trash, file.untrash, file.delete).
  • Gmail: Uma lista separada por vírgulas de IDs de label para observar. Padrão é "INBOX" se omitido.
  • Microsoft Teams: {teamId}/{channelId} para observar um canal específico, ou {chatId} para observar um chat específico.
  • SharePoint: {siteId}/{listId} para observar uma lista específica.

Condições de gatilho

Use trigger_conditions para filtrar eventos de webhook para que sua função só rode quando o payload corresponder a regras que você define. Se nenhuma condição for definida, a função roda para cada evento recebido. Veja Exemplos de connector automation para configurações completas.
logic
string
Como combinar as condições. Valores possíveis: "and" (todas devem corresponder), "or" (qualquer deve corresponder). O padrão é "and".
conditions
array
obrigatório
Um ou mais objetos de condição ou grupos de condição aninhados. Máximo de 20 condições folha e 5 níveis de aninhamento.

Payload do webhook

Quando uma connector automation dispara sua função, o corpo da requisição contém um objeto payload com a seguinte estrutura. Veja Exemplos de connector automation para uma função que lê o payload.
CampoTipoDescrição
payload.automation.idstringID da automation que disparou esta execução.
payload.automation.namestringNome da automation.
payload.automation.typestringSempre "connector".
payload.event.typestringO nome do evento do webhook. Por exemplo, "mailbox", "events" ou "changes".
payload.event.integration_typestringO tipo de conector. Por exemplo, "gmail" ou "googlecalendar".
payload.event.provider_identifierstringO identificador da conta do provedor usado para roteamento.
payload.dataobjectO payload bruto do webhook do serviço externo. Definido como null quando payload_too_large é true.
payload.payload_too_largebooleanÉ true quando o payload do webhook excedeu ~200 KB e data é null.

Exemplos de connector automation

// Triggers the function whenever a new email arrives in Gmail.

{
  "name": "processInboundEmails",
  "entry": "entry.ts",
  "automations": [
    {
      "type": "connector",
      "name": "on_new_gmail",
      "description": "Runs when a new email arrives in Gmail.",
      "is_active": true,

      "integration_type": "gmail",
      "events": ["mailbox"]
    }
  ]
}

Argumentos de função

Passe dados para sua função quando ela é disparada incluindo o campo function_args na sua configuração de automation. Isso é útil quando uma função lida com múltiplas automations com comportamentos diferentes, como uma função de sincronização que roda incrementalmente a cada 15 minutos, mas faz uma sincronização completa diariamente. Acesse esses argumentos no código da sua função através do corpo da requisição.

Exemplo de argumentos de função

Este exemplo mostra uma função que lida com modos de sincronização incremental e completa com base no config da automation:
Deno.serve(async (req) => {
  const body = await req.json();
  const args = body.args ?? {};

  // Use the arguments from automation config
  const mode = args.mode ?? "incremental";

  // Your function logic
});

Implante automations

Implante funções de backend com suas automations usando o comando da CLI functions deploy ou o comando unificado deploy. Você pode implantar funções específicas pelo nome com functions deploy <names...>. O deploy é atômico por função. Uma função só é considerada implantada se tanto o deploy do Deno quanto todas as suas automations forem bem-sucedidas. Se qualquer automation falhar ao implantar, todo o deploy da função é revertido. Após implantar, a CLI mostra o status por função: deployed, unchanged ou error.

Gerencie automations no dashboard

Qualquer mudança feita no dashboard será sobrescrita na próxima vez que você executar functions deploy. Não há sincronização bidirecional entre o dashboard e seus arquivos locais. Automations definidas nos seus arquivos function.jsonc locais são a fonte da verdade.Se você quiser fazer mudanças nas suas automations, atualize seus arquivos function.jsonc locais e faça redeploy. Use o dashboard para monitorar logs de execução e disparar automations manualmente quando necessário.
Veja e gerencie suas automations no dashboard da Base44 na aba Automations. No dashboard, você pode:
  • Ver logs e histórico de execução
  • Executar automations manualmente para testes
  • Monitorar o status das automations

Veja também

Esta página foi traduzida usando IA. Para informações mais precisas e atualizadas, consulte a versão em inglês.