> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Automatisations

> Planifiez des tâches récurrentes et déclenchez des fonctions automatiquement en fonction d'événements de base de données ou d'événements webhook de connecteurs

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Vous consultez la documentation pour développeurs
    </div>

    <div className="dev-docs-banner-text">
      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 <a href="/Building-your-app/Creating-automations">Création d'automatisations pour votre application</a>.
    </div>
  </div>
</div>

Les automatisations permettent aux [fonctions backend](/developers/backend/resources/backend-functions/overview) 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](#deploy-automations) lorsque vous exécutez [`deploy`](/developers/references/cli/commands/deploy) ou [`functions deploy`](/developers/references/cli/commands/functions-deploy).

## Types d'automatisation

Base44 prend en charge 4 types d'automatisations :

* **[Automatisations planifiées avec cron](#cron)** : utilisez des expressions cron pour un contrôle précis de la planification.
* **[Automatisations planifiées avec des planifications simples](#simple-schedule)** : configurez des tâches récurrentes par intervalle sans expressions cron.
* **[Automatisations d'événements d'entité](#entity-events)** : déclenchez des fonctions lorsque des enregistrements de base de données sont créés, mis à jour ou supprimés.
* **[Automatisations de connecteur](#connector-automations)** : répondez aux événements des services connectés en temps réel, comme un nouvel e-mail dans Gmail ou un changement de fichier dans Google Drive.

## Champs communs

### Champs communs pour toutes les automatisations

Tous les types d'automatisation partagent les champs suivants :

| Champ           | Type      | Requis | Description                                                                                                   |
| --------------- | --------- | ------ | ------------------------------------------------------------------------------------------------------------- |
| `type`          | `string`  | Oui    | Le type d'automatisation. Valeurs possibles : `"scheduled"`, `"entity"`, ou `"connector"`.                    |
| `name`          | `string`  | Oui    | Identifiant unique pour l'automatisation.                                                                     |
| `description`   | `string`  | Non    | Description lisible par l'humain.                                                                             |
| `function_args` | `object`  | Non    | Arguments passés à la fonction lors du déclenchement. Consultez [Arguments de fonction](#function-arguments). |
| `is_active`     | `boolean` | Non    | Si 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 :

| Champ              | Type     | Requis       | Description                                                                                                                                                                             |
| ------------------ | -------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `schedule_mode`    | `string` | Oui          | Si la planification se répète. Valeurs possibles : `"recurring"` ou `"one-time"`.                                                                                                       |
| `schedule_type`    | `string` | Oui          | Méthode de planification à utiliser. Valeurs possibles : `"cron"` ou `"simple"`.                                                                                                        |
| `ends_type`        | `string` | Non          | Quand la planification récurrente doit s'arrêter. Valeurs possibles : `"never"`, `"on"`, ou `"after"`. La valeur par défaut est `"never"`.                                              |
| `ends_on_date`     | `string` | Conditionnel | Date à 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_count` | `number` | Conditionnel | Nombre 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](#common-fields-for-all-automations) listés ci-dessus, plus les champs spécifiques à chaque type.

### Cron

Utilisez les [champs communs pour toutes les automatisations](#common-fields-for-all-automations) et les [champs communs pour les automatisations planifiées](#common-fields-for-scheduled-automations) 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](https://crontab.guru/) pour un éditeur interactif d'expressions cron et une référence de syntaxe.

| Champ             | Type     | Requis | Description                 |
| ----------------- | -------- | ------ | --------------------------- |
| `cron_expression` | `string` | Oui    | Expression cron à 5 champs. |

#### Exemple cron

Cet exemple exécute une fonction tous les jours à minuit UTC :

```jsonc theme={null}
{
  "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](#common-fields-for-all-automations) et les [champs communs pour les automatisations planifiées](#common-fields-for-scheduled-automations) 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.

| Champ                    | Type       | Requis       | Description                                                                                                                                                                                    |
| ------------------------ | ---------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `one_time_date`          | `string`   | Conditionnel | Date 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_unit`            | `string`   | Conditionnel | Unité de temps pour les automatisations récurrentes. Requis lorsque `schedule_mode` est `"recurring"`. Valeurs possibles : `"minutes"`, `"hours"`, `"days"`, `"weeks"`, ou `"months"`.         |
| `repeat_interval`        | `number`   | Conditionnel | Intervalle entre les exécutions. Requis lorsque `repeat_unit` est `"minutes"`, `"hours"`, ou `"days"`.                                                                                         |
| `start_time`             | `string`   | Conditionnel | Heure 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_days`         | `number[]` | Conditionnel | Jours 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_month` | `number`   | Conditionnel | Jour 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 :

<CodeGroup>
  ```jsonc Every 30 minutes theme={null}
  {
    "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
  }
  ```

  ```jsonc Weekdays at 9am theme={null}
  {
    "type": "scheduled",
    "name": "weekday_morning_report",
    "description": "Runs at 9 AM Monday through Friday.",
    "is_active": true,

    "schedule_mode": "recurring",
    "schedule_type": "simple",
    "repeat_unit": "weeks",
    "repeat_interval": 1,
    "start_time": "09:00",
    "repeat_on_days": [1, 2, 3, 4, 5],

    "ends_type": "after",
    "ends_after_count": 52
  }
  ```

  ```jsonc One-time execution theme={null}
  {
    "type": "scheduled",
    "name": "one_time_cleanup",
    "description": "Runs once at a specific date and time.",
    "function_args": { "cleanup": true },
    "is_active": true,

    "schedule_mode": "one-time",
    "schedule_type": "simple",
    "one_time_date": "2026-02-15T10:00:00Z"
  }
  ```
</CodeGroup>

### Événements d'entité

Utilisez les [champs communs pour toutes les automatisations](#common-fields-for-all-automations) 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.

| Champ         | Type       | Requis | Description                                                                                                         |
| ------------- | ---------- | ------ | ------------------------------------------------------------------------------------------------------------------- |
| `entity_name` | `string`   | Oui    | Nom de l'entité à surveiller.                                                                                       |
| `event_types` | `string[]` | 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é :

<CodeGroup>
  ```jsonc All order events theme={null}
  {
    "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"]
      }
    ]
  }
  ```

  ```jsonc New records only theme={null}
  {
    "type": "entity",
    "name": "on_customer_create",
    "description": "Triggered when a new customer is created.",
    "is_active": true,

    "entity_name": "customers",
    "event_types": ["create"]
  }
  ```
</CodeGroup>

### Automatisations de connecteur

Utilisez les [champs communs pour toutes les automatisations](#common-fields-for-all-automations) 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](#trigger-conditions) 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](#webhook-payload) structurée contenant le type d'événement, les détails d'intégration et les données brutes du service externe.

<Note>
  Le connecteur doit être configuré dans votre projet et autorisé avant le déploiement. Consultez [Connecteurs partagés](/developers/backend/resources/connectors/shared-connectors) pour les instructions de configuration.
</Note>

| Champ                | Type       | Requis       | Description                                                                                                                                                                                                                                                            |
| -------------------- | ---------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `integration_type`   | `string`   | Oui          | L'identifiant de type de connecteur à écouter. Consultez [intégrations prises en charge](#supported-integrations-and-events) pour les valeurs acceptées.                                                                                                               |
| `events`             | `string[]` | Oui          | Un ou plusieurs noms d'événements webhook auxquels s'abonner. Consultez [intégrations prises en charge](#supported-integrations-and-events) pour les événements disponibles par connecteur.                                                                            |
| `resource_id`        | `string`   | Conditionnel | Limite l'automatisation à une ressource spécifique. Le format attendu dépend du connecteur. Consultez [Formats d'ID de ressource](#resource-id-formats) ci-dessous. Requis pour les événements à portée de fichier Google Drive. Facultatif pour d'autres connecteurs. |
| `trigger_conditions` | `object`   | Non          | Rè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](#trigger-conditions) pour la référence complète.                       |

#### Intégrations et événements pris en charge

| Connecteur           | `integration_type` | Valeur `events`         | Description                                                                                                                                   |
| -------------------- | ------------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Gmail                | `gmail`            | `mailbox`               | Tout changement de boîte aux lettres, y compris les nouveaux messages, les mises à jour d'étiquettes et les changements de statut de lecture. |
| Google Calendar      | `googlecalendar`   | `events`                | Tout changement d'événement de calendrier, y compris créé, mis à jour et supprimé.                                                            |
| Google Drive         | `googledrive`      | `changes`               | Tout changement dans le drive, y compris les fichiers ajoutés, modifiés ou supprimés.                                                         |
| Google Drive         | `googledrive`      | `file`                  | Tout changement à un fichier spécifique (nécessite `resource_id`).                                                                            |
| Google Drive         | `googledrive`      | `file.update`           | Contenu ou propriétés du fichier modifiés (nécessite `resource_id`).                                                                          |
| Google Drive         | `googledrive`      | `file.trash`            | Fichier déplacé dans la corbeille (nécessite `resource_id`).                                                                                  |
| Google Drive         | `googledrive`      | `file.untrash`          | Fichier restauré de la corbeille (nécessite `resource_id`).                                                                                   |
| Google Drive         | `googledrive`      | `file.delete`           | Fichier supprimé définitivement (nécessite `resource_id`).                                                                                    |
| Microsoft OneDrive   | `one_drive`        | `updated`               | Tout changement de fichier ou de dossier, y compris créé, modifié et supprimé.                                                                |
| Microsoft Outlook    | `outlook`          | `created`               | Un nouvel e-mail, événement de calendrier ou contact est créé.                                                                                |
| Microsoft Outlook    | `outlook`          | `updated`               | Un e-mail, événement de calendrier ou contact est mis à jour.                                                                                 |
| Microsoft Outlook    | `outlook`          | `deleted`               | Un e-mail, événement de calendrier ou contact est supprimé.                                                                                   |
| Microsoft SharePoint | `share_point`      | `updated`               | Lorsqu'un élément de liste ou un document est créé, modifié ou supprimé.                                                                      |
| Microsoft Teams      | `microsoft_teams`  | `created`               | Lorsqu'un nouveau message de chat est publié.                                                                                                 |
| Microsoft Teams      | `microsoft_teams`  | `updated`               | Lorsqu'un message de chat est mis à jour.                                                                                                     |
| Microsoft Teams      | `microsoft_teams`  | `deleted`               | Lorsqu'un message de chat est supprimé.                                                                                                       |
| Slack                | `slack`            | `message`               | Lorsqu'un message est publié sur un canal.                                                                                                    |
| Slack                | `slack`            | `message.im`            | Lorsqu'un message direct est publié.                                                                                                          |
| Slack                | `slack`            | `message.groups`        | Lorsqu'un message est publié sur un canal privé.                                                                                              |
| Slack                | `slack`            | `message.channels`      | Lorsqu'un message est publié sur un canal public.                                                                                             |
| Slack                | `slack`            | `message.mpim`          | Lorsqu'un message est publié sur un IM multi-parties.                                                                                         |
| Slack                | `slack`            | `reaction_added`        | Lorsqu'une réaction est ajoutée à un message.                                                                                                 |
| Slack                | `slack`            | `reaction_removed`      | Lorsqu'une réaction est supprimée d'un message.                                                                                               |
| Slack                | `slack`            | `member_joined_channel` | Lorsqu'un utilisateur rejoint un canal.                                                                                                       |
| Slack                | `slack`            | `member_left_channel`   | Lorsqu'un utilisateur quitte un canal.                                                                                                        |
| Slack                | `slack`            | `file_shared`           | Lorsqu'un fichier est partagé.                                                                                                                |

<Tip>
  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 }`.
</Tip>

<Note>
  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.
</Note>

#### 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](#connector-automation-examples) pour des configurations complètes.

<ResponseField name="logic" type="string">
  Comment combiner les conditions. Valeurs possibles : `"and"` (toutes doivent correspondre), `"or"` (au moins une doit correspondre). La valeur par défaut est `"and"`.
</ResponseField>

<ResponseField name="conditions" type="array" required>
  Un ou plusieurs objets de condition ou groupes de conditions imbriqués. Maximum 20 conditions feuilles et 5 niveaux d'imbrication.

  <Expandable title="Champs de l'objet condition">
    <ResponseField name="field" type="string" required>
      Chemin séparé par des points dans la charge utile webhook. Par exemple, `"status"` lit `payload.data.status`, et `"sender.email"` lit `payload.data.sender.email`.
    </ResponseField>

    <ResponseField name="operator" type="string" required>
      Comment comparer la valeur du champ.

      <Expandable title="Opérateurs pris en charge">
        | Opérateur      | Description                                                                                   |
        | -------------- | --------------------------------------------------------------------------------------------- |
        | `equals`       | La valeur du champ correspond exactement à `value`.                                           |
        | `not_equals`   | La valeur du champ ne correspond pas à `value`.                                               |
        | `contains`     | La valeur du champ contient `value` en tant que sous-chaîne.                                  |
        | `not_contains` | La valeur du champ ne contient pas `value` en tant que sous-chaîne.                           |
        | `starts_with`  | La valeur du champ commence par `value`.                                                      |
        | `ends_with`    | La valeur du champ se termine par `value`.                                                    |
        | `gt`           | La valeur du champ est supérieure à `value`.                                                  |
        | `gte`          | La valeur du champ est supérieure ou égale à `value`.                                         |
        | `lt`           | La valeur du champ est inférieure à `value`.                                                  |
        | `lte`          | La valeur du champ est inférieure ou égale à `value`.                                         |
        | `in_list`      | La valeur du champ est l'un des éléments de `value` (un tableau).                             |
        | `not_in_list`  | La valeur du champ n'est pas l'un des éléments de `value` (un tableau).                       |
        | `exists`       | Le champ est présent et n'est pas null. Aucune `value` requise.                               |
        | `not_exists`   | Le champ est null ou manquant. Aucune `value` requise.                                        |
        | `is_empty`     | Le champ est null, une chaîne vide, un tableau vide ou un objet vide. Aucune `value` requise. |
        | `is_not_empty` | Le champ n'est pas null, chaîne vide, tableau vide ou objet vide. Aucune `value` requise.     |
      </Expandable>
    </ResponseField>

    <ResponseField name="value" type="any">
      La valeur à comparer. Non requise pour `exists`, `not_exists`, `is_empty` et `is_not_empty`.
    </ResponseField>
  </Expandable>
</ResponseField>

#### 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](#connector-automation-examples) pour une fonction qui lit la charge utile.

| Champ                               | Type      | Description                                                                                                |
| ----------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- |
| `payload.automation.id`             | `string`  | ID de l'automatisation qui a déclenché cette exécution.                                                    |
| `payload.automation.name`           | `string`  | Nom de l'automatisation.                                                                                   |
| `payload.automation.type`           | `string`  | Toujours `"connector"`.                                                                                    |
| `payload.event.type`                | `string`  | Le nom de l'événement webhook. Par exemple, `"mailbox"`, `"events"`, ou `"changes"`.                       |
| `payload.event.integration_type`    | `string`  | Le type de connecteur. Par exemple, `"gmail"` ou `"googlecalendar"`.                                       |
| `payload.event.provider_identifier` | `string`  | L'identifiant du compte fournisseur utilisé pour le routage.                                               |
| `payload.data`                      | `object`  | La charge utile webhook brute du service externe. Définie à `null` lorsque `payload_too_large` est `true`. |
| `payload.payload_too_large`         | `boolean` | Est `true` lorsque la charge utile webhook a dépassé \~200 Ko et que `data` est `null`.                    |

#### Exemples d'automatisation de connecteur

<CodeGroup>
  ```jsonc Basic connector automation theme={null}
  // 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"]
      }
    ]
  }
  ```

  ```jsonc Single trigger condition theme={null}
  // Triggers only when a Google Calendar event has status "cancelled".

  {
    "type": "connector",
    "name": "on_event_cancelled",
    "description": "Runs only when a Google Calendar event is cancelled.",
    "is_active": true,

    "integration_type": "googlecalendar",
    "events": ["events"],
    "trigger_conditions": {
      "logic": "and",
      "conditions": [
        { "field": "status", "operator": "equals", "value": "cancelled" }
      ]
    }
  }
  ```

  ```jsonc Nested trigger conditions theme={null}
  // Triggers only for Gmail messages that are both in the inbox and unread.

  {
    "type": "connector",
    "name": "on_unread_inbox_email",
    "description": "Runs only for unread emails in the inbox.",
    "is_active": true,

    "integration_type": "gmail",
    "events": ["mailbox"],
    "trigger_conditions": {
      "logic": "and",
      "conditions": [
        { "field": "labelIds", "operator": "contains", "value": "INBOX" },
        { "field": "labelIds", "operator": "contains", "value": "UNREAD" }
      ]
    }
  }
  ```

  ```typescript Reading the payload theme={null}
  // Reads the structured payload from the request body.

  Deno.serve(async (req) => {
    const body = await req.json();
    const { payload } = body;

    const eventType = payload.event.type;            
    const integration = payload.event.integration_type; 

    if (payload.payload_too_large) {
      console.warn("Webhook payload was too large and was not included.");
      return Response.json({ ok: false, reason: "payload_too_large" });
    }

    const data = payload.data; 
    
    // Your function logic
    console.log(`Received ${eventType} event from ${integration}`, data);

    return Response.json({ ok: true });
  });
  ```
</CodeGroup>

### 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 :

<CodeGroup>
  ```typescript Function code theme={null}
  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
  });
  ```

  ```jsonc Automation config theme={null}
  {
    "name": "syncData",
    "entry": "entry.ts",
    "automations": [
      {
        "type": "scheduled",
        "name": "incremental_sync",
        "description": "Runs every 15 minutes with incremental mode.",
        "function_args": { "mode": "incremental" },
        "is_active": true,
        "schedule_mode": "recurring",
        "schedule_type": "simple",
        "repeat_unit": "minutes",
        "repeat_interval": 15
      },
      {
        "type": "scheduled",
        "name": "full_sync",
        "description": "Runs daily at midnight with full sync mode.",
        "function_args": { "mode": "full" },
        "is_active": true,
        "schedule_mode": "recurring",
        "schedule_type": "cron",
        "cron_expression": "0 0 * * ?"
      }
    ]
  }
  ```
</CodeGroup>

## Déployer les automatisations

Déployez les fonctions backend avec leurs automatisations en utilisant la commande CLI [`functions deploy`](/developers/references/cli/commands/functions-deploy) ou la commande unifiée [`deploy`](/developers/references/cli/commands/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

<Warning>
  Toutes les modifications effectuées dans le tableau de bord seront écrasées la prochaine fois que vous exécuterez [`functions deploy`](/developers/references/cli/commands/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.
</Warning>

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

* [Fonctions backend](/developers/backend/resources/backend-functions/overview) : apprenez les fonctions backend
* [`functions deploy`](/developers/references/cli/commands/functions-deploy) : déployer des fonctions avec des automatisations
* [`deploy`](/developers/references/cli/commands/deploy) : déployer toutes les ressources en une fois
* [`logs`](/developers/references/cli/commands/logs) : voir les logs des fonctions

<Note>Cette page a été traduite à l'aide de l'IA. Pour les informations les plus précises et à jour, consultez la [version anglaise](/). </Note>
