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

Webhooks är enkla HTTP-återanrop som används till händelsemeddelanden. Du kan använda webhooks som utlösare med både Azure Logic Apps och Power Automate. En logikapp eller -flöde lyssnar efter den här utlösaren och utför en åtgärd när utlösaren aktiveras. I den här självstudien beskrivs hur du använder en webhook som utlösare.

Anteckning

Vi kommer att använda GitHub som ett exempel på en tjänst som kan skicka meddelanden via webhooks, men de metoder som beskrivs här kan utökas till alla tjänster som använder webhooks.

Förutsättningar

OpenAPI-definitionen

Webhooks implementeras i Logic Apps och Power Automate som en del av ett anpassat anslutningsprogram, varför du behöver tillhandahålla en OpenAPI-definition som definierar webhookens form. Om du vill skapa en utlösare men inte har någon OpenAPI-definition kan du använda utlösarna för användargränssnitt i guiden för anpassat anslutningsprogram för att definiera utlösare för webhooks.

OpenAPI-definitionen innehåller tre delar som är vitala för att få webhooken att fungera:

  • Skapa webhooken
  • Definiera en inkommande hook-begäran från API:n (i det här fallet GitHub)
  • Ta bort webhooken

Skapa webhooken

Webhooken skapas på GitHub-sidan med en HTTP POST till /repos/{owner}/{repo}/hooks. När en ny logikapp eller ett nytt flöde skapas kommer dessa att publicera till denna URL via den utlösare som angetts i OpenAPI-definitionen. Det publicerar även till URL:en om utlösaren ändras. I exemplet nedan innehåller egenskapen post schemat för den begäran som ska skickas till 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"
        }
        }
    }
    }
},

Viktigt

Egenskapen "x-ms-trigger": "single" är ett schematillägg som säger åt Logic Apps och Power Automate att visa denna webhook i listan över tillgängliga utlösare i designern, så var noga med att inkludera det.

Definiera begäran om inkommande hook från API

Utformningen av inkommande hook-begäran (meddelandet från GitHub till Logic Apps eller Power Automate) definieras i den anpassade x-ms-notification-content-egenskapen enligt ovanstående exempel. Den behöver inte innehålla hela innehållet i begäran, bara de delar som du vill använda i din logikapp eller ditt flöde.

Radera webhooken

OpenAPI-definitionen måste inkludera en definition kring hur en webhook ska raderas. Logic Apps och Power Automate försöker ta bort webhooken om du uppdaterar utlösaren och 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 Hook being deleted",
        "required": true,
        "type": "string"
        }
    ]
    }
},

Inget ytterligare huvud ingår för det borttagna webhook-anropet. Samma anslutning som används i anslutningen används också för borttagnings webhook-anropet.

Viktigt

För att Logic Apps eller Power Automate ska kunna ta bort en webhook måste API:et innehålla ett Location HTTP-huvud i 201-svaret då webhooken skapas. Location-rubriken ska innehålla den sökväg till webhooken som ska användas med HTTP DELETE. Till exempel den Location som medföljer GitHub-svaret har följande format: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Aktivera autentisering i GitHub

API:et som skickar webhook-begäran till Logic Apps eller Power Automate använder normalt 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 personliga åtkomsttoken.

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

  2. I det övre högra hörnet klickar du på din profilbild och i menyn klickar du sedan på Inställningar.

    Inställningar

  3. I menyn till vänster, under Inställningar för utvecklare, klickar du på Personlig åtkomsttoken.

  4. Välj knappen skapa ny token och bekräfta sedan lösenordet om det efterfrågas.

    Generera en ny token

  5. I rutan Token-beskrivning anger du en beskrivning.

  6. Markera kryssrutan admin:repo_hook.

    admin:repo_hook

  7. Välj knappen Generera token.

  8. Anteckna din nya token.

    Ny token

    Viktigt

    Du kan inte komma åt denna token igen. Du bör kopiera och klistra in den någonstans för användning senare i självstudierna.

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-portalen och öppna det anslutningsprogram för Logic Apps som du tidigare skapade i Skapa ett anpassat anslutningsprogram för Azure Logic Apps.

  2. I menyn för ditt anslutningsprogram väljer du Logic Apps-anslutningsprogram och sedan Redigera.

    Redigera Logic Apps-anslutningsprogram

  3. Under Allmänt väljer du Ladda upp en OpenAPI-fil innan du navigerar till den OpenAPI-fil som du laddade ned.

    Skärmbild som visar alternativet Ladda upp en OpenAPI-fil.

Importera OpenAPI-definition för Power Automate

  1. Gå till flow.microsoft.com.

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

    Anpassade anslutningsprogram

  3. Välj Skapa anpassat anslutningsprogram och välj sedan Importera en Postman-samling.

    Skapa anpassat anslutningsprogram

  4. Ange ett namn för det anpassade anslutningsprogrammet, gå sedan till den OpenAPI-fil som du ladde ned och välj sedan Anslut.

    Skärmbilder som visar fältet för att ange ett namn.

    Parameter Värde
    Rubrik för anpassad anslutningsapp "GitHubDemo"

Slutför skapandet av den anpassade anslutningen

  1. På sidan Allmänt välj Fortsätt.

  2. På sidan Säkerhet, under Autentiseringstyp, välj Grundläggande autentisering.

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

    Grundläggande autentisering

  4. Längst upp i guiden, kontrollera att namnet är inställt på "GitHubDemo", välj sedan Skapa anslutning.

Nu kan du använda utlösaren i en logikapp eller flöde eller läsa om hur du skapar utlösare från användargränssnittet.

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

I detta avsnitt visar vi dig hur du skapar en utlösare i användargränssnittet utan behov av 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 se till att du anger en beskrivning och URL.

    Parameter Värde
    Beskrivning "GitHub är en lagringskod för en social källkod".
    URL "api.github.com"
  2. På sidan säkerhet konfigurerar du grundläggande autentisering på samma sätt som i föregående avsnitt.

  3. På sidan Definition, välj + Ny utlösare och fyll 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.

    Skapa utlösare-1

    Parameter Värde
    Sammanfattning "Utlöses när en hämtningsförfrågan görs till en markerad databas"
    Beskrivning "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)
    Utlösartyp "Webhook"

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

    • inget: visas normalt i logikappen eller flödet.
    • avancerat: dolt under ytterligare en meny
    • internt: från användaren
    • viktigt: visas alltid först för användaren.
  4. I området begäran visas information som baseras på HTTP-begäran för åtgärden. Välj Importera från exempel.

    Definitionssida – importera från exempel

  5. Definiera begäran för webhook-utlösaren och välj sedan Importera. Vi tillhandahåller ett exempel du kan importera (under bilden). För mer information, se API-inställning för GitHub. Logic Apps och Power Automate lägger automatiskt till content-type "standard" och säkerhetsrubriker, varför du int ebehöver ange dessa när du importerar från ett exempel.

    Skapa utlösare-2

    Parameter Värde
    Verb "SKICKA"
    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 som baseras på HTTP-svar för åtgärden. Välj Lägg till standardsvar.

    Definitionssida – svar

  7. Definiera svar för webhook-utlösaren och välj sedan Importera. Vi tillhandahåller återigen ett exempel som du kan importera. För mer information, se API-inställning för GitHub.

    Skapa Utlösare-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 Utlösarkonfiguration väljer du den parameter som ska erhålla värdet för motringningsadress (callback URL) från GitHub. Detta är url-egenskapen i config-objektet.

    Skapa utlösare-4

  9. Ange ett namn högst upp i guiden och välj sedan Skapa anslutning.

Använd webhooken som en utlösare

Nu när allt är konfigurerat kan vi använda webhooken i en logikapp eller ett flöde. Nästa steg är att skapa ett flöde som skickar ett push-meddelande till Power Automate-mobilappen när vår GitHub-repo tar emot en git-push.

  1. I flow.microsoft.com överst på sidan väljer du Mina flöden.

  2. Välj skapa från tomoch välj sedan Sök bland hundratals anslutningsprogram och utlösare på nästa sida.

    Sök efter anslutningsprogram

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

    Ny utlösare

    Välj objektet i listan om du vill använda det som en utlösare.

  4. Eftersom det är första gången du använder den här anpassade anslutningen, så måste du ansluta till den. Ange anslutnings information och välj sedan skapa.

    Ny anslutning

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

    Databasinfo

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

    Viktigt

    Du bör använda en lagringsplats som ditt konto har behörighet till. Det enklaste sättet att göra detta på är att använda en egen lagringsplats.

  6. Välj + Nytt steg och sedan Lägg till en åtgärd.

  7. Sök efter och välj åtgärden Push-meddelande.

    Push-meddelande

  8. Ange text i fältet Text och övriga fält med hjälp av värden från dialogrutan dynamiskt innehåll. Notera att dessa värden kommer från objektet WebhookPushResponse i OpenAPI-filen.

    Push-meddelandeinformation

    Parameter Värde
    Anslutningens namn Ett beskrivande namn
    Användarnamn Ditt GitHub användarnamn
    Lösenord Den personliga åtkomsttoken du skapade tidigare
  9. Överst på sidan ger du flödet ett namn och klickar på Skapa flöde.

    Flödesnamn

Verifiering och felsökning

Kontrollera att allt är korrekt konfigurerat genom att klicka på Mina flöden och sedan på informationsikonen bredvid det nya flödet för att se körningshistoriken:

  • Du bör redan se minst en körning som ”lyckades” från när webhooken skapades. Detta visar att webhooken skapades på GitHub-sidan.

  • Om körningen misslyckades kan du söka efter orsaken i körningsinformationen. Om felet berodde på svaret ”404 hittades inte”, har sannolikt GitHub-kontot inte behörighet att skapa en webhook på den lagringsplats som du använde.

Sammanfattning

Om allt är korrekt konfigurerat får du nu push-meddelanden i Power Automate-mobilappen när en git-push inträffar på GitHub-lagringsplatsen som du har valt. Via processen ovan 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 plattform för anslutningsprogram eller förslag på nya funktioner. Om du vill lämna feedback går du till Skicka problem eller få hjälp med anslutningsprogram och väljer typ av feedback.