Een webhook gebruiken als trigger voor Azure Logic Apps en Power Automate

Webhooks zijn eenvoudige HTTP-callbacks die worden gebruikt om gebeurtenismeldingen te verzenden. Met zowel Azure Logic Apps als Power Automate kunt u gebruikmaken van webhooks als triggers. Een logische app of stroom luistert naar deze trigger en voert een actie uit wanneer de trigger wordt geactiveerd. Deze zelfstudie laat zien hoe u een webhook als trigger kunt gebruiken.

Notitie

GitHub wordt gebruikt als voorbeeld van een service die meldingen kan verzenden via webhooks, maar de technieken die hier worden gedemonstreerd, kunnen worden gebruikt voor alle services waarvoor webhooks worden gebruikt.

Vereisten

De OpenAPI-definitie

Webhooks worden in Logic Apps en Power Automate geïmplementeerd als onderdeel van een aangepaste connector, dus u moet een OpenAPI-definitie opgeven die de vorm van de webhook definieert. Als u een trigger wilt maken, maar geen OpenAPI-definitie hebt, kunt u de gebruikersinterface voor triggers in de wizard voor aangepaste connectors gebruiken om webhooktriggers te definiëren.

De OpenAPI-definitie bevat drie onderdelen die essentieel zijn om de webhook functioneel te maken:

  • De webhook maken
  • De binnenkomende hookaanvraag via de API (in dit geval GitHub) definiëren
  • De webhook verwijderen

De webhook maken

De webhook wordt gemaakt aan de GitHub-zijde, middels een HTTP POST naar /repos/{owner}/{repo}/hooks. Wanneer een nieuwe logische app of stroom wordt gemaakt, wordt deze naar deze URL gepubliceerd met behulp van de trigger die is gedefinieerd in de OpenAPI-definitie. Er vindt ook publicatie naar de URL plaats als de trigger wordt gewijzigd. In het onderstaande voorbeeld bevat de eigenschap post het schema van de aanvraag die naar GitHub wordt gepubliceerd.

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

Belangrijk

De eigenschap "x-ms-trigger": "single" is een schema-uitbreiding die voor Logic Apps en Power Automate aangeeft hoe de webhook moet worden weergeven in de lijst met beschikbare triggers in de ontwerpfunctie, dus zorg ervoor dat deze wordt opgenomen.

De binnenkomende hookaanvraag via de API definiëren

De vorm van de inkomende hook-aanvraag (de melding van GitHub aan Logic Apps of Power Automate) is gedefinieerd in de aangepaste eigenschap x-ms-notification-content, zoals is weergegeven in het vorige voorbeeld. De eigenschap hoeft niet de gehele inhoud van de aanvraag te bevatten, alleen de onderdelen die u wilt gebruiken in uw logische app of stroom.

De webhook verwijderen

De OpenAPI-definitie moet een definitie bevatten voor het verwijderen van de webhook. Logic Apps en Power Automate proberen de webhook te verwijderen als u de trigger bijwerkt en als u de logische app of stroom verwijdert.

"/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 Hook being deleted",
        "required": true,
        "type": "string"
        }
    ]
    }
},

Er is geen extra header opgenomen voor de aanroep om de webhook te verwijderen. Dezelfde verbinding die in de connector wordt gebruikt, wordt ook gebruikt voor de aanroep om de webhook te verwijderen.

Belangrijk

De API moet een Location-HTTP-header in de 201-respons bevatten op het moment dat de webhook wordt gemaakt, anders kan Logic Apps of Power Automate de webhook niet verwijderen. De Location-header moet het pad naar de webhook bevatten die wordt gebruikt met HTTP DELETE. De Location die is opgenomen in de reactie van GitHub heeft bijvoorbeeld de volgende indeling: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Verificatie inschakelen in GitHub

De API die de webhook-aanvraag naar Logic Apps of Power Automate verzendt, gebruikt doorgaans een vorm van verificatie. GitHub vormt daarop geen uitzondering. GitHub ondersteunt verschillende soorten verificatie; we gebruiken persoonlijke GitHub-toegangstokens voor deze zelfstudie.

  1. Navigeer naar GitHub en meld u aan als u dat nog niet hebt gedaan.

  2. Selecteer uw profielfoto in de rechterbovenhoek en kies vervolgens in het menu de optie Instellingen.

    Instellingen

  3. Kies in het menu aan de linkerkant de optie Instellingen voor ontwikkelaars en kies vervolgens Persoonlijke toegangstokens.

  4. Kies de knop Nieuw token genereren en bevestig vervolgens uw wachtwoord indien hierom wordt gevraagd.

    Nieuwe token genereren

  5. Voer een beschrijving in het vak Tokenbeschrijving een beschrijving in.

  6. Schakel het selectievakje bij admin:repo_hook in.

    admin:repo_hook

  7. Kies de knop Token genereren.

  8. Noteer het nieuwe token.

    Nieuwe token

    Belangrijk

    Het is niet mogelijk om opnieuw toegang te verkrijgen tot dit token. Kopieer het token en plak het ergens om het verderop in de zelfstudie te kunnen gebruiken.

De OpenAPI-definitie importeren

Begin door de OpenAPI-definitie voor Logic Apps of voor Power Automate te importeren.

De OpenAPI-definitie importeren voor Logic Apps

  1. Ga naar de Azure-portal en open de Logic Apps-connector die u eerder hebt gemaakt in Een aangepaste connector voor Azure Logic Apps maken.

  2. Kies in het menu van uw connector de optie Logic Apps-connector en kies vervolgens Bewerken.

    Logic Apps-connector bewerken

  3. Kies onder Algemeen de optie Een OpenAPI-bestand uploaden en navigeer vervolgens naar het OpenAPI-bestand dat u hebt gedownload.

    Schermopname met de optie OpenAPI-bestand uploaden.

De OpenAPI-definitie importeren voor Power Automate

  1. Ga naar flow.microsoft.com.

  2. Kies het tandwielpictogram in de rechterbovenhoek en kies vervolgens Aangepaste connectors.

    Aangepaste connectors

  3. Kies Aangepaste connector maken en kies vervolgens Een Postman-verzameling importeren.

    Aangepaste connector maken

  4. Voer een naam in voor de aangepaste connector, navigeer vervolgens naar het OpenAPI-bestand dat u hebt gedownload of gemaakt en kies Verbinden.

    Schermopname met het veld voor het invoeren van een naam.

    Parameter Weergegeven als
    Aangepaste connectortitel "GitHubDemo"

Het maken van de aangepaste connector voltooien

  1. Ga naar de pagina Algemeen en kies Doorgaan.

  2. Selecteer op de pagina Beveiliging onder Verificatietype de optie Basisverificatie.

  3. In het gedeelte Basisverificatie voert u voor de labelvelden de gebruikersnaam en het wachtwoord in. Deze labels worden alleen weergegeven wanneer de trigger wordt gebruikt in een logische app of stroom.

    Basisverificatie

  4. Controleer boven aan de wizard of de naam is ingesteld op "GitHubDemo" en kies vervolgens Connector maken.

U bent er nu klaar voor om de trigger te gebruiken in een logische app of stroom of u kunt meer lezen over het maken van triggers vanuit de gebruikersinterface.

Webhook-triggers maken vanuit de gebruikersinterface

In deze sectie laten we u zien hoe u een trigger in de gebruikersinterface kunt maken zonder triggerdefinities in uw OpenAPI-definitie. Begin met een basislijn voor uw OpenAPI-definitie of begin helemaal opnieuw in de wizard voor aangepaste connectors.

  1. Geef op de pagina Algemeen een beschrijving en een URL op.

    Parameter Value
    Beschrijving "GitHub is een opslagplaats voor sociale broncodes."
    URL "api.github.com"
  2. Ga naar de pagina Beveiliging om basisverificatie te configureren zoals u deed in de vorige sectie.

  3. Kies op de pagina Definitie de optie + Nieuwe trigger en vul de beschrijving voor uw trigger in. In dit voorbeeld maakt u een trigger die wordt geactiveerd wanneer een pull-aanvraag wordt gedaan bij een opslagplaats.

    Trigger-1 maken

    Parameter Value
    Samenvatting "Triggers wanneer een pull-aanvraag plaatsvindt aan een geselecteerde opslagplaats"
    Beschrijving "Triggers wanneer een pull-aanvraag plaatsvindt aan een geselecteerde opslagplaats"
    Bewerkings-id "webhook-PR-trigger"
    Zichtbaarheid "geen" (zie hieronder voor meer informatie)
    Type trigger "Webhook"

    De eigenschap Zichtbaarheid voor bewerkingen en parameters in een logische app of stroom heeft de volgende opties:

    • geen: wordt normaal weergegeven in de logische app of stroom
    • geavanceerd: verborgen in een aanvullend menu
    • intern: verborgen voor de gebruiker
    • belangrijk: altijd eerst voor de gebruiker weergegeven
  4. In het gebied Aanvraag wordt informatie weergegeven op basis van de HTTP-aanvraag voor de actie. Kies Importeren uit voorbeeld.

    Definitiepagina - Importeren uit voorbeeld

  5. Definieer de aanvraag voor de webhook-trigger en kies vervolgens Importeren. We bieden u een voorbeeld om te importeren (onder de afbeelding). Zie de GitHub API-naslaginformatie voor meer informatie. Logic Apps en Power Automate voegen automatisch standaard content-type- en beveiligingsheaders toe, dus die hoeft u niet te definiëren wanneer u een voorbeeld importeert.

    Trigger-2 maken

    Parameter Value
    Term "POST"
    URL "https://api.github.com/repos/{owner}/{repo}/hooks"
    Tekst Zie hieronder
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. In het gebied Respons wordt informatie weergegeven op basis van de HTTP-respons voor de actie. Kies Standaardantwoord toevoegen.

    Pagina Definitie - respons

  7. Definieer de respons voor de webhook-trigger en kies vervolgens Importeren. Ook nu bieden u weer een voorbeeld om te importeren. Zie de GitHub API-naslaginformatie voor meer informatie.

    Trigger-3 maken

    {
      "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. Ga naar het gebied Configuratie van trigger en selecteer de parameter die de callback-URL-waarde van GitHub moet ontvangen. Dit is de eigenschap url in het object config.

    Trigger-4 maken

  9. Voer boven aan de wizard een naam in en kies vervolgens Connector maken.

De webhook als trigger gebruiken

Nu u alles hebt geconfigureerd, kunt u de webhook in een logische app of stroom gebruiken. Vervolgens maakt u een stroom waarbij een pushmelding naar de mobiele Power Automate-app wordt verzonden zodra de GitHub-opslagplaats een git-push ontvangt.

  1. Kies in flow.microsoft.com, boven aan de pagina de optie Mijn stromen.

  2. Kies Leeg item maken en kies vervolgens op de volgende pagina de optie Honderden connectors en triggers zoeken.

    Connectors zoeken

  3. Zoek in de ontwerpfunctie van Power Automate naar de aangepaste connector die u eerder hebt geregistreerd.

    Nieuwe trigger

    Kies het item in de lijst dat u als trigger wilt gebruiken.

  4. Aangezien dit de eerste keer is dat u deze aangepaste connector gebruikt, moet er verbinding mee worden gemaakt. Voer verbindingsgegevens in en kies vervolgens Maken.

    Nieuwe verbinding

    Parameter Value
    Verbindingsnaam Een beschrijvende naam
    Gebruikersnaam Uw GitHub-gebruikersnaam
    Wachtwoord Het persoonlijke toegangstoken dat u eerder hebt gemaakt
  5. Voer details in over de opslagplaats die u wilt bewaken. Mogelijk herkent u de velden van het object WebhookRequestBody in het OpenAPI-bestand.

    Gegevens van opslagplaats

    Parameter Waarde
    eigenaar De eigenaar van de opslagplaats die moet worden bijgehouden
    opslagplaats De opslagplaats die moet worden bijgehouden

    Belangrijk

    Gebruik een opslagplaats waarvoor uw account machtigingen heeft. U kunt hiervoor het beste uw eigen opslagplaats gebruiken.

  6. Kies + Nieuwe stap en kies vervolgens Een actie toevoegen.

  7. Zoek en selecteer de actie Pushmelding.

    Pushmelding

  8. Voer wat tekst in het veld Tekst en de andere velden in met behulp van waarden uit het dialoogvenster met dynamische inhoud. Deze waarden zijn afkomstig uit het object WebhookPushResponse in het OpenAPI-bestand.

    Gegevens van pushmelding

    Parameter Waarde
    Verbindingsnaam Een beschrijvende naam
    Gebruikersnaam Uw GitHub-gebruikersnaam
    Wachtwoord Het persoonlijke toegangstoken dat u eerder hebt gemaakt
  9. Geef uw stroom boven aan de pagina een naam en kies Stroom maken.

    Stroomnaam

Verificatie en probleemoplossing

Als u wilt controleren of alles goed is ingesteld, kiest u Mijn stromen en vervolgens het informatiepictogram naast de nieuwe stroom om de uitvoeringsgeschiedenis weer te geven:

  • U moet ten minste één geslaagde uitvoering zien vanaf het moment dat de webhook is gemaakt. Dit geeft aan dat de webhook is gemaakt aan de GitHub-zijde.

  • Als de uitvoering is mislukt, bekijkt u meer details om te ontdekken waarom deze is mislukt. Als de fout is veroorzaakt door de reactie '404 niet gevonden', beschikt uw GitHub-account waarschijnlijk niet over de juiste machtigingen om een webhook te maken voor de opslagplaats die u gebruikt.

Samenvatting

Als alles goed is geconfigureerd, ontvangt u nu pushmeldingen in de mobiele Power Automate-app wanneer er een git-push plaatsvindt in de GitHub-opslagplaats die u hebt geselecteerd. Met de bovenstaande procedure kunt u alle met webhooks compatibele services gebruiken als trigger in uw stromen.

Volgende stappen

Feedback geven

We stellen feedback over problemen met ons connectorplatform of ideeën voor nieuwe functies zeer op prijs. Om feedback te geven, gaat u naar Problemen melden of hulp krijgen met connectoren en selecteer uw feedbacktype.