Bruge en webhook som udløser til Azure Logic Apps og Power Automate
Webhooks er enkle HTTP-tilbagekald, der bruges til at give hændelsesmeddelelser. Du kan bruge webhooks som udløsere i både Azure Logic Apps og Power Automate. En logikapp eller et flow lytter efter denne udløser og udfører en handling, når udløseren aktiveres. I dette selvstudium vises, hvordan du kan bruge en webhook som udløser.
Bemærk
Vi vil bruge GitHub som et eksempel på en tjeneste, der kan sende beskeder via webhooks, men de teknikker, der er vist her, kan udvides til alle de tjenester, der bruger webhooks.
Forudsætninger
- Et af følgende abonnementer:
- Azure, hvis du bruger Logic Apps
- Power Automate
- Grundlæggende erfaring med oprettelse af logikapps eller flows og brugerdefinerede connectorer.
- Hvis du bruger Logic Apps, skal du først oprette en brugerdefineret connector til Azure Logic Apps.
- Grundlæggende forståelse af webhooks.
- Grundlæggende forståelse af OpenAPI-specifikationen (tidligere kaldet Swagger).
- En GitHub-konto.
- OpenAPI-JSON-eksempeldefinitionen, der bruges i dette selvstudium.
OpenAPI-definitionen
Webhooks implementeres i Logic Apps og Power Automate som en del af en brugerdefineret connector, så du skal angive en OpenAPI-definition, der definerer webhookens form. Hvis du vil oprette en udløser, men du ikke har en OpenAPI-definition, kan du bruge brugergrænsefladen for udløsere i guiden til brugerdefineret connector til at definere webhook-udløsere.
OpenAPI-definitionen indeholder tre dele, der er vigtige for at få webhooket til at fungere:
- Oprettelse af webhooket
- Definition af den indgående hook-anmodning fra API'en (i dette tilfælde GitHub)
- Sletning af webhooket
Oprettelse af webhooket
Webhooket er oprettet på GitHub-siden af en HTTP-POST til /repos/{owner}/{repo}/hooks. Når der oprettes en ny logikapp eller et nyt flow, sendes der til denne URL-adresse ved hjælp af den udløser, der er defineret i OpenAPI-definitionen. Der sendes også til-URL-adressen, hvis udløseren ændres. I eksemplet nedenfor indeholder egenskaben post skemaet for den anmodning, der bliver sendt til 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"
}
}
}
}
},
Vigtigt
Egenskaben "x-ms-trigger": "single" er en skemaudvidelse, der beder Logic Apps og Power Automate om at vise denne webhook på listen over tilgængelige udløsere i designværktøjet, så sørg for at inkludere den.
Definition af den indgående hook-anmodning fra API'en
Den indgående hookanmodnings form (meddelelsen fra GitHub til Logic Apps eller Power Automate) er defineret i den brugerdefinerede egenskab x-ms-notification-content som vist i eksemplet ovenfor. Den behøver ikke at indeholde hele indholdet af anmodningen, blot de dele, du vil bruge i din logikapp eller et flow.
Sletning af webhooket
OpenAPI-definitionen skal indeholde en definition af, hvordan webhook kan slettes. Logic Apps og Power Automate forsøger at slette webhooken, hvis du opdaterer udløseren, og hvis du sletter logikappen eller flowet.
"/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"
}
]
}
},
Der er ikke inkluderet flere overskrifter til sletning af webhook-opkaldet. Den samme forbindelse, der bruges i connectoren, bruges også til sletning af webhook-opkaldet.
Vigtigt
Hvis Logic Apps eller Power Automate skal slette en webhook, skal API'en inkludere en Location som HTTP-header i 201-svaret, når webhooken oprettes. Location-headeren skal indeholde stien til den webhook, der bruges sammen med HTTP DELETE. For eksempel følger Location, der er inkluderet i svaret fra GitHub, dette format: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.
Aktiver godkendelse i GitHub
API'en, der sender webhookanmodningen til Logic Apps eller Power Automate, bruger typisk en form for godkendelse, og GitHub er ingen undtagelse. GitHub understøtter flere typer godkendelse. Vi bruger GitHub personlige adgangstokens til dette selvstudium.
Gå til GitHub, og log på, hvis du ikke allerede har gjort det.
I øverste højre hjørne skal du vælge dit profilbillede og derefter vælge Indstillinger i menuen.

I menuen til venstre under Indstillinger for udviklere skal du vælge Personlige adgangstokens.
Vælg knappen Generér nyt token, og bekræft derefter din adgangskode, hvis du bliver bedt om det.

Skriv en beskrivelse i feltet Tokenbeskrivelse.
Markér afkrydsningsfeltet admin:repo_hook.

Vælg knappen Generér token.
Notér dit nye token.

Vigtigt
Du kan ikke få adgang til dette token igen. Du skal kopiere og indsætte det i et sted, så du kan bruge det senere i selvstudiet.
Importér OpenAPI-definitionen
Start med at importere OpenAPI-definitionen for Logic Apps eller Power Automate.
Importér OpenAPI-definitionen for Logic Apps
Gå til Azure-portalen, og åbn den Logic Apps-connector, du oprettede tidligere i Opret en brugerdefineret Azure Logic Apps-connector.
Vælg Logic Apps Connector i connectorens menu, og vælg derefter Rediger.

Vælg Upload en OpenAPI-fil under Generelt, og gå derefter til den OpenAPI-fil, du har downloadet.

Importér OpenAPI-definitionen for Power Automate
Gå til flow.microsoft.com.
Vælg tandhjulsikonet i øverste højre hjørne, og vælg derefter Brugerdefinerede connectorer.

Vælg Opret brugerdefineret connector, og vælg derefter Importér en Postman-samling.

Angiv et navn til den brugerdefinerede connector, og gå derefter til den OpenAPI-fil, du har downloadet, og vælg Opret forbindelse.

Parameter Værdi Titel på brugerdefineret connector "GitHubDemo"
Afslut oprettelsen af den brugerdefinerede connector
Vælg Fortsæt på siden Generelt.
På siden Sikkerhed skal du under Godkendelsestype vælge Basisgodkendelse.
I afsnittet Basisgodkendelse skal du indtaste teksten Brugernavn og Adgangskode i etiketfelterne. Bemærk, at dette kun er de etiketter, der vises, når udløseren bruges i en logikapp eller et flow.

Sørg for, at navnet er angivet til "GitHubDemo" øverst i guiden, og vælg derefter Opret connector.
Du er nu klar til at bruge udløseren i en logikapp eller et flow, eller du kan læse om, hvordan du opretter udløsere i brugergrænsefladen.
Opret webhookudløsere fra brugergrænsefladen
I dette afsnit får du vist, hvordan du opretter en udløser i brugergrænsefladen uden nogen udløserdefinitioner i OpenAPI-definitionen. Start med en OpenAPI-basisdefinition, eller start fra bunden i guiden til en brugerdefineret connector.
På siden Generelt skal du angive en beskrivelse og en URL-adresse.
Parameter Værdi Beskrivelse "GitHub er et socialt kildekodelager". URL-adresse "api.github.com" Konfigurer basisgodkendelse på siden Sikkerhed på samme måde som i forrige afsnit.
Vælg + ny udløser på siden Definition, og udfyld beskrivelsen af udløseren. I dette eksempel opretter du en udløser, der udløses, når der sendes en pullanmodning til et lager.

Parameter Værdi Oversigt "Udløses, når der sendes en pull-forespørgsel til et valgt lager" Beskrivelse "Udløses, når der sendes en pull-forespørgsel til et valgt lager" Handlings-id "webhook-PR-trigger" Synlighed "ingen" (se flere oplysninger nedenfor) Udløsertype "Webhook" Egenskaben Synlighed for handlinger og parametre i en logikapp eller et flow har følgende indstillinger:
- ingen: vises normalt i logikappen eller flowet
- avanceret: skjult under en ekstra menu
- intern: for brugeren
- vigtigt: vises altid først for brugeren
I Anmodning-området vises oplysninger, der er baseret på HTTP-anmodningen for handlingen. Vælg Importér fra eksempel.

Definer anmodningen for webhook-udløseren, og vælg derefter Importér. Vi giver dig et eksempel, du kan importere (under billedet). Se Github API-referencen for at få flere oplysninger. Logic Apps og Power Automate tilføjer automatisk standard-
content-typeog sikkerhedsheadere, så du behøver ikke definere disse, når du importerer fra et eksempel.
Parameter Værdi Verbum "POST" URL-adresse "https://api.github.com/repos/{owner}/{repo}/hooks" Tekst Se nedenfor { "name": "web", "active": true, "events": [ "pull_request" ], "config": { "url": "http://example.com/webhook" } }I Svar-området vises oplysninger, der er baseret på HTTP-svaret for handlingen. Vælg Tilføj standardsvar.

Definer svaret for webhook-udløseren, og vælg derefter Importér. Vi giver dig igen et eksempel, du kan importere. Se Github API-referencen for at få flere oplysninger.

{ "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" } } }I området Konfiguration af udløser skal du vælge den parameter, der skal modtage værdien for tilbagekalds-URL-adressen fra GitHub. Det er egenskaben
urli objektetconfig.
Skriv et navn øverst i guiden, og vælg derefter Opret connector.
Brug webhooket som udløser
Nu, hvor alt er konfigureret, kan du bruge webhooket i en logikapp eller et flow. Opret nu et flow, der sender en pushmeddelelse til Power Automate-mobilappen, når dit GitHub-lager modtager en Git-pushmeddelelse.
I flow.microsoft.com øverst på siden skal du vælge Mine flows.
Vælg Opret fra bunden, og vælg derefter Søg i hundredvis af connectorer og udløsere på næste side.

Søg efter den brugerdefinerede connector, du tidligere registrerede, i designeren til Power Automate.

Vælg elementet på listen for at bruge det som en udløser.
Da det er første gang du har brugt denne brugerdefinerede connector, skal du oprette forbindelse til den. Angiv forbindelsesoplysningerne, og vælg derefter Opret.

Parameter Værdi Forbindelsesnavn Et sigende navn Brugernavn Dit GitHub-brugernavn Adgangskode Det personlige adgangstoken, du oprettede tidligere. Angiv oplysninger om det lager, du vil overvåge. Du kan måske genkende felterne fra objektet WebhookRequestBody i OpenAPI-filen.

Parameter Værdi ejer Ejeren af det lager, der skal overvåges lager Det lager, der skal overvåges Vigtigt
Du skal bruge et lager, som din konto har rettigheder til. Den nemmeste måde at gøre det på er at bruge dit eget lager.
Vælg + Nyt trin, og vælg derefter Tilføj en handling.
Søg efter og vælg handlingen Pushmeddelelse.

Skriv noget tekst i feltet Tekst og de andre felter ved hjælp af værdier i dialogboksen Dynamisk indhold. Bemærk, at disse værdier kommer fra WebhookPushResponse-objektet i filen OpenAPI.

Parameter Værdi Forbindelsesnavn Et sigende navn Brugernavn Dit GitHub-brugernavn Adgangskode Det personlige adgangstoken, du oprettede tidligere. Giv flowet et navn øverst på siden, og vælg Opret flow.

Kontrol og fejlfinding
Du kan kontrollere, at alt er konfigureret korrekt, ved at vælge Mine flows og derefter vælge oplysningsikonet ved siden af det nye flow for at få vist kørselsoversigten:
Du burde allerede se mindst én kørsel med "Lykkedes" fra oprettelsen af webhooket. Det angiver, at webhooket blev oprettet korrekt på GitHub-siden.
Hvis kørslen ikke blev udført, kan du analysere ned i kørselsdetaljerne for at se, hvorfor den ikke blev udført. Hvis fejlen opstod på grund af et svar med "404 blev ikke fundet", skyldes det sandsynligvis, at din GitHub-konto ikke har de korrekte tilladelser til at oprette et webhook på det lager, du brugte.
Resumé
Hvis alt er konfigureret korrekt, modtager du nu pushmeddelelser i Power Automate-mobilappen, når der opstår en Git-pushmeddelelse på det GitHub-lager, du har valgt. Ved brug af ovenstående proces kan du bruge alle kompatible webhook-tjenester som en udløser i dine flows.