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
- Jedno z následujících předplatných:
- Azure, pokud používáte Logic Apps
- Power Automate
- Sestavení základního prostředí aplikace logikynebo toky a vlastní konektory.
- Pokud používáte Logic Apps, nejprve vytvořte vlastní konektor Azure Logic Apps.
- Základní znalosti webhooků
- Základní pochopení specifikace OpenAPI (dříve známý jako Swagger).
- Účet GitHub.
- Definice ukázky OpenAPI pro tento kurz.
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.
Přejděte na GitHub a přihlaste se (pokud jste to ještě neudělali).
V pravém horním rohu klikněte na svůj profilový obrázek a potom v nabídce klikněte na Nastavení.
V nabídce nalevo v části Nastavení pro vývojáře klikněte na Osobní přístupové tokeny.
Vyberte tlačítko Generovat nový token a poté požádejte o potvrzení hesla.
Do pole Popis tokenu zadejte popis.
Zaškrtněte políčko admin:repo_hook.
Klikněte na tlačítko Vygenerovat token.
Nový token si poznamenejte.
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
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.
V nabídce konektoru zvolte Konektor Logic Apps, pak zvolte Upravit.
V části Obecné zvolte Nahrát soubor OpenAPI a pak přejděte k souboru OpenAPI, který jste stáhli.
Import definice OpenAPI pro Power Automate
Přejděte na flow.microsoft.com.
V pravém horním rohu vyberte ikonu ozubeného kola a pak vyberte Vlastní konektory.
Zvolte Vytvořit vlastní konektor a pak vyberte Importovat Postman Collection.
Zadejte název vlastního konektoru, přejděte k definici OpenAPI, kterou jste stáhli nebo vytvořili, a vyberte Pokračovat.
Parametr Hodnota Custom connector title "GitHubDemo"
Dokončení vytváření vlastního konektoru
Na stránce Obecné zvolte Pokračovat.
Na stránce Zabezpečení pod možností Typ ověření vyberte Základní ověřování.
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.
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.
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" Na stránce Zabezpečení nakonfigurujte základní ověřování jako v předchozí části.
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.
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
Oblast Žádost zobrazuje informace na základě požadavku HTTP na akci. Zvolte Importovat z ukázky.
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.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" } }
Oblast Žádost zobrazuje informace na základě reakce HTTP na akci. Vyberte Přidat výchozí odpověď.
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.
{ "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" } } }
V oblasti Konfigurace triggeru vyberte parametr, který má přijmout hodnotu URL zpětného volání z GitHub. Toto je vlastnost
url
v objektuconfig
.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.
V flow.microsoft.com v horní části stránky zvolte Moje toky.
Vyberte Vytvořit z prázdné, pak na další stránce zvolte Prohledejte stovky konektorů a triggerů.
V návrháři pro Power Automate vyhledejte vlastní konektor, který jste zaregistrovali dříve.
Když kliknete na položku v seznamu, použije se jako trigger.
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.
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. Zadejte podrobnosti o úložišti, které chcete monitorovat. Možná poznáváte pole z objektu WebhookRequestBody v souboru OpenAPI.
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ě.
Zvolte + Nový krok a potom Přidat akci.
Vyhledejte akci Nabízené oznámení a vyberte ji.
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.
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. V horní části stránky zadejte název toku a klikněte na Vytvořit tok.
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
- Vytvoření vlastního konektoru pro webové rozhraní API
- Ověřování rozhraní API a konektoru pomocí Microsoft Entra ID
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.