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

# Créer une automatisation par webhook

> Créez une automatisation webhook dans W&B pour envoyer des requêtes HTTP à des services externes lorsque certains événements se produisent.

Cette page explique comment créer une [automatisation webhook](/fr/models/automations), qui envoie une requête HTTP à un service externe lorsqu’un événement spécifique se produit dans W\&B. Utilisez une automatisation webhook pour intégrer W\&B à des systèmes externes tels que des pipelines CI/CD, des services de notification ou des outils personnalisés. Pour créer une automatisation Slack, veuillez plutôt vous référer à [Créer une automatisation Slack](/fr/models/automations/create-automations/slack).

Dans les grandes lignes, pour créer une automatisation webhook, suivez ces étapes :

1. Si nécessaire, [créez un secret W\&B](/fr/platform/secrets) pour chaque valeur sensible requise par l’automatisation, comme un jeton d’accès, un mot de passe ou une clé SSH. Les secrets sont définis dans vos **Team Settings**.
2. [Créez un webhook](#create-a-webhook) pour définir le point de terminaison et les détails d’autorisation, et accordez à l’intégration l’accès à tous les secrets dont elle a besoin.
3. [Créez l’automatisation](#create-an-automation) pour définir l’[événement](/fr/models/automations/automation-events) à surveiller et la charge utile que W\&B envoie. Accordez à l’automatisation l’accès à tous les secrets dont elle a besoin pour la charge utile.

<div id="create-a-webhook">
  ## Créer un webhook
</div>

Un administrateur de l’équipe peut ajouter un webhook à l’équipe. Le webhook définit le point de terminaison vers lequel W\&B envoie les requêtes, ainsi que les identifiants requis pour s’y authentifier.

<Note>
  Si le webhook nécessite un Bearer token ou si sa charge utile nécessite une chaîne sensible, [créez un secret qui le contient](/fr/platform/secrets/#add-a-secret) avant de créer le webhook. Vous pouvez configurer au maximum un jeton d’accès et un autre secret par webhook. Le service du webhook détermine les exigences d’authentification et d’autorisation de votre webhook.
</Note>

1. Connectez-vous à W\&B, puis accédez à la page **Team Settings**.
2. Dans la section **Webhooks**, cliquez sur **New webhook**.
3. Saisissez un nom pour le webhook.
4. Saisissez l’URL du point de terminaison du webhook.
5. Si le webhook nécessite un Bearer token, définissez **Access token** sur le [secret](/fr/platform/secrets) qui le contient. Lorsque vous utilisez l’automatisation webhook, W\&B définit l’en-tête HTTP `Authorization: Bearer` sur le jeton d’accès, et vous pouvez accéder au jeton dans la [variable de charge utile](#payload-variables) `${ACCESS_TOKEN}`. Pour plus d’informations sur la structure de la requête `POST` que W\&B envoie au service de webhook, voir [dépanner votre webhook](#troubleshoot-your-webhook).
6. Si le webhook nécessite un mot de passe ou une autre chaîne sensible dans sa charge utile, définissez **Secret** sur le secret qui la contient. Lorsque vous configurez l’automatisation qui utilise le webhook, vous pouvez accéder au secret comme [variable de charge utile](#payload-variables) en préfixant son nom par `$`.

   Si le jeton d’accès du webhook est stocké dans un secret, vous devez *également* effectuer l’étape suivante pour indiquer ce secret comme jeton d’accès.
7. Pour vérifier que W\&B peut se connecter au point de terminaison et s’y authentifier :

   1. Facultatif : fournissez une charge utile de test. Pour faire référence à un secret auquel le webhook a accès dans la charge utile, préfixez son nom par `$`. W\&B utilise cette charge utile uniquement pour les tests et ne l’enregistre pas. Vous configurez la charge utile d’une automatisation lorsque vous [créez l’automatisation](#create-an-automation). Pour plus d’informations sur l’emplacement du secret et du jeton d’accès dans la requête `POST`, voir [dépanner votre webhook](#troubleshoot-your-webhook).
   2. Cliquez sur **Test**. W\&B tente de se connecter au point de terminaison du webhook à l’aide des identifiants que vous avez configurés. Si vous avez fourni une charge utile, W\&B l’envoie.

   Si le test échoue, vérifiez la configuration du webhook et réessayez. Si nécessaire, reportez-vous à [dépanner votre webhook](#troubleshoot-your-webhook).

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/wKCrMJZKG3PxyJhv/images/automations/webhooks.png?fit=max&auto=format&n=wKCrMJZKG3PxyJhv&q=85&s=ca5ac8aef0dc235e8f23accb71472ea0" alt="Capture d’écran montrant deux webhooks dans une équipe" width="515" height="131" data-path="images/automations/webhooks.png" />
</Frame>

Vous pouvez maintenant [créer une automatisation](#create-an-automation) qui utilise le webhook.

<div id="create-an-automation">
  ## Créer une automatisation
</div>

Après avoir [configuré un webhook](#create-a-webhook), créez une automatisation qui définit quel événement W\&B déclenche le webhook et quelle charge utile envoyer. Sélectionnez **Registry** ou **Project** selon la portée souhaitée, puis suivez ces étapes pour créer une automatisation qui déclenche le webhook.

<Tabs>
  <Tab title="Registry">
    Un administrateur du Registry peut créer des automatisations dans ce registre. Les automatisations au niveau du registre s'appliquent à toutes les collections du registre, y compris celles qui seront ajoutées ultérieurement.

    1. Connectez-vous à W\&B.

    2. Cliquez sur le nom d'un registre pour afficher ses détails.

    3. Pour créer une automatisation au niveau du registre, cliquez sur l'onglet **Automations**, puis sur **Create automation**.

    4. Choisissez l'[événement](/fr/models/automations/automation-events/#registry-events) à surveiller.

       Renseignez tous les champs supplémentaires qui s'affichent. Par exemple, si vous sélectionnez **An artifact alias is added**, vous devez spécifier **Alias regex**.

       Cliquez sur **Next step**.

    5. Sélectionnez l'équipe propriétaire du [webhook](#create-a-webhook).

    6. Définissez **Action type** sur **Webhooks**, puis sélectionnez le [webhook](#create-a-webhook) à utiliser.

    7. Si vous avez configuré un jeton d'accès pour le webhook, vous pouvez y accéder dans la [variable de charge utile](#payload-variables) `${ACCESS_TOKEN}`. Si vous avez configuré un secret pour le webhook, vous pouvez y accéder dans la charge utile en faisant précéder son nom de `$`. Le service du webhook détermine les exigences de votre webhook.

    8. Cliquez sur **Next step**.

    9. Indiquez un nom pour l'automatisation. Vous pouvez également fournir une description. Cliquez sur **Create automation**.
  </Tab>

  <Tab title="projet">
    Un administrateur W\&B peut créer des automatisations dans un projet.

    1. Connectez-vous à W\&B et accédez à la page du projet.
    2. Dans la barre latérale du projet, cliquez sur **Automations**, puis sur **Create automation**.

       Vous pouvez aussi créer rapidement, depuis un graphique en courbes dans le workspace, une [automatisation de métrique de run](/fr/models/automations/automation-events/#run-events) pour la métrique affichée. Survolez le panneau, puis cliquez sur l'icône en forme de cloche en haut du panneau.

           <Frame>
             <img src="https://mintcdn.com/wb-21fd5541/wKCrMJZKG3PxyJhv/images/automations/run_metric_automation_from_panel.png?fit=max&auto=format&n=wKCrMJZKG3PxyJhv&q=85&s=264fe0c59c70a4876fc2e60bc680d7d3" alt="Emplacement de l'icône en forme de cloche de l'automatisation" width="385" height="258" data-path="images/automations/run_metric_automation_from_panel.png" />
           </Frame>
    3. Choisissez l'[événement](/fr/models/automations/automation-events/#project) à surveiller, par exemple lorsqu'un alias d'artifact est ajouté ou lorsqu'une métrique de run atteint un seuil donné.

       1. Renseignez tous les champs supplémentaires qui s'affichent, selon l'événement choisi. Par exemple, si vous sélectionnez **An artifact alias is added**, vous devez spécifier **Alias regex**.

          1. Pour les automatisations déclenchées par un run, vous pouvez spécifier un ou plusieurs filtres de run.

             * **Filter to one user's runs** : incluez uniquement les runs créés par l'utilisateur spécifié. Cliquez sur le bouton bascule pour activer le filtre, puis indiquez un nom d'utilisateur.
             * **Filter on run name** : incluez uniquement les runs dont le nom correspond à l'expression régulière indiquée. Cliquez sur le bouton bascule pour activer le filtre, puis indiquez une expression régulière.

          L'automatisation s'applique à toutes les collections du projet, y compris celles qui seront ajoutées ultérieurement.
       2. Cliquez sur **Next step**.
    4. Sélectionnez l'équipe propriétaire du [webhook](#create-a-webhook).
    5. Définissez **Action type** sur **Webhooks**, puis sélectionnez le [webhook](#create-a-webhook) à utiliser.
    6. Si votre webhook nécessite une charge utile, construisez-la et collez-la dans le champ **Charge utile**. Si vous avez configuré un jeton d'accès pour le webhook, vous pouvez y accéder dans la [variable de charge utile](#payload-variables) `${ACCESS_TOKEN}`. Si vous avez configuré un secret pour le webhook, vous pouvez y accéder dans la charge utile en faisant précéder son nom de `$`. Le service du webhook détermine les exigences de votre webhook.
    7. Cliquez sur **Next step**.
    8. Indiquez un nom pour l'automatisation. Vous pouvez également fournir une description. Cliquez sur **Create automation**.
  </Tab>
</Tabs>

Après avoir terminé ces étapes, l'automatisation est active et exécute le webhook chaque fois que l'événement spécifié se produit dans le registre ou le projet.

<div id="view-and-manage-automations">
  ## Afficher et gérer les automatisations
</div>

Consultez, modifiez ou supprimez une automatisation depuis l'onglet **Automations**.

<Tabs>
  <Tab title="Registry">
    Gérez les automatisations d'un registre dans l'onglet **Automations** du registre.

    * Pour afficher les détails d'une automatisation, cliquez sur son nom.
    * Pour modifier une automatisation, cliquez sur son menu **action (<Icon icon="ellipsis" iconType="solid" />)**, puis sur **Edit automation**.
    * Pour supprimer une automatisation, cliquez sur son menu **action (<Icon icon="ellipsis" iconType="solid" />)**, puis sur **Delete automation**. W\&B vous demande de confirmer.
  </Tab>

  <Tab title="Project">
    Un administrateur W\&B peut afficher et gérer les automatisations d'un projet dans l'onglet **Automations** du projet.

    * Pour afficher les détails d'une automatisation, cliquez sur son nom.
    * Pour modifier une automatisation, cliquez sur son menu **action (<Icon icon="ellipsis" iconType="solid" />)**, puis sur **Edit automation**.
    * Pour supprimer une automatisation, cliquez sur son menu **action (<Icon icon="ellipsis" iconType="solid" />)**, puis sur **Delete automation**. W\&B vous demande de confirmer.
  </Tab>
</Tabs>

<div id="payload-reference">
  ## Référence de la charge utile
</div>

Utilisez ces sections pour construire la charge utile de votre webhook. Les sections suivantes décrivent les variables disponibles dans votre charge utile et montrent des exemples de charges utiles pour les services courants. Pour plus de détails sur le test de votre webhook et de sa charge utile, référez-vous à [Troubleshoot your webhook](#troubleshoot-your-webhook).

<div id="payload-variables">
  ### Variables de charge utile
</div>

Le tableau suivant décrit les variables que vous pouvez utiliser pour construire la charge utile de votre webhook.

| Variable                      | Détails                                                                                                                                                                                                                                                                                        |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `${project_name}`             | Le nom du projet auquel appartient la mutation qui a déclenché l'action.                                                                                                                                                                                                                       |
| `${entity_name}`              | Le nom de l'entité ou de l'équipe à laquelle appartient la mutation qui a déclenché l'action.                                                                                                                                                                                                  |
| `${event_type}`               | Le type d'événement qui a déclenché l'action.                                                                                                                                                                                                                                                  |
| `${event_author}`             | L'utilisateur qui a déclenché l'action.                                                                                                                                                                                                                                                        |
| `${alias}`                    | Contient l'alias d'un artifact si l'automatisation est déclenchée par l'événement **Un alias d'artifact est ajouté**. Pour les autres automatisations, cette variable est vide.                                                                                                                |
| `${tag}`                      | Contient les tags d'un artifact si l'automatisation est déclenchée par l'événement **Un tag d'artifact est ajouté**. Pour les autres automatisations, cette variable est vide.                                                                                                                 |
| `${artifact_collection_name}` | Le nom de la collection d'artifacts à laquelle est liée la version d'artifact.                                                                                                                                                                                                                 |
| `${artifact_metadata.<KEY>}`  | La valeur d'une clé de métadonnées arbitraire de premier niveau de la version d'artifact qui a déclenché l'action. Remplacez `<KEY>` par le nom d'une clé de métadonnées de premier niveau. Seules les clés de métadonnées de premier niveau sont disponibles dans la charge utile du webhook. |
| `${artifact_version}`         | La représentation [`Wandb.Artifact`](/fr/models/ref/python/experiments/artifact) de la version d'artifact qui a déclenché l'action.                                                                                                                                                            |
| `${artifact_version_string}`  | La représentation sous forme de `string` de la version d'artifact qui a déclenché l'action.                                                                                                                                                                                                    |
| `${ACCESS_TOKEN}`             | La valeur du jeton d'accès configuré dans le [webhook](#create-a-webhook), si vous avez configuré un jeton d'accès. W\&B le transmet automatiquement dans l'en-tête HTTP `Authorization: Bearer`.                                                                                              |
| `${SECRET_NAME}`              | Si elle est configurée, la valeur d'un secret configuré dans le [webhook](#create-a-webhook). Remplacez `SECRET_NAME` par le nom du secret.                                                                                                                                                    |

<div id="payload-examples">
  ### Exemples de charges utiles
</div>

Les exemples suivants montrent des charges utiles de webhook pour des cas d’usage courants. Les exemples montrent comment utiliser les [variables de charge utile](#payload-variables).

<Tabs>
  <Tab title="Déclenchement sur dépôt GitHub">
    <Note>
      Vérifiez que vos tokens d’accès disposent des autorisations requises pour déclencher votre flux de travail GitHub Actions. Pour plus d’informations, [voir la documentation GitHub sur l’événement repository dispatch](https://docs.github.com/en/rest/repos/repos?#create-a-repository-dispatch-event).
    </Note>

    Envoyez un `repository dispatch` depuis W\&B pour déclencher une action GitHub. Par exemple, supposons que vous ayez un fichier de flux de travail GitHub qui utilise un `repository dispatch` comme déclencheur pour la clé `on` :

    ```yaml theme={null}
    on:
    repository_dispatch:
      types: BUILD_AND_DEPLOY
    ```

    La charge utile du dépôt peut se présenter comme suit :

    ```json theme={null}
    {
      "event_type": "BUILD_AND_DEPLOY",
      "client_payload":
      {
        "event_author": "${event_author}",
        "artifact_version": "${artifact_version}",
        "artifact_version_string": "${artifact_version_string}",
        "artifact_collection_name": "${artifact_collection_name}",
        "project_name": "${project_name}",
        "entity_name": "${entity_name}"
        }
    }
    ```

    <Note>
      La clé `event_type` dans la charge utile du webhook doit correspondre au champ `types` du fichier YAML du flux de travail GitHub.
    </Note>

    Le contenu et l’emplacement des chaînes de modèle générées dépendent de l’événement ou de la version du modèle pour lesquels vous avez configuré l’automation. `${event_type}` aura pour rendu soit `LINK_ARTIFACT`, soit `ADD_ARTIFACT_ALIAS`. Voici un exemple de correspondance :

    ```text theme={null}
    ${event_type} --> "LINK_ARTIFACT" or "ADD_ARTIFACT_ALIAS"
    ${event_author} --> "<wandb-user>"
    ${artifact_version} --> "wandb-artifact://_id/QXJ0aWZhY3Q6NTE3ODg5ODg3"
    ${artifact_version_string} --> "<entity>/model-registry/<registered_model_name>:<alias>"
    ${artifact_collection_name} --> "<registered_model_name>"
    ${project_name} --> "model-registry"
    ${entity_name} --> "<entity>"
    ```

    Utilisez des chaînes de gabarit pour transmettre dynamiquement le contexte de W\&B à GitHub Actions et à d'autres outils. Si ces outils peuvent appeler des scripts Python, ils peuvent utiliser les artifacts de modèle enregistrés via l'[API W\&B](/fr/models/artifacts/download-and-use-an-artifact).

    Pour plus d'informations, voir les ressources suivantes :

    * Pour plus d'informations sur repository dispatch, consultez la [documentation officielle sur GitHub Marketplace](https://github.com/marketplace/actions/repository-dispatch).
    * Regardez les vidéos [Webhook Automations for Model Evaluation](https://www.youtube.com/watch?v=7j-Mtbo-E74\&ab_channel=Weights%26Biases) et [Webhook Automations for Model Deployment](https://www.youtube.com/watch?v=g5UiAFjM2nA\&ab_channel=Weights%26Biases), qui expliquent comment créer des automatisations pour l'évaluation et le déploiement de modèles.
    * Consultez le rapport W\&B [Model CI/CD with W\&B](https://wandb.ai/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw), qui montre comment utiliser une automatisation webhook GitHub Actions pour la CI de modèles.
    * Pour un exemple de CI de modèles avec un webhook Modal Labs, consultez le [dépôt GitHub wandb-modal-webhook](https://github.com/hamelsmu/wandb-modal-webhook).
  </Tab>

  <Tab title="Notification de Microsoft Teams">
    Cet exemple de payload montre comment notifier votre canal Teams au moyen d’un webhook :

    ```json theme={null}
    {
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "summary": "New Notification",
    "sections": [
      {
        "activityTitle": "Notification from WANDB",
        "text": "This is an example message sent via Teams webhook.",
        "facts": [
          {
            "name": "Author",
            "value": "${event_author}"
          },
          {
            "name": "Event Type",
            "value": "${event_type}"
          }
        ],
        "markdown": true
      }
    ]
    }
    ```

    Vous pouvez utiliser des template strings pour injecter des données W\&B dans votre payload au moment de l’exécution. Voir l’[exemple Teams](#microsoft-teams-notification).
  </Tab>

  <Tab title="Notifications Slack">
    <Note>
      Cette section est conservée à titre historique. Si vous utilisez un webhook pour intégrer Slack, W\&B vous recommande de mettre à jour votre configuration pour utiliser l’[intégration Slack](/fr/models/automations/create-automations/slack) à la place.
    </Note>

    Configurez votre application Slack et ajoutez une intégration de webhook entrant en suivant les instructions de la [documentation de l’API Slack](https://api.slack.com/messaging/webhooks). Assurez-vous d’utiliser le secret indiqué sous `Bot User OAuth Token` comme token d’accès de votre webhook W\&B.

    Voici un exemple de payload :

    ```json theme={null}
    {
        "text": "New alert from WANDB!",
    "blocks": [
        {
                "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Registry event: ${event_type}"
            }
        },
            {
                "type":"section",
                "text": {
                "type": "mrkdwn",
                "text": "New version: ${artifact_version_string}"
            }
            },
            {
            "type": "divider"
        },
            {
                "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Author: ${event_author}"
            }
            }
        ]
    }
    ```
  </Tab>
</Tabs>

<div id="troubleshoot-your-webhook">
  ## Dépanner votre webhook
</div>

Si un webhook ne fonctionne pas comme prévu, vous pouvez le dépanner de manière interactive avec la W\&B App UI ou par programmation à l’aide d’un script shell. Vous pouvez dépanner un webhook lors de sa création ou après coup.

Pour plus de détails sur le format utilisé par W\&B pour la requête `POST`, veuillez vous référer à l’onglet **Script shell**.

<Tabs>
  <Tab title="W&B App UI">
    Un administrateur de l’équipe peut tester un webhook de manière interactive avec la W\&B App UI.

    1. Accédez à la page de votre équipe, puis cliquez sur **Settings**.
    2. Faites défiler jusqu’à la section **Webhooks**.
    3. Cliquez sur le menu **d’actions (<Icon icon="ellipsis" iconType="solid" />)** à côté du nom de votre webhook.
    4. Sélectionnez **Test**.
    5. Dans le panneau de l’UI qui s’affiche, collez votre requête `POST` dans le champ qui apparaît.
           <Frame>
             <img src="https://mintcdn.com/wb-21fd5541/mmuC1X8m1VKb0ElQ/images/models/webhook_ui.png?fit=max&auto=format&n=mmuC1X8m1VKb0ElQ&q=85&s=2964c1c27b735184b9d6731eaead0598" alt="Démonstration du test d’une charge utile de webhook" width="2610" height="1764" data-path="images/models/webhook_ui.png" />
           </Frame>
    6. Cliquez sur **Test webhook**. Dans la W\&B App UI, W\&B affiche la réponse de votre point de terminaison.
           <Frame>
             <img src="https://mintcdn.com/wb-21fd5541/mmuC1X8m1VKb0ElQ/images/models/webhook_ui_testing.gif?s=2f73142a5af1225227377332cedc883d" alt="Démonstration du test d’un webhook" width="2396" height="2304" data-path="images/models/webhook_ui_testing.gif" />
           </Frame>

    Regardez la vidéo [Testing Webhooks in W\&B](https://www.youtube.com/watch?v=bl44fDpMGJw\&ab_channel=Weights%26Biases) pour voir une démonstration.
  </Tab>

  <Tab title="Script shell">
    Ce script shell montre une méthode pour générer une requête `POST` similaire à celle que W\&B envoie à votre automatisation webhook lorsqu’il est déclenché.

    Copiez-collez le code ci-dessous dans un script shell pour dépanner votre webhook. Indiquez vos propres valeurs pour :

    * `ACCESS_TOKEN`
    * `SECRET`
    * `PAYLOAD`
    * `API_ENDPOINT`

    ```bash webhook_test.sh theme={null}
    #!/bin/bash

    # Votre jeton d’accès et votre secret
    ACCESS_TOKEN="your_api_key"
    SECRET="your_api_secret"

    # URL du point de terminaison de votre webhook
    API_ENDPOINT="https://your.webhook.endpoint/path"

    # Les données que vous souhaitez envoyer (par exemple, au format JSON)
    PAYLOAD='{"key1": "value1", "key2": "value2"}'

    # Générez la signature HMAC. Pour des raisons de sécurité, W&B inclut l’en-tête
    # X-Wandb-Signature calculé à partir de la charge utile et du secret partagé
    # associé au webhook à l’aide de HMAC avec SHA-256.
    SIGNATURE=$(echo -n "$PAYLOAD" | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $2}')

    # Effectuez la requête cURL
    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $ACCESS_TOKEN" \
      -H "X-Wandb-Signature: $SIGNATURE" \
      -d "$PAYLOAD" "$API_ENDPOINT"
    ```
  </Tab>
</Tabs>
