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

Webhooky jsou jednoduchá zpětná volání protokolu HTTP, která se využívají k oznamování událostí. Azure Logic Apps i Power Automate umožňují použití webhooků jako triggerů. Aplikace logiky nebo tok naslouchají tomuto spouštěči a provedou akci, kdykoli se spustí trigger. Tento kurz ukazuje, jak použít webhook jako trigger.

Poznámka

Jako příklad služby, která může odeslat oznámení prostřednictvím webhooků, použijeme GitHub, ale postupy, které jsou zde popsané, je možné rozšířit na libovolnou službu, která webhooky používá.

Požadavky

Definice OpenAPI

Webhooky se v Logic Apps a Power Automate implementují jako součást custom connector, proto je nutné zadat definici OpenAPI definující tvar webhooku. Pokud chcete vytvořit trigger, ale nemáte definici OpenAPI, můžete použít UI triggerů v průvodci vlastním konektorem k definování spouštěčů webhooku.

Definice OpenAPI obsahuje tři části, které jsou důležité k zajištění fungování webhooku:

  • Vytvoření webhooku
  • Definování příchozího požadavku hooku z rozhraní API (v tomto případě GitHubu)
  • Odstranění webhooku

Vytvoření webhooku

Webhook se vytvoří na straně GitHubu pomocí požadavku HTTP POST na /repos/{owner}/{repo}/hooks. Když je vytvořena nová logická aplikace nebo tok, odešle se na tuto adresu URL pomocí spouštěče definovaného v definici OpenAPI. Pokud je spouštěč změněn, publikuje také v adrese URL. Vlastnost post v následující ukázce obsahuje schéma požadavku, který se odešle do GitHubu.

"/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é službám Logic Apps a Power Automate říká, že tento webhook mají zobrazit v seznamu dostupných triggerů v návrháři, proto ji nezapomeňte zahrnout.

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

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

Odstranění webhooku

Definice OpenAPI musí zahrnovat definici, jak webhook odstranit. Logic Apps a Power Automate se pokusí webhook odstranit při aktualizaci triggeru a 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 Hook being deleted",
        "required": true,
        "type": "string"
        }
    ]
    }
},

Pro odstranění volání webhooku není k dispozici žádné vysvětlující záhlaví. Stejné připojení použité v konektoru se používá také pro odstranění volání webhooku.

Důležité

Aby služba Logic Apps nebo Power Automate mohly odstranit webhook, rozhraní API musí v době vytvoření webhooku v odpovědi s kódem 201 zahrnovat hlavičku protokolu HTTP Location. Hlavička Location by měla obsahovat cestu k webhooku, která se použije v požadavku HTTP DELETE. Například hlavička Location, která je zahrnutá v odpovědi GitHubu, má tento formát: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

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

Rozhraní API, které odesílá požadavky webhooku do Logic Apps nebo Power Automate, obvykle využívá nějakou formu ověřování a GitHub není výjimkou. GitHub podporuje několik typů ověřování; pro tento kurz použijeme osobní přístupové tokeny GitHub.

  1. Přejděte na GitHub a přihlaste se (pokud jste to ještě neudělali).

  2. V pravém horním rohu klikněte na svůj profilový obrázek a potom v nabídce klikněte na Nastavení.

    Nastavení

  3. V nabídce nalevo v části Nastavení pro vývojáře klikněte na Osobní přístupové tokeny.

  4. Vyberte tlačítko Generovat nový token a poté požádejte o potvrzení hesla.

    Vygenerování nového tokenu

  5. Do pole Popis tokenu zadejte popis.

  6. Zaškrtněte políčko admin:repo_hook.

    admin:repo_hook

  7. Klikněte na tlačítko Vygenerovat token.

  8. Nový token si poznamenejte.

    Nový token

    Důležité

    K tomuto tokenu už nebudete mít přístup. Měli byste si ho zkopírovat a někam uložit, abyste ho v tomto kurzu mohli později použít.

Import definice OpenAPI

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

Import definic 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, pak zvolte Upravit.

    Úprava konektoru Logic Apps

  3. V části Obecné zvolte Nahrát soubor OpenAPI a pak přejděte k souboru OpenAPI, který jste stáhli.

    Snímek obrazovky, který ukazuje možnost Nahrát soubor OpenAPI.

Import definice OpenAPI pro Power Automate

  1. Přejděte na flow.microsoft.com.

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

    Vlastní konektory

  3. Zvolte Vytvořit vlastní konektor a pak vyberte Importovat Postman Collection.

    Vytvoření vlastního konektoru

  4. Zadejte název vlastního konektoru, přejděte k definici OpenAPI, kterou jste stáhli nebo vytvořili, a vyberte Pokračovat.

    Snímek obrazovky, který ukazuje pole pro zadání názvu.

    Parametr Hodnota
    Custom connector title "GitHubDemo"

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

  1. Na stránce Obecné zvolte 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í ověřování zadejte text Uživatelské jméno a Heslo (popisky polí). Tyto popisky se zobrazí jenom tehdy, když se trigger použije v logické aplikaci nebo toku.

    Základní ověřování

  4. V horní části průvodce se ujistěte, že je název nastavený na GitHubDemo, a pak vyberte 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ření triggerů webhooků z uživatelského rozhraní

V této sekci si ukážeme, jak vytvořit trigger v uživatelském rozhraní, aniž byste v definici rozhraní OpenAPI měli definice triggerů. Začněte s výchozím bodem definice OpenAPI nebo začněte od začátku v průvodci vlastním konektorem.

  1. Na stránce Obecné zadejte popis a adresu URL.

    Parametr Hodnota
    Popis "GitHub je úložiště zdrojového kódu sociální sítě."
    Adresa 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 triggeru. V tomto příkladu vytváříte trigger, který se aktivuje, když do úložiště přijde žádost o přijetí změn.

    Vytvoření triggeru – 1

    Parametr Hodnota
    Souhrn "Triggery, když je zadána žádost o vydání na vybrané úložiště"
    Popis "Triggery, když je zadána žádost o vydání na vybrané úložiště"
    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é: obvykle se zobrazí 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.

    Stránka Definice - import z ukázky

  5. Definujte žádost na trigger webhooku a pak zvolte Importovat. Poskytujeme vám ukázku, kterou můžete importovat (pod obrázkem). Další informace naleznete v tématu Reference rozhraní API GitHub. Logic Apps a Power Automate automaticky přidávají standardní hlavičku content-type a hlavičky zabezpečení, takže je při importu z ukázky nemusíte definovat.

    Vytvoření triggeru – 2

    Parametr Hodnota
    Verb (Příkaz) "POST"
    Adresa URL "https://api.github.com/repos/{owner}/{repo}/hooks"
    Text 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ěď.

    Stránka Definice - odpověď

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

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

    Vytvoření triggeru – 4

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

Použití webhooku jako triggeru

Teď, když je vše nakonfigurované, můžete webhook použít v aplikaci logiky nebo toku. Dále vytvořte tok, který odešle nabízené oznámení mobilní aplikaci Power Automate vždy, když vaše úložiště GitHub obdrží požadavek git push.

  1. V flow.microsoft.com v horní části stránky zvolte Moje toky.

  2. Vyberte Vytvořit z prázdné, pak na další stránce zvolte Prohledejte stovky konektorů a triggerů.

    Hledat konektory

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

    Nový trigger

    Když kliknete na položku v seznamu, použije se jako trigger.

  4. Vzhledem k tomu, že tento vlastní konektor teď používáte poprvé, musíte se k němu připojit. Zadejte informace o připojení a poté zvolte Vytvořit.

    Nové propojení

    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.
  5. Zadejte podrobnosti o úložišti, které chcete monitorovat. Možná poznáváte pole z objektu WebhookRequestBody v souboru OpenAPI.

    Informace o úložišti

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

    Důležité

    Měli byste použít úložiště, ke kterému má váš účet práva. Nejjednodušší je použití vlastního úložiště.

  6. Zvolte + Nový krok a potom Přidat akci.

  7. Vyhledejte akci Nabízené oznámení a vyberte ji.

    Nabízené oznámení

  8. Zadejte nějaký text do pole Text a další pole pomocí hodnot z dialogového okna dynamického obsahu. Všimněte si, že tyto hodnoty pocházejí z objektu WebhookPushResponse v souboru OpenAPI.

    Podrobné informace o nabízených oznámeních

    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.
  9. V horní části stránky zadejte název toku a klikněte na Vytvořit tok.

    Název toku

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

Pokud chcete ověřit, že je všechno správně nastavené, vyberte Moje toky a potom vyberte informační ikonu vedle nového toku. Zobrazí se historie spuštění.

  • Mělo se zobrazovat nejméně jedno úspěšné spuštění (vytvoření webhooku). To znamená, že webhook se na straně Githubu úspěšně vytvořil.

  • Pokud se spuštění nepovedlo, můžete rozbalit podrobnosti tohoto spuštění a zjistit důvod neúspěchu. Pokud k selhání došlo kvůli odpovědi 404 Nenalezeno, je pravděpodobné, že váš účet GitHub nemá správná oprávnění k vytvoření webhooku v úložišti, které jste použili.

Souhrn

Pokud je vše správně nakonfigurované, obdržíte teď v mobilní aplikaci Power Automate nabízená oznámení při každém výskytu požadavku git push v úložišti GitHub, které jste vybrali. Pomocí výše uvedeného postupu můžete jako trigger ve svých tocích použít libovolnou službu, která podporuje webhooky.

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.