Vai al contenuto principale
Stai visualizzando la documentazione per sviluppatori
Questa documentazione è per sviluppatori che lavorano con la piattaforma di sviluppo Base44. Per informazioni sulle automazioni nell’editor di app, consulta Creare automazioni per la tua app.
Le automazioni consentono alle funzioni backend di essere eseguite automaticamente in base a una pianificazione, in risposta a eventi del database o quando un’integrazione connessa invia un evento webhook. Usa le automazioni per elaborare dati a intervalli regolari, gestire modifiche alle entità, reagire a eventi di servizi esterni o eseguire attività una tantum in momenti specifici. Ogni funzione backend può avere più automazioni associate, configurate nel file function.jsonc della funzione. Se hai solo un file entry.ts o entry.js, dovrai aggiungere questo file di configurazione per usare le automazioni. Le automazioni vengono distribuite atomicamente con il codice della funzione quando esegui deploy o functions deploy.

Tipi di automazione

Base44 supporta 4 tipi di automazioni:

Campi comuni

Campi comuni per tutte le automazioni

Tutti i tipi di automazione condividono i seguenti campi:
CampoTipoRichiestoDescrizione
typestringIl tipo di automazione. Valori possibili: "scheduled", "entity" o "connector".
namestringIdentificatore univoco per l’automazione.
descriptionstringNoDescrizione leggibile.
function_argsobjectNoArgomenti passati alla funzione quando viene attivata. Consulta Argomenti della funzione.
is_activebooleanNoSe l’automazione è abilitata. Valore predefinito true.

Campi comuni per le automazioni pianificate

Sia le automazioni pianificate cron sia quelle semplici condividono questi campi aggiuntivi:
CampoTipoRichiestoDescrizione
schedule_modestringSe la pianificazione si ripete. Valori possibili: "recurring" o "one-time".
schedule_typestringMetodo di pianificazione da usare. Valori possibili: "cron" o "simple".
ends_typestringNoQuando la pianificazione ricorrente deve fermarsi. Valori possibili: "never", "on" o "after". Valore predefinito "never".
ends_on_datestringCondizionaleData in cui termina la pianificazione ricorrente, inclusiva, in UTC. Richiesto quando ends_type è "on". Formato: YYYY-MM-DDTHH:MM:SSZ. Ad esempio, "2026-12-31T23:59:59Z".
ends_after_countnumberCondizionaleNumero di esecuzioni dopo il quale la pianificazione ricorrente si ferma. Richiesto quando ends_type è "after".

Configurazione dell’automazione

Configura le automazioni nel tuo file function.jsonc usando uno degli approcci seguenti. Tutte le automazioni usano i campi comuni per tutte le automazioni elencati sopra, più i campi specifici di ciascun tipo.

Cron

Usa i campi comuni per tutte le automazioni e i campi comuni per le automazioni pianificate insieme ai campi specifici cron elencati qui. Imposta type su "scheduled" e schedule_type su "cron" per usare espressioni cron con un controllo preciso della pianificazione. Le automazioni cron usano la sintassi standard a 5 campi: minute hour day-of-month month day-of-week. Consulta crontab.guru per un editor interattivo di espressioni cron e un riferimento della sintassi.
CampoTipoRichiestoDescrizione
cron_expressionstringEspressione cron a 5 campi.

Esempio cron

Questo esempio esegue una funzione ogni giorno a mezzanotte 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 * * ?"
    }
  ]
}

Pianificazione semplice

Usa i campi comuni per tutte le automazioni e i campi comuni per le automazioni pianificate insieme ai campi di pianificazione semplice elencati qui. Imposta type su "scheduled" e schedule_type su "simple" per esigenze di pianificazione più immediate. Configura attività ricorrenti per intervallo come minuti, ore, giorni, settimane o mesi senza scrivere espressioni cron.
CampoTipoRichiestoDescrizione
one_time_datestringCondizionaleData e ora in cui l’automazione viene eseguita una sola volta, in UTC. Richiesto quando schedule_mode è "one-time". Formato: YYYY-MM-DDTHH:MM:SSZ. Ad esempio, "2026-02-15T10:00:00Z".
repeat_unitstringCondizionaleUnità di tempo per le automazioni ricorrenti. Richiesto quando schedule_mode è "recurring". Valori possibili: "minutes", "hours", "days", "weeks" o "months".
repeat_intervalnumberCondizionaleIntervallo tra le esecuzioni. Richiesto quando repeat_unit è "minutes", "hours" o "days".
start_timestringCondizionaleOra del giorno in cui viene eseguita l’automazione, in UTC. Richiesto quando repeat_unit è "days", "weeks" o "months". Formato: HH:MM.
repeat_on_daysnumber[]CondizionaleGiorni della settimana in cui viene eseguita l’automazione. Richiesto quando repeat_unit è "weeks". Array di numeri dei giorni della settimana, dove 0 è domenica e 6 è sabato.
repeat_on_day_of_monthnumberCondizionaleGiorno del mese in cui viene eseguita l’automazione. Richiesto quando repeat_unit è "months". Valori validi: 1-31.

Esempi di pianificazione semplice

I seguenti esempi mostrano diversi modi per pianificare automazioni con pianificazioni semplici:
{
  "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
}

Eventi delle entità

Usa i campi comuni per tutte le automazioni insieme ai campi degli eventi delle entità elencati qui. Imposta type su "entity" per attivare funzioni automaticamente quando i record del database vengono creati, aggiornati o eliminati. Le automazioni delle entità possono ascoltare 1 o più tipi di eventi su una specifica entità.
CampoTipoRichiestoDescrizione
entity_namestringNome dell’entità da monitorare.
event_typesstring[]Eventi del database da ascoltare. Valori possibili: "create", "update", "delete". Almeno 1 richiesto.

Esempi di eventi delle entità

I seguenti esempi mostrano come attivare funzioni in base agli eventi delle entità:
{
  "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"]
    }
  ]
}

Automazioni connettore

Usa i campi comuni per tutte le automazioni insieme ai campi specifici del connettore elencati qui. Imposta type su "connector" per attivare funzioni quando un’integrazione connessa invia un evento webhook. Usa queste per reagire in tempo reale all’attività di servizi esterni. Ad esempio, puoi analizzare una nuova email, sincronizzare una modifica del calendario o rispondere a un aggiornamento di file in Google Drive. Puoi opzionalmente aggiungere condizioni di trigger per filtrare gli eventi in modo che la tua funzione venga eseguita solo quando il payload corrisponde alle regole che definisci. Quando un’automazione connettore si attiva, la tua funzione riceve un payload webhook strutturato che contiene il tipo di evento, i dettagli dell’integrazione e i dati grezzi dal servizio esterno.
Il connettore deve essere configurato nel tuo progetto e autorizzato prima della distribuzione. Consulta Connettori condivisi per le istruzioni di configurazione.
CampoTipoRichiestoDescrizione
integration_typestringL’identificatore del tipo di connettore su cui ascoltare. Consulta integrazioni supportate per i valori accettati.
eventsstring[]Uno o più nomi di eventi webhook a cui iscriversi. Consulta integrazioni supportate per gli eventi disponibili per ogni connettore.
resource_idstringCondizionaleLimita l’automazione a una risorsa specifica. Il formato atteso dipende dal connettore. Consulta Formati resource ID qui sotto. Richiesto per gli eventi Google Drive con ambito di file. Opzionale per altri connettori.
trigger_conditionsobjectNoRegole che devono corrispondere all’evento in arrivo prima che la tua funzione venga eseguita. Se l’evento non corrisponde, l’esecuzione viene saltata. Consulta Condizioni di trigger per il riferimento completo.

Integrazioni ed eventi supportati

Connettoreintegration_typeValore eventsDescrizione
GmailgmailmailboxQualsiasi modifica alla casella di posta, inclusi nuovi messaggi, aggiornamenti di etichette e modifiche allo stato di lettura.
Google CalendargooglecalendareventsQualsiasi modifica a un evento del calendario, incluse creazione, aggiornamento ed eliminazione.
Google DrivegoogledrivechangesQualsiasi modifica nel drive, inclusi file aggiunti, modificati o eliminati.
Google DrivegoogledrivefileQualsiasi modifica a un file specifico (richiede resource_id).
Google Drivegoogledrivefile.updateContenuto o proprietà del file modificati (richiede resource_id).
Google Drivegoogledrivefile.trashFile spostato nel cestino (richiede resource_id).
Google Drivegoogledrivefile.untrashFile ripristinato dal cestino (richiede resource_id).
Google Drivegoogledrivefile.deleteFile eliminato definitivamente (richiede resource_id).
Microsoft OneDriveone_driveupdatedQualsiasi modifica di file o cartella, incluse creazione, modifica ed eliminazione.
Microsoft OutlookoutlookcreatedVengono creati una nuova email, un evento del calendario o un contatto.
Microsoft OutlookoutlookupdatedUn’email, un evento del calendario o un contatto vengono aggiornati.
Microsoft OutlookoutlookdeletedUn’email, un evento del calendario o un contatto vengono eliminati.
Microsoft SharePointshare_pointupdatedQuando un elemento di elenco o un documento viene creato, modificato o eliminato.
Microsoft Teamsmicrosoft_teamscreatedQuando viene pubblicato un nuovo messaggio in chat.
Microsoft Teamsmicrosoft_teamsupdatedQuando un messaggio in chat viene aggiornato.
Microsoft Teamsmicrosoft_teamsdeletedQuando un messaggio in chat viene eliminato.
SlackslackmessageQuando viene pubblicato un messaggio in un canale.
Slackslackmessage.imQuando viene pubblicato un messaggio diretto.
Slackslackmessage.groupsQuando viene pubblicato un messaggio in un canale privato.
Slackslackmessage.channelsQuando viene pubblicato un messaggio in un canale pubblico.
Slackslackmessage.mpimQuando viene pubblicato un messaggio in una IM multi-party.
Slackslackreaction_addedQuando viene aggiunta una reazione a un messaggio.
Slackslackreaction_removedQuando viene rimossa una reazione da un messaggio.
Slackslackmember_joined_channelQuando un utente entra in un canale.
Slackslackmember_left_channelQuando un utente lascia un canale.
Slackslackfile_sharedQuando viene condiviso un file.
Slack Botslackbotapp_mentionQuando il bot viene menzionato con @.
Slack Botslackbotmessage.imQuando viene inviato un messaggio diretto al bot.
Slack Botslackbotmessage.mpimQuando viene inviato un messaggio in un DM di gruppo con il bot.
Slack Botslackbotmessage.channelsQuando viene pubblicato un messaggio in un canale pubblico in cui è presente il bot.
Slack Botslackbotmessage.groupsQuando viene pubblicato un messaggio in un canale privato in cui è presente il bot.
Wixwixwix.forms.v4.submission_createdÈ stata creata una submission del modulo su un sito Wix.
Wixwixwix.contacts.v4.contact_createdÈ stato creato un contatto in Wix CRM.
Wixwixwix.contacts.v4.contact_updatedUn contatto Wix CRM è stato aggiornato.
Wixwixwix.contacts.v4.contact_deletedUn contatto Wix CRM è stato eliminato.
Wixwixwix.ecom.v1.order_createdÈ stato creato un ordine Wix eCommerce.
Wixwixwix.ecom.v1.order_updatedUn ordine Wix eCommerce è stato aggiornato.
Wixwixwix.ecom.v1.order_canceledUn ordine Wix eCommerce è stato annullato.
Wixwixwix.ecom.v1.checkout_createdÈ stato creato un checkout Wix eCommerce.
Wixwixwix.data.v2.data_item_createdÈ stato creato un data item Wix CMS.
Wixwixwix.data.v2.data_item_updatedUn data item Wix CMS è stato aggiornato.
Wixwixwix.data.v2.data_item_deletedUn data item Wix CMS è stato eliminato.
L’evento mailbox di Gmail si attiva per qualsiasi modifica della casella di posta, non solo per nuovi messaggi. Per eseguire la tua funzione solo quando arrivano nuove email, aggiungi una condizione di trigger: { "field": "has_new_messages", "operator": "equals", "value": true }.
Le automazioni dei connettori Slack (slack) e Slack Bot (slackbot) richiedono condizioni di trigger. La distribuzione fallirà se non sono impostate condizioni per queste automazioni connettore.

Formati resource ID

Il valore atteso per resource_id varia in base al connettore:
  • Google Drive: l’ID del file. Richiesto per gli eventi con ambito di file (file, file.update, file.trash, file.untrash, file.delete).
  • Gmail: un elenco separato da virgole di ID di etichette da monitorare. Valore predefinito "INBOX" se omesso.
  • Microsoft Teams: {teamId}/{channelId} per monitorare un canale specifico, o {chatId} per monitorare una chat specifica.
  • SharePoint: {siteId}/{listId} per monitorare un elenco specifico.

Condizioni di trigger

Usa trigger_conditions per filtrare gli eventi webhook in modo che la tua funzione venga eseguita solo quando il payload corrisponde alle regole che definisci. Se non sono impostate condizioni, la funzione viene eseguita per ogni evento in arrivo. Consulta Esempi di automazioni connettore per configurazioni complete.
logic
string
Come combinare le condizioni. Valori possibili: "and" (tutti devono corrispondere), "or" (almeno uno deve corrispondere). Valore predefinito "and".
conditions
array
obbligatorio
Uno o più oggetti condizione o gruppi di condizioni annidati. Massimo 20 condizioni foglia e 5 livelli di annidamento.

Payload webhook

Quando un’automazione connettore attiva la tua funzione, il corpo della richiesta contiene un oggetto payload con la seguente struttura. Consulta Esempi di automazioni connettore per una funzione che legge il payload.
CampoTipoDescrizione
payload.automation.idstringID dell’automazione che ha attivato questa esecuzione.
payload.automation.namestringNome dell’automazione.
payload.automation.typestringSempre "connector".
payload.event.typestringIl nome dell’evento webhook. Ad esempio, "mailbox", "events" o "changes".
payload.event.integration_typestringIl tipo di connettore. Ad esempio, "gmail" o "googlecalendar".
payload.event.provider_identifierstringL’identificatore dell’account provider usato per l’instradamento.
payload.dataobjectIl payload webhook grezzo dal servizio esterno. Impostato su null quando payload_too_large è true.
payload.payload_too_largebooleanÈ true quando il payload webhook ha superato ~200 KB e data è null.

Esempi di automazioni connettore

// 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"]
    }
  ]
}

Argomenti della funzione

Passa dati alla tua funzione quando viene attivata includendo il campo function_args nella configurazione della tua automazione. Questo è utile quando una funzione gestisce più automazioni con comportamenti diversi, come una funzione di sincronizzazione che viene eseguita in modo incrementale ogni 15 minuti ma esegue una sincronizzazione completa quotidianamente. Accedi a questi argomenti nel codice della tua funzione tramite il corpo della richiesta.

Esempio di argomenti della funzione

Questo esempio mostra una funzione che gestisce sia la modalità di sincronizzazione incrementale sia quella completa in base alla configurazione dell’automazione:
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
});

Distribuisci le automazioni

Distribuisci le funzioni backend con le loro automazioni usando il comando CLI functions deploy o il comando unificato deploy. Puoi distribuire funzioni specifiche per nome con functions deploy <names...>. La distribuzione è atomica per funzione. Una funzione è considerata distribuita solo se sia la distribuzione Deno sia tutte le sue automazioni hanno successo. Se un’automazione non viene distribuita, l’intera distribuzione della funzione viene ripristinata. Dopo la distribuzione, la CLI mostra lo stato per funzione: distribuita, invariata o errore.

Gestire le automazioni nella dashboard

Qualsiasi modifica effettuata nella dashboard verrà sovrascritta la prossima volta che esegui functions deploy. Non esiste una sincronizzazione bidirezionale tra la dashboard e i tuoi file locali. Le automazioni definite nei tuoi file function.jsonc locali sono la fonte di verità.Se vuoi apportare modifiche alle tue automazioni, aggiorna i tuoi file function.jsonc locali e ridistribuisci. Usa la dashboard per monitorare i log di esecuzione e attivare manualmente le automazioni quando necessario.
Visualizza e gestisci le tue automazioni nella dashboard Base44 nella scheda Automations. Dalla dashboard, puoi:
  • Visualizzare log di esecuzione e cronologia
  • Eseguire manualmente le automazioni per i test
  • Monitorare lo stato dell’automazione

Vedi anche

Questa pagina è stata tradotta utilizzando l’IA. Per informazioni più accurate e aggiornate, consulta la versione inglese.