Passer au contenu principal
Vous consultez la documentation pour développeurs
Cette documentation est destinée aux développeurs travaillant avec la plateforme développeur Base44. Pour des informations sur les automatisations dans l’éditeur d’applications, consultez Création d’automatisations pour votre application.
Les automatisations permettent aux fonctions backend de s’exécuter automatiquement selon un planning, en réponse à des événements de base de données, ou lorsqu’une intégration connectée envoie un événement webhook. Utilisez les automatisations pour traiter des données à intervalles réguliers, gérer des changements d’entités, réagir à des événements de services externes ou exécuter des tâches ponctuelles à des heures spécifiques. Chaque fonction backend peut avoir plusieurs automatisations attachées, configurées dans le fichier function.jsonc de la fonction. Si vous n’avez qu’un fichier entry.ts ou entry.js, vous devrez ajouter ce fichier de configuration pour utiliser les automatisations. Les automatisations sont déployées atomiquement avec le code de la fonction lorsque vous exécutez deploy ou functions deploy.

Types d’automatisation

Base44 prend en charge 4 types d’automatisations :

Champs communs

Champs communs pour toutes les automatisations

Tous les types d’automatisation partagent les champs suivants :
ChampTypeRequisDescription
typestringOuiLe type d’automatisation. Valeurs possibles : "scheduled", "entity", ou "connector".
namestringOuiIdentifiant unique pour l’automatisation.
descriptionstringNonDescription lisible par l’humain.
function_argsobjectNonArguments passés à la fonction lors du déclenchement. Consultez Arguments de fonction.
is_activebooleanNonSi l’automatisation est activée. La valeur par défaut est true.

Champs communs pour les automatisations planifiées

Les automatisations planifiées cron et simples partagent ces champs supplémentaires :
ChampTypeRequisDescription
schedule_modestringOuiSi la planification se répète. Valeurs possibles : "recurring" ou "one-time".
schedule_typestringOuiMéthode de planification à utiliser. Valeurs possibles : "cron" ou "simple".
ends_typestringNonQuand la planification récurrente doit s’arrêter. Valeurs possibles : "never", "on", ou "after". La valeur par défaut est "never".
ends_on_datestringConditionnelDate à laquelle la planification récurrente se termine, incluse, en UTC. Requis lorsque ends_type est "on". Format : YYYY-MM-DDTHH:MM:SSZ. Par exemple, "2026-12-31T23:59:59Z".
ends_after_countnumberConditionnelNombre d’exécutions après lequel la planification récurrente s’arrête. Requis lorsque ends_type est "after".

Configuration d’automatisation

Configurez les automatisations dans votre fichier function.jsonc en utilisant l’une des approches suivantes. Toutes les automatisations utilisent les champs communs pour toutes les automatisations listés ci-dessus, plus les champs spécifiques à chaque type.

Cron

Utilisez les champs communs pour toutes les automatisations et les champs communs pour les automatisations planifiées ainsi que les champs spécifiques à cron listés ici. Définissez type à "scheduled" et schedule_type à "cron" pour utiliser des expressions cron pour un contrôle précis de la planification. Les automatisations cron utilisent la syntaxe standard à 5 champs : minute hour day-of-month month day-of-week. Consultez crontab.guru pour un éditeur interactif d’expressions cron et une référence de syntaxe.
ChampTypeRequisDescription
cron_expressionstringOuiExpression cron à 5 champs.

Exemple cron

Cet exemple exécute une fonction tous les jours à minuit 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 * * ?"
    }
  ]
}

Planification simple

Utilisez les champs communs pour toutes les automatisations et les champs communs pour les automatisations planifiées ainsi que les champs de planification simple listés ici. Définissez type à "scheduled" et schedule_type à "simple" pour des besoins de planification simples. Configurez des tâches récurrentes par intervalle, comme des minutes, des heures, des jours, des semaines ou des mois, sans écrire d’expressions cron.
ChampTypeRequisDescription
one_time_datestringConditionnelDate et heure auxquelles l’automatisation s’exécute une fois, en UTC. Requis lorsque schedule_mode est "one-time". Format : YYYY-MM-DDTHH:MM:SSZ. Par exemple, "2026-02-15T10:00:00Z".
repeat_unitstringConditionnelUnité de temps pour les automatisations récurrentes. Requis lorsque schedule_mode est "recurring". Valeurs possibles : "minutes", "hours", "days", "weeks", ou "months".
repeat_intervalnumberConditionnelIntervalle entre les exécutions. Requis lorsque repeat_unit est "minutes", "hours", ou "days".
start_timestringConditionnelHeure de la journée à laquelle l’automatisation s’exécute, en UTC. Requis lorsque repeat_unit est "days", "weeks", ou "months". Format : HH:MM.
repeat_on_daysnumber[]ConditionnelJours de la semaine où l’automatisation s’exécute. Requis lorsque repeat_unit est "weeks". Tableau de numéros de jours de la semaine, où 0 est dimanche et 6 est samedi.
repeat_on_day_of_monthnumberConditionnelJour du mois où l’automatisation s’exécute. Requis lorsque repeat_unit est "months". Valeurs valides : 1-31.

Exemples de planification simple

Les exemples suivants montrent différentes façons de planifier des automatisations avec des planifications 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
}

Événements d’entité

Utilisez les champs communs pour toutes les automatisations ainsi que les champs d’événements d’entité listés ici. Définissez type à "entity" pour déclencher des fonctions automatiquement lorsque des enregistrements de base de données sont créés, mis à jour ou supprimés. Les automatisations d’entité peuvent écouter 1 ou plusieurs types d’événements sur une entité spécifique.
ChampTypeRequisDescription
entity_namestringOuiNom de l’entité à surveiller.
event_typesstring[]OuiÉvénements de base de données à écouter. Valeurs possibles : "create", "update", "delete". Au moins 1 requis.

Exemples d’événements d’entité

Les exemples suivants montrent comment déclencher des fonctions en fonction des événements d’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"]
    }
  ]
}

Automatisations de connecteur

Utilisez les champs communs pour toutes les automatisations ainsi que les champs spécifiques au connecteur listés ici. Définissez type à "connector" pour déclencher des fonctions lorsqu’une intégration connectée envoie un événement webhook. Utilisez-les pour réagir à l’activité d’un service externe en temps réel. Par exemple, vous pouvez analyser un nouvel e-mail, synchroniser un changement de calendrier ou répondre à une mise à jour de fichier dans Google Drive. Vous pouvez éventuellement ajouter des conditions de déclenchement pour filtrer les événements afin que votre fonction ne s’exécute que lorsque la charge utile correspond aux règles que vous définissez. Lorsqu’une automatisation de connecteur se déclenche, votre fonction reçoit une charge utile webhook structurée contenant le type d’événement, les détails d’intégration et les données brutes du service externe.
Le connecteur doit être configuré dans votre projet et autorisé avant le déploiement. Consultez Connecteurs partagés pour les instructions de configuration.
ChampTypeRequisDescription
integration_typestringOuiL’identifiant de type de connecteur à écouter. Consultez intégrations prises en charge pour les valeurs acceptées.
eventsstring[]OuiUn ou plusieurs noms d’événements webhook auxquels s’abonner. Consultez intégrations prises en charge pour les événements disponibles par connecteur.
resource_idstringConditionnelLimite l’automatisation à une ressource spécifique. Le format attendu dépend du connecteur. Consultez Formats d’ID de ressource ci-dessous. Requis pour les événements à portée de fichier Google Drive. Facultatif pour d’autres connecteurs.
trigger_conditionsobjectNonRègles qui doivent correspondre à l’événement entrant avant que votre fonction ne s’exécute. Si l’événement ne correspond pas, l’exécution est ignorée. Consultez Conditions de déclenchement pour la référence complète.

Intégrations et événements pris en charge

Connecteurintegration_typeValeur eventsDescription
GmailgmailmailboxTout changement de boîte aux lettres, y compris les nouveaux messages, les mises à jour d’étiquettes et les changements de statut de lecture.
Google CalendargooglecalendareventsTout changement d’événement de calendrier, y compris créé, mis à jour et supprimé.
Google DrivegoogledrivechangesTout changement dans le drive, y compris les fichiers ajoutés, modifiés ou supprimés.
Google DrivegoogledrivefileTout changement à un fichier spécifique (nécessite resource_id).
Google Drivegoogledrivefile.updateContenu ou propriétés du fichier modifiés (nécessite resource_id).
Google Drivegoogledrivefile.trashFichier déplacé dans la corbeille (nécessite resource_id).
Google Drivegoogledrivefile.untrashFichier restauré de la corbeille (nécessite resource_id).
Google Drivegoogledrivefile.deleteFichier supprimé définitivement (nécessite resource_id).
Microsoft OneDriveone_driveupdatedTout changement de fichier ou de dossier, y compris créé, modifié et supprimé.
Microsoft OutlookoutlookcreatedUn nouvel e-mail, événement de calendrier ou contact est créé.
Microsoft OutlookoutlookupdatedUn e-mail, événement de calendrier ou contact est mis à jour.
Microsoft OutlookoutlookdeletedUn e-mail, événement de calendrier ou contact est supprimé.
Microsoft SharePointshare_pointupdatedLorsqu’un élément de liste ou un document est créé, modifié ou supprimé.
Microsoft Teamsmicrosoft_teamscreatedLorsqu’un nouveau message de chat est publié.
Microsoft Teamsmicrosoft_teamsupdatedLorsqu’un message de chat est mis à jour.
Microsoft Teamsmicrosoft_teamsdeletedLorsqu’un message de chat est supprimé.
SlackslackmessageLorsqu’un message est publié sur un canal.
Slackslackmessage.imLorsqu’un message direct est publié.
Slackslackmessage.groupsLorsqu’un message est publié sur un canal privé.
Slackslackmessage.channelsLorsqu’un message est publié sur un canal public.
Slackslackmessage.mpimLorsqu’un message est publié sur un IM multi-parties.
Slackslackreaction_addedLorsqu’une réaction est ajoutée à un message.
Slackslackreaction_removedLorsqu’une réaction est supprimée d’un message.
Slackslackmember_joined_channelLorsqu’un utilisateur rejoint un canal.
Slackslackmember_left_channelLorsqu’un utilisateur quitte un canal.
Slackslackfile_sharedLorsqu’un fichier est partagé.
L’événement mailbox de Gmail se déclenche pour tout changement de boîte aux lettres, pas seulement les nouveaux messages. Pour exécuter votre fonction uniquement lorsque de nouveaux e-mails arrivent, ajoutez une condition de déclenchement : { "field": "has_new_messages", "operator": "equals", "value": true }.
Les automatisations de connecteur Slack nécessitent des conditions de déclenchement. Le déploiement échouera si aucune condition n’est définie pour les automatisations de connecteur Slack.

Formats d’ID de ressource

La valeur attendue pour resource_id varie selon le connecteur :
  • Google Drive : l’ID du fichier. Requis pour les événements à portée de fichier (file, file.update, file.trash, file.untrash, file.delete).
  • Gmail : une liste séparée par des virgules d’ID d’étiquettes à surveiller. La valeur par défaut est "INBOX" si omise.
  • Microsoft Teams : {teamId}/{channelId} pour surveiller un canal spécifique, ou {chatId} pour surveiller un chat spécifique.
  • SharePoint : {siteId}/{listId} pour surveiller une liste spécifique.

Conditions de déclenchement

Utilisez trigger_conditions pour filtrer les événements webhook afin que votre fonction ne s’exécute que lorsque la charge utile correspond aux règles que vous définissez. Si aucune condition n’est définie, la fonction s’exécute pour chaque événement entrant. Consultez Exemples d’automatisation de connecteur pour des configurations complètes.
logic
string
Comment combiner les conditions. Valeurs possibles : "and" (toutes doivent correspondre), "or" (au moins une doit correspondre). La valeur par défaut est "and".
conditions
array
requis
Un ou plusieurs objets de condition ou groupes de conditions imbriqués. Maximum 20 conditions feuilles et 5 niveaux d’imbrication.

Charge utile webhook

Lorsqu’une automatisation de connecteur déclenche votre fonction, le corps de la requête contient un objet payload avec la structure suivante. Consultez Exemples d’automatisation de connecteur pour une fonction qui lit la charge utile.
ChampTypeDescription
payload.automation.idstringID de l’automatisation qui a déclenché cette exécution.
payload.automation.namestringNom de l’automatisation.
payload.automation.typestringToujours "connector".
payload.event.typestringLe nom de l’événement webhook. Par exemple, "mailbox", "events", ou "changes".
payload.event.integration_typestringLe type de connecteur. Par exemple, "gmail" ou "googlecalendar".
payload.event.provider_identifierstringL’identifiant du compte fournisseur utilisé pour le routage.
payload.dataobjectLa charge utile webhook brute du service externe. Définie à null lorsque payload_too_large est true.
payload.payload_too_largebooleanEst true lorsque la charge utile webhook a dépassé ~200 Ko et que data est null.

Exemples d’automatisation de connecteur

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

Arguments de fonction

Passez des données à votre fonction lorsqu’elle est déclenchée en incluant le champ function_args dans votre configuration d’automatisation. Ceci est utile lorsqu’une fonction gère plusieurs automatisations avec des comportements différents, comme une fonction de synchronisation qui s’exécute de manière incrémentielle toutes les 15 minutes mais effectue une synchronisation complète quotidiennement. Accédez à ces arguments dans le code de votre fonction via le corps de la requête.

Exemple d’arguments de fonction

Cet exemple montre une fonction qui gère à la fois les modes de synchronisation incrémentielle et complète en fonction de la configuration d’automatisation :
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
});

Déployer les automatisations

Déployez les fonctions backend avec leurs automatisations en utilisant la commande CLI functions deploy ou la commande unifiée deploy. Vous pouvez déployer des fonctions spécifiques par nom avec functions deploy <names...>. Le déploiement est atomique par fonction. Une fonction n’est considérée comme déployée que si le déploiement Deno et toutes ses automatisations réussissent. Si une automatisation échoue à se déployer, le déploiement de la fonction entière est annulé. Après le déploiement, la CLI affiche le statut par fonction : déployé, inchangé ou erreur.

Gérer les automatisations dans le tableau de bord

Toutes les modifications effectuées dans le tableau de bord seront écrasées la prochaine fois que vous exécuterez functions deploy. Il n’y a pas de synchronisation bidirectionnelle entre le tableau de bord et vos fichiers locaux. Les automatisations définies dans vos fichiers function.jsonc locaux sont la source de vérité.Si vous voulez modifier vos automatisations, mettez à jour vos fichiers function.jsonc locaux et redéployez. Utilisez le tableau de bord pour surveiller les logs d’exécution et déclencher manuellement les automatisations si nécessaire.
Visualisez et gérez vos automatisations dans le tableau de bord Base44 sous l’onglet Automations. Depuis le tableau de bord, vous pouvez :
  • Voir les logs d’exécution et l’historique
  • Exécuter les automatisations manuellement à des fins de test
  • Surveiller le statut des automatisations

Voir aussi

Cette page a été traduite à l’aide de l’IA. Pour les informations les plus précises et à jour, consultez la version anglaise.