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

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.

  1. Gå til GitHub, og log på, hvis du ikke allerede har gjort det.

  2. I øverste højre hjørne skal du vælge dit profilbillede og derefter vælge Indstillinger i menuen.

    Indstillinger

  3. I menuen til venstre under Indstillinger for udviklere skal du vælge Personlige adgangstokens.

  4. Vælg knappen Generér nyt token, og bekræft derefter din adgangskode, hvis du bliver bedt om det.

    Generer et nyt token

  5. Skriv en beskrivelse i feltet Tokenbeskrivelse.

  6. Markér afkrydsningsfeltet admin:repo_hook.

    admin:repo_hook

  7. Vælg knappen Generér token.

  8. Notér dit nye token.

    Nyt 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

  1. Gå til Azure-portalen, og åbn den Logic Apps-connector, du oprettede tidligere i Opret en brugerdefineret Azure Logic Apps-connector.

  2. Vælg Logic Apps Connector i connectorens menu, og vælg derefter Rediger.

    Rediger Logic Apps-connector

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

    Upload Postman-samling

Importér OpenAPI-definitionen for Power Automate

  1. Gå til flow.microsoft.com.

  2. Vælg tandhjulsikonet i øverste højre hjørne, og vælg derefter Brugerdefinerede connectorer.

    Brugerdefinerede connectors

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

    Opret en brugerdefineret connector

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

    Upload Postman-samling

    Parameter Værdi
    Titel på brugerdefineret connector "GitHubDemo"

Afslut oprettelsen af den brugerdefinerede connector

  1. Vælg Fortsæt på siden Generelt.

  2. På siden Sikkerhed skal du under Godkendelsestype vælge Basisgodkendelse.

  3. 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.

    Basisgodkendelse

  4. 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.

  1. 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"
  2. Konfigurer basisgodkendelse på siden Sikkerhed på samme måde som i forrige afsnit.

  3. 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.

    Opret udløser-1

    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
  4. I Anmodning-området vises oplysninger, der er baseret på HTTP-anmodningen for handlingen. Vælg Importér fra eksempel.

    Definitionsside - importér fra eksempel

  5. 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-type og sikkerhedsheadere, så du behøver ikke definere disse, når du importerer fra et eksempel.

    Opret udløser-2

    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"
      }
    }
    
  6. I Svar-området vises oplysninger, der er baseret på HTTP-svaret for handlingen. Vælg Tilføj standardsvar.

    Definitionsside – svar

  7. 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.

    Opret udløser-3

    {
      "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. 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 url i objektet config.

    Opret udløser-4

  9. 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.

  1. I flow.microsoft.com øverst på siden skal du vælge Mine flows.

  2. 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 connectorer

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

    Ny udløser

    Vælg elementet på listen for at bruge det som en udløser.

  4. 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.

    Ny forbindelse

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

    Lageroplysninger

    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.

  6. Vælg + Nyt trin, og vælg derefter Tilføj en handling.

  7. Søg efter og vælg handlingen Pushmeddelelse.

    Pushmeddelelse

  8. 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.

    Detaljer om pushmeddelelse

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

    Flownavn

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.

Næste trin