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
- Gebruik een van de volgende abonnementen:
- Azure, als u Logic Apps gebruikt
- Power Automate
- Basiservaring bij het bouwen van logische apps of stromen en aangepaste connectors.
- Als u Logic Apps gebruikt, gaat u eerst naar Een aangepaste connector voor Azure Logic Apps maken
- Basiskennis van webhooks.
- Basiskennis van de OpenAPI-specificatie (voorheen bekend als Swagger).
- Een GitHub-account.
- De voorbeelddefinitie van OpenAPI voor deze zelfstudie.
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.
Navigeer naar GitHub en meld u aan als u dat nog niet hebt gedaan.
Selecteer uw profielfoto in de rechterbovenhoek en kies vervolgens in het menu de optie Instellingen.
Kies in het menu aan de linkerkant de optie Instellingen voor ontwikkelaars en kies vervolgens Persoonlijke toegangstokens.
Kies de knop Nieuw token genereren en bevestig vervolgens uw wachtwoord indien hierom wordt gevraagd.
Voer een beschrijving in het vak Tokenbeschrijving een beschrijving in.
Schakel het selectievakje bij admin:repo_hook in.
Kies de knop Token genereren.
Noteer het 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
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.
Kies in het menu van uw connector de optie Logic Apps-connector en kies vervolgens Bewerken.
Kies onder Algemeen de optie Een OpenAPI-bestand uploaden en navigeer vervolgens naar het OpenAPI-bestand dat u hebt gedownload.
De OpenAPI-definitie importeren voor Power Automate
Ga naar flow.microsoft.com.
Kies het tandwielpictogram in de rechterbovenhoek en kies vervolgens Aangepaste connectors.
Kies Aangepaste connector maken en kies vervolgens Een Postman-verzameling importeren.
Voer een naam in voor de aangepaste connector, navigeer vervolgens naar het OpenAPI-bestand dat u hebt gedownload of gemaakt en kies Verbinden.
Parameter Weergegeven als Aangepaste connectortitel "GitHubDemo"
Het maken van de aangepaste connector voltooien
Ga naar de pagina Algemeen en kies Doorgaan.
Selecteer op de pagina Beveiliging onder Verificatietype de optie Basisverificatie.
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.
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.
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" Ga naar de pagina Beveiliging om basisverificatie te configureren zoals u deed in de vorige sectie.
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.
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
In het gebied Aanvraag wordt informatie weergegeven op basis van de HTTP-aanvraag voor de actie. Kies Importeren uit voorbeeld.
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.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" } }
In het gebied Respons wordt informatie weergegeven op basis van de HTTP-respons voor de actie. Kies Standaardantwoord toevoegen.
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.
{ "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" } } }
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 objectconfig
.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.
Kies in flow.microsoft.com, boven aan de pagina de optie Mijn stromen.
Kies Leeg item maken en kies vervolgens op de volgende pagina de optie Honderden connectors en triggers zoeken.
Zoek in de ontwerpfunctie van Power Automate naar de aangepaste connector die u eerder hebt geregistreerd.
Kies het item in de lijst dat u als trigger wilt gebruiken.
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.
Parameter Value Verbindingsnaam Een beschrijvende naam Gebruikersnaam Uw GitHub-gebruikersnaam Wachtwoord Het persoonlijke toegangstoken dat u eerder hebt gemaakt Voer details in over de opslagplaats die u wilt bewaken. Mogelijk herkent u de velden van het object WebhookRequestBody in het OpenAPI-bestand.
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.
Kies + Nieuwe stap en kies vervolgens Een actie toevoegen.
Zoek en selecteer de actie Pushmelding.
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.
Parameter Waarde Verbindingsnaam Een beschrijvende naam Gebruikersnaam Uw GitHub-gebruikersnaam Wachtwoord Het persoonlijke toegangstoken dat u eerder hebt gemaakt Geef uw stroom boven aan de pagina een naam en kies Stroom maken.
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
- Een aangepaste connector makien voor een web-API
- Uw API en connector verifiëren met Microsoft Entra ID
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.