Použití webhooku jako triggeru pro Azure Logic Apps a Power Automate

Webhooky jsou jednoduché zpětné volání HTTP, které poskytují oznámení událostí, když se něco stane ve webové službě. V Azure Logic Apps a Power Automate můžete jako triggery použít webhooky. Aplikace logiky nebo tok naslouchají tomuto trigger a provedou akci, kdykoli se trigger spustí. Tento kurz ukazuje použití webhooku jako triggeru prostřednictvím vlastního konektoru definovaného pomocí specifikace OpenAPI.

Poznámka:

Tento článek používá GitHub jako příklad služby, která může odesílat oznámení prostřednictvím webhooků, ale můžete tyto techniky rozšířit na jakoukoli službu, která umožňuje webhooky.

Požadavky

Povolí se ověřování v GitHub

Rozhraní API webové služby, které odesílá požadavek webhooku do Logic Apps nebo Power Automate, obvykle používá nějakou formu ověřování a GitHub není výjimkou. GitHub podporuje několik typů ověřování. Tento návod používá podrobně odstupňované osobní přístupové tokeny GitHubu.

  1. Pokud jste to ještě neudělali, přejděte na GitHub a přihlaste se.

  2. V pravém horním rohu vyberte svůj profilový obrázek a pak v nabídce vyberte Nastavení.

  3. V nabídce vlevo vyberte Nastavení pro vývojáře.

  4. V části Tokeny PAT vyberte Vyladěné tokeny.

  5. Vyberte tlačítko Generovat nový token a v případě potřeby potvrďte heslo.

  6. Zadejte název tokenu a popis tokenu.

  7. V části Konec platnosti vyberte datum vypršení platnosti tokenu.

  8. V části Přístup k úložišti vyberte Pouze úložiště a vyberte úložiště, ke které chcete udělit přístup.

  9. V části Oprávnění vyberte Přidat oprávnění>Webhooky>pro čtení a zápis.

  10. Vyberte tlačítko Generovat token .

  11. Nový token si poznamenejte. Tento token musíte později použít při přidání konektoru webhooku jako triggeru.

    Důležité

    K tomuto tokenu nemůžete znovu získat přístup. Zkopírujte ho a vložte ho někam, abyste ho mohli použít později v tomto kurzu.

Definování webhooku v definici OpenAPI

Webhooky implementujete v Logic Apps a Power Automate jako součást vlastního konektoru. Pokud chcete vytvořit konektor, musíte zadat definici OpenAPI, která definuje tvar webhooku. Tento kurz používá staženou ukázkovou definici OpenAPI pro GitHub webhooky.

Pokud chcete vytvořit aktivační událost, ale nemáte definici OpenAPI, ze které by bylo možné vycházet, použijte v průvodci vlastním konektorem uživatelské rozhraní pro aktivační události k definování aktivačních událostí webhooku.

Ukázková definice OpenAPI obsahuje tři části, které jsou důležité pro fungování webhooku:

  • Vytvoření webhooku
  • Definování příchozího požadavku hooku z rozhraní API webové služby (v tomto příkladu kurzu GitHub)
  • Odstranění webhooku

Konektor používá tuto definici OpenAPI k pochopení toho, jak vytvářet, přijímat a odstraňovat webhooky pro úložiště GitHub.

Vytvoření webhooku

Konektor používá rozhraní API webové služby (v našem příkladu GitHub REST API) k vytvoření webhooku na straně webové služby odesláním požadavku HTTP POST na příslušný koncový bod pro vytvoření webhooku dané webové služby (/repos/{owner}/{repo}/hooks v případě GitHubu).

Když pomocí konektoru vytvoříte novou aplikaci logiky nebo tok, odešle konektor požadavek POST do koncového bodu vytvoření webhooku webové služby, jak je definováno v definici OpenAPI konektoru. Odešle na tuto adresu URL také požadavek POST, pokud upravíte trigger aplikace logiky nebo toku. V následující ukázkové konfiguraci cesty OpenAPI obsahuje vlastnost post schéma požadavku na vytvoření webhooku, který se odešle do rozhraní 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"
                }
            }
        }
    }
},

Důležité

Vlastnost "x-ms-trigger": "single" je rozšíření schématu, které aplikacím Logic Apps a Power Automate říká, aby tento webhook zobrazily v seznamu dostupných aktivačních událostí v návrháři. Nezapomeňte ho zahrnout.

Definování příchozího požadavku hooku z rozhraní API

Definujte strukturu příchozího požadavku webhooku (oznámení z GitHubu do Logic Apps nebo Power Automate) ve vlastní vlastnosti x-ms-notification-content, jak je znázorněno v předchozí ukázce. Požadavek nemusí obsahovat celý obsah požadavku, jenom části, které chcete použít v aplikaci logiky nebo toku.

Odstranění webhooku

Do definice OpenAPI zahrňte definici pro odstranění webhooku. Logic Apps a Power Automate se pokusí existující webhook odstranit při aktualizaci triggeru nebo při odstranění aplikace logiky nebo toku.

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

Pro volání webhooku delete není zahrnuta žádná hlavička. Volání pro odstranění webhooku používá stejné připojení jako konektor.

Důležité

Aby služba Logic Apps nebo Power Automate mohla webhook odstranit, musí rozhraní API webové služby při vytváření webhooku obsahovat hlavičku Location HTTP v odpovědi 201. Hlavička Location by měla obsahovat cestu k webhooku, který se používá s metodou HTTP DELETE. Například hlavička Location obsažená v odpovědi GitHub má tento formát: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Importujte definici OpenAPI

Začněte importem definice OpenAPI pro Logic Apps nebo pro Power Automate.

Importujte definici OpenAPI pro Logic Apps

  1. Přejděte na web Azure Portal a otevřete konektor Logic Apps, který jste vytvořili dříve v tématu Vytvoření vlastního konektoru Azure Logic Apps.

  2. V nabídce konektoru zvolte Konektor Logic Apps, a pak zvolte Upravit.

    Snímek obrazovky možnosti Upravit pro konektor Logic Apps.

  3. V části Obecné vyberte Nahrát soubor OpenAPI a pak přejděte na ukázkový soubor OpenAPI, který jste stáhli.

    Snímek obrazovky s možností Nahrát soubor OpenAPI

Import definice OpenAPI pro Power Automate

  1. Přejděte na https://make.powerautomate.com/ .

  2. V pravém horním rohu vyberte ikonu ozubeného kola a pak vyberte Vlastní konektory.

    Snímek obrazovky s nabídkou pod ikonou ozubeného kola s možností Vlastní konektory.

  3. Vyberte Vytvořit vlastní konektor a pak vyberte Importovat kolekci Postman.

    Snímek obrazovky s nabídkou Vytvořit vlastní konektor s možnostmi importu

  4. Zadejte název vlastního konektoru, přejděte na ukázkový soubor OpenAPI, který jste stáhli, a vyberte Připojit.

    Snímek obrazovky s polem pro zadání názvu vlastního konektoru

    Parametr Hodnota
    Název vlastního konektoru "GitHubDemo"

Dokončení vytváření vlastního konektoru

  1. Na stránce Obecné vyberte Pokračovat.

  2. Na stránce Zabezpečení pod možností Typ ověření vyberte Základní ověřování.

  3. V části Základní autentizace zadejte do polí popisků text Uživatelské jméno a Heslo. Tyto popisky se zobrazí, když použijete trigger v aplikaci logiky nebo toku.

    Snímek obrazovky s poli Popisek základního ověřování

  4. V horní části průvodce se ujistěte, že je název nastavený na GitHubDemo, a pak zvolte Vytvořit konektor.

Nyní jste připraveni použít trigger v aplikaci logiky nebo toku, nebo si můžete přečíst o tom, jak vytvořit triggery z uživatelského rozhraní.

Vytvořte spouštěče webhooků v uživatelském rozhraní

V této části se dozvíte, jak vytvořit trigger v uživatelském rozhraní, aniž byste v definici OpenAPI měli definice triggeru. Začněte s výchozí definicí OpenAPI nebo zcela od nuly v průvodci pro vlastní konektor.

  1. Na stránce Obecné nezapomeňte zadat popis a adresu URL.

    Parametr Hodnota
    Popis "GitHub je úložiště zdrojového kódu sociální sítě."
    URL "api.github.com"
  2. Na stránce Zabezpečení nakonfigurujte základní ověřování jako v předchozí části.

  3. Na stránce Definice zvolte Nový trigger a vyplňte popis aktivační události. V tomto příkladu vytváříte spouštěč, který se spustí, když je v repozitáři vytvořen pull request.

    Snímek obrazovky s poli obecné informace o novém triggeru

    Parametr Hodnota
    Souhrn Aktivuje se, když je ve vybraném úložišti vytvořen požadavek na sloučení
    Popis Aktivuje se při vytvoření požadavku na sloučení ve vybraném úložišti
    ID operace "webhook-PR-trigger"
    Viditelnost "žádné" (informace viz níže)
    Typ triggeru "Webhook"

    Vlastnost Viditelnost pro operace a parametry v aplikaci logiky nebo toku má následující možnosti:

    • žádné: zobrazuje se normálně v aplikaci logiky nebo toku
    • rozšířené: skryté v další nabídce
    • interní: skryté pro uživatele
    • důležité: vždy se zobrazí nejprve uživateli
  4. Oblast Žádost zobrazuje informace na základě požadavku HTTP na akci. Zvolte Importovat z ukázky.

    Snímek obrazovky se stránkou Definice s možností Importovat z ukázky

  5. Definujte požadavek na trigger webhooku a pak vyberte Importovat. Nabízíme vám ukázku pro import (v následující části). Další informace naleznete v tématu Reference rozhraní API GitHub. Logic Apps a Power Automate automaticky přidávají standardní content-type a bezpečnostní hlavičky, takže je při importu z ukázky nemusíte definovat.

    Snímek obrazovky s dialogovým oknem importu požadavku pro trigger webhooku

    Parametr Hodnota
    Příkaz "POST"
    URL "https://api.github.com/repos/{owner}/{repo}/hooks"
    Tělo Viz níže.
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. Oblast Žádost zobrazuje informace na základě reakce HTTP na akci. Vyberte Přidat výchozí odpověď.

    Snímek obrazovky oblasti Odpověď na stránce Definice s možností Přidat výchozí odpověď.

  7. Definujte odpověď pro trigger webhooku a pak vyberte Importovat. Znovu připomínáme, že nabízíme ukázku k importu. Další informace naleznete v tématu Reference rozhraní API GitHub.

    Snímek obrazovky s dialogovým oknem importu odpovědi pro trigger webhooku

    {
      "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. V oblasti Konfigurace triggeru vyberte parametr, který má přijmout hodnotu URL zpětného volání z GitHub. Tento parametr je url vlastnost v objektu config .

    Snímek obrazovky s oblastí konfigurace triggeru s vybraným parametrem adresy URL zpětného volání

  9. V horní části průvodce zadejte název a pak zvolte Vytvořit konektor.

Použití webhooku jako triggeru

Jakmile všechno nakonfigurujete, použijte webhook prostřednictvím vlastního konektoru v aplikaci logiky nebo toku. Dále vytvořte tok, který odešle e-mail pokaždé, když vaše GitHub úložiště obdrží git push.

  1. V https://make.powerautomate.com/horní části stránky vyberte Moje toky.

  2. Vyberte Vytvořit z prázdného.

    Snímek obrazovky s možností Prohledat stovky konektorů a triggerů

  3. V návrháři pro Power Automate vyhledejte vlastní konektor, který jste zaregistrovali dříve.

    Snímek obrazovky vyhledávání triggeru vlastního konektoru v návrháři Power Automate

  4. Vyberte položku v seznamu, kterou chcete použít jako trigger.

  5. Vzhledem k tomu, že jste tento vlastní konektor použili poprvé, připojte se k němu. Zadejte informace o připojení a pak vyberte Vytvořit.

    Snímek obrazovky s poli s informacemi o novém připojení

    Parametr Hodnota
    Název připojení Popisné jméno
    Uživatelské jméno Vaše uživatelské jméno GitHubu
    Heslo Jako heslo použijte osobní přístupový token, který jste si vytvořili.
  6. Zadejte podrobnosti o úložišti, které chcete monitorovat. Možná poznáváte pole z objektu WebhookRequestBody v souboru OpenAPI.

    Snímek obrazovky s poli vlastníka a názvu úložiště pro trigger

    Parametr Hodnota
    vlastník Vlastník úložiště k monitorování
    úložiště Repozitář pro monitorování

    Důležité

    Použijte úložiště, ke kterému má váš účet práva. Nejjednodušší způsob, jak to udělat, je použít vlastní úložiště.

  7. Vyberte Nový krok>Přidat akci.

  8. Vyhledejte a vyberte akci Odeslat e-mail (V2).

  9. Do pole Text a další pole zadejte text pomocí hodnot z dialogového okna dynamického obsahu. Hodnoty pocházejí z objektu WebhookPushResponse v souboru OpenAPI.

  10. V horní části stránky zadejte název toku a klikněte na Vytvořit tok.

    Snímek obrazovky s polem název toku a tlačítkem Vytvořit tok

Ověření a řešení potíží

Pokud chcete ověřit, že je všechno správně nastavené, vyberte Moje toky a pak výběrem ikony informací vedle nového toku zobrazte historii spuštění:

  • Už byste měli vidět alespoň jedno úspěšné spuštění po vytvoření webhooku. Tento běh naznačuje, že webhook byl na straně GitHubu úspěšně vytvořen.
  • Pokud se spuštění nezdařilo, projděte si podrobnosti o spuštění a zjistěte, proč selhal. Pokud bylo selhání způsobeno odpovědí 404 Not Found, váš účet na GitHubu pravděpodobně nemá správná oprávnění k vytvoření webhooku v použitém repozitáři.

Souhrn

Pokud jste vše správně nakonfigurovali, budete dostávat push oznámení v mobilní aplikaci Power Automate pokaždé, když ve vybraném úložišti GitHub dojde k příkazu git push. Pomocí předchozího procesu můžete ve svých tocích použít libovolnou službu podporující webhook jako trigger.

Další kroky

Poskytnutí názorů

Velmi si vážíme vašich názorů na problémy s naší platformou konektorů nebo nových nápadů na funkce. Chcete-li poskytnout zpětnou vazbu, přejděte do části Odeslat problémy nebo získat pomoc s konektory a vyberte typ zpětné vazby.