Använda en webhook som utlösare för Azure Logic Apps och Power Automate

Webhooks är enkla HTTP-återanrop som tillhandahåller händelsenotiser när något händer i en webbtjänst. I Azure Logic Apps och Power Automate kan du använda webhooks som utlösare. En logikapp eller -flöde lyssnar efter den här utlösaren och utför en åtgärd när utlösaren aktiveras. Den här självstudien visar hur du kan använda en webhook som utlösare via en anpassad anslutning som definieras med en OpenAPI-specifikation.

Obs!

Den här artikeln använder GitHub som ett exempel på en tjänst som kan skicka meddelanden via webhooks, men du kan utöka de tekniker som visas här till alla tjänster som tillåter webhooks.

Förutsättningar

Aktivera autentisering i GitHub

Ett webbtjänst-API som skickar en webhook-begäran till Logic Apps eller Power Automate använder vanligtvis någon form av autentisering, och GitHub är inget undantag. GitHub stöder flera typer av autentisering. I den här självstudien används GitHubs finkorniga personliga åtkomsttoken.

  1. Gå till GitHub och logga in om du inte redan har gjort det.

  2. I det övre högra hörnet väljer du din profilbild och väljer sedan Inställningar i menyn.

  3. I menyn till vänster väljer du Utvecklarinställningar.

  4. Under Personliga åtkomsttoken väljer du Finkorniga token.

  5. Välj knappen Generera ny token och bekräfta sedan lösenordet om det begärs.

  6. Ange ett tokennamn och en beskrivning för token.

  7. Under Förfallodatum väljer du ett förfallodatum för token.

  8. Under Åtkomst till lagringsplats väljer du Endast valda lagringsplatser och väljer den lagringsplats som du vill ge åtkomst till.

  9. Under Behörigheter väljer du Lägg till behörigheter>Webhooks>Läs och skriv.

  10. Välj knappen Generera token .

  11. Notera din nya kod. Du måste använda den här token senare när du lägger till din webhook-anslutning som utlösare.

    Viktigt

    Du kan inte komma åt den här token igen. Kopiera och klistra in den någonstans att använda senare i självstudien.

Definiera webhooken i OpenAPI-definitionen

Du implementerar webhooks i Logic Apps och Power Automate som en del av en anpassad anslutning. För att skapa anslutningsappen måste du ange en OpenAPI-definition som definierar webhookens form. I den här självstudien används en nedladdad OpenAPI-exempeldefinition för GitHub-webhookar.

Om du vill skapa en utlösare men inte har någon OpenAPI-definition att arbeta från använder du användargränssnittet för utlösare i guiden för anpassad anslutningsapp för att definiera webhooksutlösare.

OpenAPI-exempeldefinitionen innehåller tre delar som är viktiga för att webhooken ska fungera:

  • Skapa webhooken
  • Definiera den inkommande hookbegäran från webbtjänstens API (i det här exemplet i självstudien: GitHub)
  • Ta bort webhooken

Anslutningsprogrammet använder den här OpenAPI-definitionen för att förstå hur webbkopplingar skapas, tas emot från och tas bort för GitHub-lagringsplatsen.

Skapa webhooken

Anslutningsappen använder webbtjänst-API:et (i vårt exempel GitHub REST API) för att skapa webhooken på webbtjänstsidan genom att skicka en HTTP POST-begäran till lämplig slutpunkt för att skapa webhooks för webbtjänsten (/repos/{owner}/{repo}/hooks om det gäller GitHub).

När du skapar en ny logikapp eller ett nytt flöde med anslutningsappen skickar anslutningsappen en POST-begäran till webbtjänstens create webhook-slutpunkt enligt definitionen i anslutningsappens OpenAPI-definition. Den skickar också en POST-begäran till den här URL:en om du ändrar logikappen eller flödesutlösaren. I följande exempelkonfiguration av OpenAPI-sökväg post innehåller egenskapen schemat för begäran create webhook som ska skickas till GitHub REST API.

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

Viktigt

Egenskapen "x-ms-trigger": "single" är ett schematillägg som talar om för Logic Apps och Power Automate att visa den här webhooken i listan över tillgängliga utlösare i designern. Se till att inkludera den.

Definiera den inkommande webhook-begäran från API:t

Definiera formen på den inkommande hook-begäran (meddelandet från GitHub till Logic Apps eller Power Automate) i den anpassade x-ms-notification-content egenskapen, som du ser i föregående exempel. Begäran behöver inte innehålla hela innehållet i begäran, bara de delar som du vill använda i logikappen eller flödet.

Radera webhooken

Inkludera en definition för hur du tar bort webhooken i OpenAPI-definitionen. Logic Apps och Power Automate försöker ta bort den befintliga webhooken om du uppdaterar utlösaren, eller om du tar bort logikappen eller flödet.

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

Inget sidhuvud ingår för anropet delete webhook. Anropet delete webhook använder samma anslutning som anslutningsappen.

Viktigt

Om du vill aktivera Logic Apps eller Power Automate för att ta bort en webhook måste webbtjänstens API innehålla ett Location HTTP-huvud i 201-svaret när webhooken skapas. Rubriken Location ska innehålla sökvägen till den webhook som används med METODEN HTTP DELETE. Till exempel följer rubrikfältet Location som ingår i GitHubs svar det här formatet: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Importera OpenAPI-definitionen

Börja med att importera OpenAPI-definitionen för Logic Apps eller för Power Automate.

Importera OpenAPI-definitionen för Logic Apps

  1. Gå till Azure Portal och öppna Logic Apps-anslutningsappen som du skapade tidigare i Skapa en anpassad Azure Logic Apps-anslutningsapp.

  2. I anslutningsappens meny väljer du Logic Apps Connector och sedan Redigera.

    Skärmbild av alternativet Redigera för Logic Apps-anslutningsappen.

  3. Under Allmänt väljer du Ladda upp en OpenAPI-fil och går sedan till den OpenAPI-exempelfil som du laddade ned.

    Skärmbild av alternativet Ladda upp en OpenAPI-fil.

Importera OpenAPI-definition för Power Automate

  1. Gå till https://make.powerautomate.com/.

  2. I det övre högra hörnet väljer du kugghjulsikonen och väljer sedan Anpassade anslutningsprogram.

    Skärmbild av menyn för kugghjulsikonen med alternativet Anpassade anslutningsprogram.

  3. Välj Skapa anpassad anslutning och välj sedan Importera en samling från Postman.

    Skärmbild av menyn Skapa anpassad anslutning med importalternativen.

  4. Ange ett namn för den anpassade anslutningsappen, gå till den OpenAPI-exempelfil som du laddade ned och välj Anslut.

    Skärmbild av fältet för att ange ett anpassat anslutningsnamn.

    Parameter Värde
    Titel för anpassad anslutning "GitHubDemo"

Slutför skapandet av den anpassade anslutningen

  1. På sidan Allmänt väljer du Fortsätt.

  2. På sidan Säkerhet går du till Autentiseringstyp och väljer Grundläggande autentisering.

  3. I avsnittet Grundläggande autentisering anger du texten Användarnamn och Lösenord för etikettfälten. Dessa etiketter visas när du använder utlösaren i en logikapp eller ett flöde.

    Skärmbild av fälten För grundläggande autentiseringsetikett.

  4. Längst upp i guiden kontrollerar du att namnet är inställt på "GitHubDemo" och väljer sedan Skapa anslutning.

Nu är du redo att använda utlösaren i en logikapp eller ett flöde, eller så kan du läsa mer om hur du skapar utlösare från användargränssnittet.

Skapa webhook-utlösare från användargränssnittet

I det här avsnittet får du lära dig hur du skapar en utlösare i användargränssnittet utan att ha några utlösardefinitioner i din OpenAPI-definition. Börja med en grundläggande OpenAPI-definition, eller börja från grunden i guiden för anpassat anslutningsprogram.

  1. På sidan Allmänt kontrollerar du att du anger en beskrivning och URL.

    Parameter Värde
    Description GitHub är ett socialt arkiv för källkod.
    URL "api.github.com"
  2. På sidan Säkerhet konfigurerar du grundläggande autentisering på samma sätt som du gjorde i föregående avsnitt.

  3. På sidan Definition väljer du Ny utlösare och fyller i beskrivningen för utlösaren. I det här exemplet skapar vi en utlösare som utlöses när en pull-begäran skickas till en lagringsplats.

    Skärmbild av de nya fälten för allmän information om utlösare.

    Parameter Värde
    Sammanfattning "Utlöses när en hämtningsförfrågan görs till en markerad databas"
    Description "Utlöses när en hämtningsförfrågan görs till en markerad databas"
    Åtgärds-ID webhook-PR-utlösare
    Synlighet "ingen" (se nedan för mer information)
    Typ av utlösare "Webhook"

    Egenskapen Synlighet för åtgärder och parametrar i en logikapp eller ett flöde har följande alternativ:

    • Ingen: Visas normalt i logikappen eller flödet
    • Avancerat: Gömd under en extra meny
    • internt: dolt för användaren
    • Viktigt: Visas alltid för användaren först
  4. I området Begäran visas information baserat på HTTP-begäran för åtgärden. Välj Importera från exempel.

    Skärmbild av sidan Definition med alternativet Importera från exempel.

  5. Definiera begäran för webhooksutlösaren och välj sedan Importera. Vi tillhandahåller ett exempel som du kan importera (i följande avsnitt). Mer information finns i GitHub API-referensen. Logic Apps och Power Automate lägger automatiskt till standard content-type - och säkerhetshuvuden, så du behöver inte definiera dem när du importerar från ett exempel.

    Skärmbild av dialogrutan för import av begäran för webhooksutlösaren.

    Parameter Värde
    Verb POST
    URL https://api.github.com/repos/{owner}/{repo}/hooks"
    Brödtext Se nedan
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. I området Svar visas information baserat på HTTP-svaret för åtgärden. Välj Lägg till standardsvar.

    Skärmbild av området Svar på definitionssidan med alternativet Lägg till standardsvar.

  7. Definiera svaret för webhooksutlösaren och välj sedan Importera. Vi tillhandahåller återigen ett exempel som du kan importera. Mer information finns i GitHub API-referensen.

    Skärmbild av dialogrutan för svarsimport för webhooksutlösaren.

    {
      "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 Utlösarkonfiguration väljer du den parameter som ska ta emot motringnings-URL-värdet från GitHub. Den här parametern url är egenskapen i config objektet.

    Skärmbild av utlösarens konfigurationsområde med callback-URL-parametern markerad.

  9. Överst i guiden anger du ett namn och väljer sedan Skapa anslutningsapp.

Använd webhooken som en utlösare

När du har konfigurerat allt använder du webhooken via den anpassade kopplingen i en logikapp eller ett flöde. Skapa sedan ett flöde som skickar ett e-postmeddelande när din GitHub lagringsplats tar emot en git-push.

  1. Välj Mina flöden överst på sidan i https://make.powerautomate.com/.

  2. Välj Skapa från tom.

    Skärmbild av alternativet Sök bland hundratals anslutningsprogram och utlösare.

  3. Sök efter den anpassade anslutningen som du tidigare registrerat i Power Automate-designern.

    Skärmbild av sökning efter den anpassade anslutningsutlösaren i Power Automate designern.

  4. Välj objektet i listan för att använda det som utlösare.

  5. Eftersom det här är första gången som du använder den här anpassade anslutningen, anslut till den. Ange anslutningsinformation och välj sedan Skapa.

    Skärmbild av de nya fälten för anslutningsinformation.

    Parameter Värde
    Anslutningens namn Ett beskrivande namn
    Användarnamn Ditt GitHub användarnamn
    Lösenord Den personliga åtkomsttoken du skapade tidigare
  6. Ange information om lagringsplatsen du vill bevaka. Du kanske känner igen fälten från WebhookRequestBody-objektet i OpenAPI filen.

    Skärmbild av lagringsplatsens ägar- och namnfält för utlösaren.

    Parameter Värde
    ägare Ägaren till den databas som ska bevakas
    repo Den lagringsplats som ska bevakas

    Viktigt

    Använd en lagringsplats som ditt konto har behörighet till. Det enklaste sättet att göra detta är att använda din egen lagringsplats.

  7. Välj Nytt steg>Lägg till en åtgärd.

  8. Sök efter och välj åtgärden Skicka ett e-postmeddelande (V2).

  9. Ange text i fältet Brödtext och de andra fälten med hjälp av värden från dialogrutan dynamiskt innehåll. Värden kommer från WebhookPushResponse-objektet i OpenAPI-filen.

  10. Ge flödet ett namn högst upp på sidan och välj Skapa flöde.

    Skärmbild av fältet flödesnamn och knappen Skapa flöde.

Verifiering och felsökning

Kontrollera att allt har konfigurerats korrekt genom att välja Mina flöden och sedan välja informationsikonen bredvid det nya flödet för att visa körningshistoriken:

  • Du bör redan se minst en Lyckad körning från skapandet av webhooken. Den här körningen visar att webhooken har skapats korrekt på GitHub-sidan.
  • Om körningen misslyckades kan du granska information om körningen för att se varför körningen misslyckades. Om felet berodde på ett 404 Not Found svar har ditt GitHub-konto förmodligen inte rätt behörighet att skapa en webhook på lagringsplatsen som du använde.

Sammanfattning

Om du har konfigurerat allt korrekt får du push-meddelanden i Power Automate mobilapp när en git-push sker på den GitHub lagringsplats som du har valt. Genom att använda föregående process kan du använda alla webhook-kompatibla tjänster som en utlösare i dina flöden.

Nästa steg

Ge feedback

Vi uppskattar feedback på problem med vår anslutningsplattform eller nya funktioner. Om du vill ge feedback går du till Skicka in problem eller få hjälp med anslutningsappar och väljer typ av feedback.