Utiliser un webhook en tant que déclencheur pour Azure Logic Apps et Power Automate

Les webhooks sont des rappels HTTP simples qui fournissent des notifications d’événements lorsqu’un événement se produit dans un service web. Dans Azure Logic Apps et Power Automate vous pouvez utiliser des webhooks comme déclencheurs. Une application logique ou un flux écoute ce déclencheur et exécute une action chaque fois que le déclencheur se déclenche. Ce tutoriel montre comment utiliser un webhook comme déclencheur via un connecteur personnalisé défini avec une spécification OpenAPI.

Remarque

Cet article utilise GitHub comme exemple de service qui peut envoyer des notifications via des webhooks, mais vous pouvez étendre les techniques présentées ici à n’importe quel service qui autorise les webhooks.

Conditions préalables

Activer l’authentification dans GitHub

Une API de service web qui envoie une demande de webhook à Logic Apps ou Power Automate utilise généralement une forme d’authentification et GitHub n’est pas une exception. GitHub prend en charge plusieurs types d’authentification. Ce tutoriel utilise des jetons d’accès personnels GitHub à granularité fine.

  1. Accédez à GitHub et connectez-vous si ce n'est pas déjà fait.

  2. En haut à droite, sélectionnez votre image de profil, puis, dans le menu, sélectionnez Paramètres.

  3. Dans le menu de gauche, sélectionnez Paramètres du développeur.

  4. Sous Jetons d’accès personnels, sélectionnez Jetons affinés.

  5. Sélectionnez le bouton Générer un nouveau jeton , puis confirmez votre mot de passe si demandé.

  6. Entrez un nom de jeton et une description pour le jeton.

  7. Sous Expiration, sélectionnez une date d’expiration pour le jeton.

  8. Sous Accès au référentiel, sélectionnez Sélectionner uniquement les référentiels, puis sélectionnez le référentiel auquel vous souhaitez accorder l’accès.

  9. Sous Autorisations, sélectionnez Ajouter des autorisations>>Lecture et écriture.

  10. Sélectionnez le bouton Générer un jeton .

  11. Prenez note du nouveau jeton. Vous devez utiliser ce jeton ultérieurement lors de l’ajout de votre connecteur webhook en tant que déclencheur.

    Important

    Vous ne pouvez plus accéder à ce jeton. Copiez et collez-le quelque part pour l’utiliser plus loin dans le didacticiel.

Définir le webhook dans la définition OpenAPI

Vous implémentez des webhooks dans Logic Apps et Power Automate dans le cadre d’un connecteur personnalisé. Pour créer le connecteur, vous devez fournir une définition OpenAPI qui définit la forme du webhook. Ce tutoriel utilise un exemple de définition OpenAPI téléchargé pour GitHub webhooks.

Si vous souhaitez créer un déclencheur mais que vous n’avez pas de définition OpenAPI à partir de laquelle travailler, utilisez l’interface utilisateur des déclencheurs dans l’Assistant Connecteur personnalisé pour définir des déclencheurs de webhook.

L’exemple de définition OpenAPI contient trois parties essentielles à l’utilisation du webhook :

  • Création du webhook
  • Définition de la demande de hook entrante à partir de l’API de service web (dans cet exemple de didacticiel, GitHub)
  • Suppression du webhook

Le connecteur utilise cette définition OpenAPI pour comprendre comment créer, recevoir et supprimer des webhooks pour le référentiel GitHub.

Créer le webhook

Le connecteur utilise l’API de service web (dans notre exemple, l’API REST GitHub) pour créer le webhook côté service web en envoyant une requête HTTP POST au point de terminaison de création de webhook approprié pour le service web (/repos/{owner}/{repo}/hooksdans le cas de GitHub).

Lorsque vous créez une application logique ou un flux à l’aide du connecteur, le connecteur envoie une requête POST au point de terminaison de création du webhook du service web tel que défini dans la définition OpenAPI du connecteur. Il envoie également une requête POST à cette URL si vous modifiez l’application logique ou le déclencheur de flux. Dans l’exemple de configuration de chemin OpenAPI suivant, la post propriété contient le schéma de la demande de création de webhook à envoyer à l’API REST GitHub.

"/repos/{owner}/{repo}/hooks": {
    "x-ms-notification-content": {
        "description": "Details for Webhook",
        "schema": {
            "$ref": "#/definitions/WebhookPushResponse"
        }
    },
    "post": {
        "description": "Creates a GitHub webhook",
        "summary": "Triggers when a PUSH event occurs",
        "operationId": "webhook-trigger",
        "x-ms-trigger": "single",
        "parameters": [
            {
            "name": "owner",
            "in": "path",
            "description": "Name of the owner of targeted repository",
            "required": true,
            "type": "string"
            },
            {
            "name": "repo",
            "in": "path",
            "description": "Name of the repository",
            "required": true,
            "type": "string"
            },
            {
            "name": "Request body of webhook",
            "in": "body",
            "description": "This is the request body of the Webhook",
            "schema": {
                "$ref": "#/definitions/WebhookRequestBody"
            }
            }
        ],
        "responses": {
            "201": {
            "description": "Created",
            "schema": {
                "$ref": "#/definitions/WebhookCreationResponse"
                }
            }
        }
    }
},

Important

La "x-ms-trigger": "single" propriété est une extension de schéma qui indique à Logic Apps et Power Automate d’afficher ce webhook dans la liste des déclencheurs disponibles dans le concepteur. Veillez à l’inclure.

Définir la demande entrante de raccordement à partir de l’API

Définissez la forme de la demande de hook entrante (notification de GitHub à Logic Apps ou Power Automate) dans la propriété personnaliséex-ms-notification-content, comme indiqué dans l’exemple précédent. La requête n’a pas besoin de contenir l’intégralité du contenu de la requête, uniquement les parties que vous souhaitez utiliser dans votre application logique ou flux.

Supprimer le webhook

Incluez une définition pour supprimer le webhook dans la définition OpenAPI. Logic Apps et Power Automate tentent de supprimer le webhook existant lorsque vous mettez à jour le déclencheur ou lorsque vous supprimez l’application logique ou le flux.

"/repos/{owner}/{repo}/hooks/{hook_Id}": {
    "delete": {
        "description": "Deletes a Github webhook",
        "operationId": "DeleteTrigger",
        "parameters": [
            {
                "name": "owner",
                "in": "path",
                "description": "Name of the owner of targeted repository",
                "required": true,
                "type": "string"
            },
            {
                "name": "repo",
                "in": "path",
                "description": "Name of the repository",
                "required": true,
                "type": "string"
            },
            {
                "name": "hook_Id",
                "in": "path",
                "description": "ID of the webhook being deleted",
                "required": true,
                "type": "string"
            }
        ]
    }
},

Aucun en-tête n’est inclus dans l’appel de suppression du webhook. L’appel de suppression du webhook utilise la même connexion que le connecteur.

Important

Pour activer Logic Apps ou Power Automate pour supprimer un webhook, l'API du service web doit inclure un Location en-tête HTTP dans la réponse 201 lorsque le webhook est créé. L’en-tête Location doit contenir le chemin d’accès au webhook utilisé avec la méthode HTTP DELETE. Par exemple, l'en-tête inclus dans la Location réponse de GitHub suit ce format : https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Importer la définition OpenAPI

Commencez par importer la définition OpenAPI pour Logic Apps ou pour Power Automate.

Importez la définition OpenAPI pour Logic Apps

  1. Accédez au Portail Azure et ouvrez le connecteur Logic Apps que vous avez créé dans Créer un connecteur personnalisé Azure Logic Apps.

  2. Dans le menu de votre connecteur, choisissez Connecteur Logic Apps, puis sélectionnez Modifier.

    Capture d’écran de l’option Modifier pour le connecteur Logic Apps.

  3. Sous Général, sélectionnez Charger un fichier OpenAPI, puis accédez à l’exemple de fichier OpenAPI que vous avez téléchargé.

    Capture d’écran de l’option Charger un fichier OpenAPI.

Importer la définition OpenAPI pour Power Automate

  1. Accédez à https://make.powerautomate.com/.

  2. Dans le coin supérieur droit, sélectionnez l’icône d’engrenage, puis sélectionnez Connecteurs personnalisés.

    Capture d’écran du menu d’icône d’engrenage avec l’option Connecteurs personnalisés.

  3. Sélectionnez Créer un connecteur personnalisé, puis importez une collection Postman.

    Capture d’écran du menu Créer un connecteur personnalisé avec les options d’importation.

  4. Entrez un nom pour le connecteur personnalisé, accédez à l’exemple de fichier OpenAPI que vous avez téléchargé, puis sélectionnez Se connecter.

    Capture d’écran du champ pour entrer un nom de connecteur personnalisé.

    Paramètre Valeur
    Titre du connecteur personnalisé "GitHubDemo"

Terminer la création du connecteur personnalisé

  1. Dans la page Général , sélectionnez Continuer.

  2. Sur la page Sécurité, sous Type d’authentification, sélectionnez Authentification de base.

  3. Dans la section Authentification de base, pour les champs d’étiquette, entrez le nom d’utilisateur et le mot de passe. Ces étiquettes s’affichent lorsque vous utilisez le déclencheur dans une application logique ou un flux.

    Capture d’écran des champs d’étiquette d’authentification de base.

  4. En haut de l’assistant, vérifiez que le nom est bien « GitHubDemo », puis sélectionnez Créer un connecteur.

Vous êtes maintenant prêt à utiliser le déclencheur dans une application logique ou un flux, ou vous pouvez découvrir comment créer des déclencheurs à partir de l’interface utilisateur.

Créer des déclencheurs de webhook à partir de l’interface utilisateur

Dans cette section, vous allez apprendre à créer un déclencheur dans l’interface utilisateur sans avoir de définitions de déclencheur dans votre définition OpenAPI. Commencez avec une définition OpenAPI de base ou recommencez à zéro dans l’assistant de connecteur personnalisé.

  1. Dans la page Général , veillez à spécifier une description et une URL.

    Paramètre Valeur
    Description « GitHub est un référentiel de code source social. »
    URL "api.github.com"
  2. Sur la page Sécurité, configurez l’authentification de base comme vous l’avez fait dans la section précédente.

  3. Dans la page Définition , choisissez Nouveau déclencheur et renseignez la description de votre déclencheur. Dans cet exemple, vous créez un déclencheur qui se déclenche lorsqu’une demande de tirage (pull request) est effectuée dans un référentiel.

    Capture d’écran des nouveaux champs d’informations générales du déclencheur.

    Paramètre Valeur
    Résumé « Se déclenche lorsqu’une demande d’extraction est effectuée vers un référentiel sélectionné »
    Description « Se déclenche lorsqu’une demande d’extraction est effectuée vers un référentiel sélectionné »
    ID d’opération "webhook-PR-trigger"
    Visibilité « Aucun » (pour plus d’informations, voir ci-dessous)
    Type de déclencheur "Webhook"

    La propriété Visibilité pour les opérations et les paramètres dans une application ou un flux logique a les options suivantes :

    • aucun : s’affiche normalement dans l’application logique ou le flux
    • avancée : masqué sous un menu supplémentaire
    • interne : masqué pour l’utilisateur
    • importante : s’affiche toujours pour l’utilisateur en premier
  4. La zone Demande affiche des informations basées sur la demande HTTP pour l’action. Choisissez Importer à partir d’un exemple.

    Capture d’écran de la page Définition avec l’option Importer à partir de l’exemple.

  5. Définissez la demande du déclencheur webhook, puis sélectionnez Importer. Nous fournissons un exemple pour vous permettre d’importer (dans la section suivante). Pour plus d’informations, voir la Référence à l’API GitHub. Logic Apps et Power Automate ajoutent automatiquement des en-têtes de sécurité et standard content-type . Vous n’avez donc pas besoin de les définir lors de l’importation à partir d’un exemple.

    Capture d’écran de la boîte de dialogue d’importation de requête pour le déclencheur webhook.

    Paramètre Valeur
    Verbe « POST »
    URL "https://api.github.com/repos/{owner}/{repo}/hooks" ;
    Corps Voir ci-dessous
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. La zone Réponse affiche des informations basées sur la réponse HTTP pour l’action. Sélectionnez Ajouter la réponse par défaut.

    Capture d’écran de la zone Réponse de la page Définition avec l’option Ajouter une réponse par défaut.

  7. Définissez la réponse du déclencheur webhook, puis sélectionnez Importer. Nous vous fournissons aussi un exemple à importer. Pour plus d’informations, voir la Référence à l’API GitHub.

    Capture d’écran de la boîte de dialogue d’importation de réponse pour le déclencheur webhook.

    {
      "action": "opened",
      "number": 1,
      "pull_request": {
        "html_url": "https://github.com/baxterthehacker/public-repo/pull/1",
        "state": "open",
        "locked": false,
        "title": "Update the README with new information",
        "user": {
          "login": "baxterthehacker",
          "type": "User"
        }
      }
    }
    
  8. Dans la zone Configuration du déclencheur, sélectionnez le paramètre qui doit recevoir la valeur de l’URL de rappel de GitHub. Ce paramètre est la url propriété de l’objet config .

    Capture d’écran de la zone de configuration du déclencheur avec le paramètre URL de rappel sélectionné.

  9. En haut de l’assistant, entrez un nom, puis choisissez Créer un connecteur.

Utiliser le webhook comme déclencheur

Après avoir configuré tout, utilisez le webhook via le connecteur personnalisé dans une application logique ou un flux. Ensuite, créez un flux qui envoie un e-mail chaque fois que votre dépôt GitHub reçoit un push git.

  1. Dans https://make.powerautomate.com/, en haut de la page, sélectionnez Mes flux.

  2. Sélectionnez Créer à partir d’un champ vide.

    Capture d’écran de l’option Rechercher des centaines de connecteurs et de déclencheurs.

  3. Dans le concepteur Power Automate, recherchez le connecteur personnalisé que vous avez enregistré précédemment.

    Capture d’écran de la recherche du déclencheur de connecteur personnalisé dans le concepteur Power Automate.

  4. Sélectionnez l’élément dans la liste pour l’utiliser comme déclencheur.

  5. Étant donné que c’est la première fois que vous avez utilisé ce connecteur personnalisé, connectez-vous à celui-ci. Entrez les informations de connexion, puis sélectionnez Créer.

    Capture d’écran des nouveaux champs d’informations de connexion.

    Paramètre Valeur
    Nom de connexion Nom descriptif
    Nom d’utilisateur Votre nom d’utilisateur GitHub
    Mot de passe Jeton d’accès personnel que vous avez créé précédemment
  6. Saisissez des informations sur le dépôt que vous souhaitez surveiller. Vous pouvez reconnaître les champs de l’objet WebhookRequestBody dans le fichier OpenAPI.

    Capture d’écran des champs propriétaire et nom du référentiel pour le déclencheur.

    Paramètre Valeur
    propriétaire Propriétaire du référentiel à surveiller
    dépôt Le référentiel à surveiller

    Important

    Utilisez un dépôt auquel votre compte a accès. La méthode la plus simple consiste à utiliser votre propre dépôt.

  7. Sélectionnez Nouvelle étape>Ajouter une action.

  8. Recherchez et sélectionnez l’action Envoyer un e-mail (V2).

  9. Entrez du texte dans le champ Corps et les autres champs, en utilisant des valeurs de la boîte de dialogue de contenu dynamique. Les valeurs proviennent de l’objet WebhookPushResponse dans le fichier OpenAPI.

  10. En haut de la page, nommez votre flux, puis sélectionnez Créer un flux.

    Capture d’écran du champ nom du flux et bouton Créer un flux.

Vérification et résolution des problèmes

Pour vérifier que tout est configuré correctement, sélectionnez Mes flux, puis sélectionnez l’icône d’informations en regard du nouveau flux pour afficher l’historique des exécutions :

  • Vous devriez déjà voir au moins une exécution réussie lors de la création du webhook. Cette exécution indique que le webhook a été créé avec succès côté GitHub.
  • Si l’exécution a échoué, passez en revue les détails de l’exécution pour voir pourquoi elle a échoué. Si l'échec était dû à une 404 Not Found réponse, votre compte GitHub n'a probablement pas les autorisations appropriées pour créer un webhook sur le dépôt que vous avez utilisé.

Résumé

Si vous avez configuré tout correctement, vous recevez des notifications Push dans l’application mobile Power Automate chaque fois qu’un push Git se produit sur le référentiel GitHub que vous avez sélectionné. En utilisant le processus précédent, vous pouvez utiliser n’importe quel service compatible webhook comme déclencheur dans vos flux.

Étapes suivantes

Fournir des commentaires

Nous apprécions grandement les commentaires sur les problèmes liés à notre plate-forme de connecteurs ou les idées de nouvelles fonctionnalités. Pour fournir des commentaires, accédez à Soumettre des problèmes ou obtenir de l’aide avec les connecteurs et sélectionnez votre type de commentaire.