Webhook használata eseményindítóként az Azure Logic Apps szolgáltatáshoz és a Microsoft Power Automate megoldáshoz

A webhookok eseményértesítések biztosításához használt egyszerű HTTP-visszahívások. Az Azure Logic Apps és a Power Automate is lehetővé teszi webhookok eseményindítóként való használatát. Egy logikai alkalmazás vagy folyamat figyeli ezt az eseményindítót, és végrehajt egy műveletet, amikor az eseményindító utasítást ad. Ez az oktatóanyag bemutatja, hogyan használhatók fel a webhookok eseményindítóként.

Megjegyzés

A GitHubot alkalmazzuk az olyan szolgáltatások példájaként, melyek képesek webhookokkal értesítéseket küldeni, de a bemutatott módszerek bármely webhookokat használó szolgáltatásra kiterjeszthetők.

Előfeltételek

A OpenAPI meghatározás

A webhookok a Logic Apps és Power Automate egy egyéni összekötő részeként vannak megvalósítva, ezért meg kell adnia egy definíciót, amely meghatározza a webhook alakját OpenAPI . Ha eseményindítót szeretne létrehozni, de nincs definíciója OpenAPI , az egyéni összekötő varázsló eseményindítók felhasználói felületén definiálhatja a webhook-eseményindítókat.

A OpenAPI definíció három részből áll, amelyek kritikusak a webhook működéséhez:

  • A webhook létrehozása
  • Az API-tól (ebben az esetben a GitHubtól) érkező horogkérelem definiálása.
  • A webhook törlése

A webhook létrehozása

A webhookot a GitHub oldalán hozza létre egy, a(z) /repos/{owner}/{repo}/hooks címre irányuló HTTP POST művelet. Új logikai alkalmazás vagy folyamat létrehozásakor a definícióban meghatározott eseményindítóval OpenAPI teszi közzé ezt az URL-címet. Az eseményindító módosítása esetén is közzétesz az URL-címen. A következőkben a post tulajdonság tartalmazza a GitHubon közzétett kérés sémáját.

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

Fontos

Az "x-ms-trigger": "single" tulajdonság egy sémakiterjesztés, amely megjelenítteti a Logic Appsszel és a Power Automate-tel ezt a webhookot a tervezőben az elérhető eseményindítók listáján, ezért semmiképp se hagyja ki.

Az API-ból érkező hookkérés meghatározása

A bejövő hookkérés alakja (a GitHubról a Logic Apps vagy Power Automate) az egyéni x-ms-notification-content tulajdonságban van definiálva, ahogy az előző mintában látható. Nem szükséges a kérelem teljes tartalmát magában foglalnia, csak azokat a részeit, amelyeket használni kíván a logikai alkalmazásban vagy folyamatban.

A webhook törlése

A OpenAPI definíciónak tartalmaznia kell a webhook törlésének definícióját . A Logic Apps és a Power Automate akkor kísérli meg törölni a webhookot, ha frissíti az eseményindítót, vagy ha törli a logikai alkalmazást vagy a folyamatot.

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

A törlési webhookhíváshoz nem tartalmaz tandíjfejlécet. A webhook törlése híváshoz is ugyanazt a kapcsolatot használja a csatlakozó.

Fontos

Ha azt szeretné, hogy a Logic Apps vagy a Power Automate töröljön egy webhookot, az API-nak tartalmaznia kell egy Location HTTP-fejlécet a 201-es válaszban a webhook létrehozásakor. A Location fejlécnek tartalmaznia kell a webhook elérési útját, melyet a HTTP DELETE művelet használ. A GitHub válaszában szereplő Location fejléc formátuma például a következő: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Engedélyezze a hitelesítést a GitHub szolgáltatásban

A webhookkérelmet a Logic Appsbe vagy a Power Automate-be küldő API általában használ valamilyen hitelesítést, és ez alól a GitHub sem kivétel. A GitHub többféle hitelesítést támogat; ehhez az oktatóanyaghoz GitHub személyes hozzáférési jogkivonatokat használunk.

  1. Nyissa meg a GitHub webhelyét, és ha még nem tette meg, jelentkezzen be.

  2. A jobb felső sarokban válassza ki a profilképépét, majd a menüben a Beállítások pontot.

    Beállítások

  3. A bal oldali menüben a Fejlesztői beállítások között válassza a Személyes hozzáférési jogkivonatok lehetőséget.

  4. Válassza az Új jogkivonat létrehozása gombot, és szükség esetén erősítse meg a jelszavát.

    Új kód létrehozása

  5. A Token description (Kód leírása) mezőben adjon meg egy leírást.

  6. Jelölje be az admin:repo_hook jelölőnégyzetet.

    admin:repo_hook

  7. Válassza a Jogkivonat létrehozása gombot.

  8. Jegyezze fel az új kódot.

    Új kód

    Fontos

    Ehhez a kódhoz többé nem fog hozzáférni. Másolja és illessze be valahová, hogy az oktatóanyag későbbi részeiben használni tudja.

A definíció importálása OpenAPI

Először importálja a definíciót OpenAPI a Logic Apps vagy a számára Power Automate.

A Logic Apps definíciójának importálása OpenAPI

  1. Lépjen az Azure Portalra, és nyissa meg az Azure Logic Apps egyéni összekötőjének létrehozását ismertető szakaszban korábban létrehozott Logic Apps-összekötőt.

  2. Az összekötő menüjében válassza a Logic Apps csatlakozólehetőséget, majd a Szerkesztés elemet.

    Logic Apps-csatlakozó szerkesztése

  3. Az Általános alatt válassza a Fájl feltöltése lehetőséget OpenAPI , majd navigáljon a letöltött fájlhoz OpenAPI .

    Képernyőkép a Fájl feltöltése OpenAPI lehetőségről.

A definíció importálása OpenAPI Power Automate

  1. Ugorjon a flow.microsoft.com webhelyre.

  2. A jobb felső sarokban válassza a fogaskerék ikont, majd válassza az Egyéni összekötők lehetőséget.

    Egyéni összekötők

  3. Válassza az Egyéni összekötő létrehozása, majd a Postman-gyűjtemény importálása lehetőséget.

    Egyéni összekötő létrehozása

  4. Adja meg az egyéni összekötő nevét, majd keresse meg a letöltött fájlt, és válassza a OpenAPI Csatlakozás lehetőséget.

    Képernyőkép a név megadására szolgáló mezőről.

    Paraméter Érték
    Egyéni összekötő neve "GitHubDemo"

Az egyéni összekötő létrehozásának befejezése

  1. Az Általános lapon válassza a Folytatás lehetőséget.

  2. A Biztonság lapon, a Hitelesítés típusa területen válassza az Alapvető hitelesítés lehetőséget.

  3. Az Alapszintű hitelesítés szakasz címkemezőibe írja be a Felhasználónév és a Jelszó szöveget. Ezek csak címkék, amelyek akkor jelennek meg, ha az eseményindítót logikai alkalmazásban vagy folyamatban használják.

    Alapszintű hitelesítés

  4. Ellenőrizze, hogy a varázsló tetején a név GitHubDemo” értékre van-e állítva, majd válassza az Összekötő létrehozása lehetőséget.

Most már készen áll arra, hogy egy logikai alkalmazásban vagy folyamatban használja az eseményindítót, vagy elolvashatja, hogyan hozhat létre eseményindítókat a felhasználói felületről.

Webhook-eseményindítók létrehozása a felhasználói felületen

Ebben a szakaszban bemutatjuk, hogyan hozhat létre eseményindítót a felhasználói felületen anélkül, hogy eseményindító-definíciók lennének a OpenAPI definícióban. Kezdjen egy alapkonfiguráció-definícióval OpenAPI , vagy kezdje teljesen elölről az egyéni összekötő varázslóban.

  1. Az Általános lapon mindenképpen adjon meg egy leírást és egy URL-címet.

    Paraméter Érték
    Leírás „A GitHub egy közösségi forráskód-adattár.”
    URL-cím „api.github.com”
  2. A Biztonság lapon konfigurálja az alapszintű hitelesítést, ahogy az előző részben.

  3. A Definíció lapon válassza a + Új eseményindító lehetőséget, majd töltse ki az eseményindító leírását. Ebben a példában létrehoz egy eseményindítót, amely akkor aktiválódik, amikor a rendszer lekérési kérelmet küld egy adattárba.

    A Trigger-1 létrehozása

    Paraméter Érték
    Összegzés „Eseményindítás, amikor a kijelölt adattár lekérési kérelmet kap”
    Leírás „Eseményindítás, amikor a kijelölt adattár lekérési kérelmet kap”
    Műveletazonosító „webhook-PR-eseményindító”
    Láthatóság „nincs” (a további tudnivalókat lásd lent)
    Eseményindító típusa „Webhook”

    Egy logikai alkalmazásban vagy folyamatban lévő műveletek és paraméterek láthatósági tulajdonsága a következő lehetőségekkel rendelkezik:

    • nincs: normál esetben megjelenik a logikai alkalmazásban vagy folyamatban
    • fejlett: Egy további menü alatt elrejtve található
    • belső: A felhasználók elől rejtve van
    • fontos: mindig elsőként jelenik meg a felhasználó számára
  4. A Kérelem terület a művelet HTTP-kérelme alapján jeleníti meg az információkat. Válassza az Importálás mintából lehetőséget.

    Meghatározás lap – Importálás mintából

  5. Határozza meg a lekérdezéses eseményindítóhoz tartozó kérést, majd válassza az Importálás elemet. Egy mintát biztosítunk az importáláshoz (a kép alatt). További információt a GitHub API-referenciában talál. A Logic Apps és a Power Automate automatikusan hozzáadja a standard content-type elemet és a biztonsági fejléceket, tehát ezeket nem kell meghatároznia a mintából importálás során.

    A Trigger-2 létrehozása

    Paraméter Érték
    Művelet "POST"
    URL-cím „https://api.github.com/repos/{owner}/{repo}/hooks”
    Törzs Lásd alább.
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. A Válasz terület a művelet HTTP-válasza alapján jeleníti meg az információkat. Válassza az Alapértelmezett válasz hozzáadása lehetőséget.

    Definíció oldal – válasz

  7. Határozza meg a lekérdezéses eseményindítóhoz tartozó választ, majd válassza az Importálás elemet. Itt is egy mintát biztosítunk az importáláshoz. További információt a GitHub API-referenciában talál.

    A Trigger-3 létrehozása

    {
      "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. Az Eseményindító konfigurálása területen válassza ki azt a paramétert, amely a visszahívási URL-értéket kapja GitHub felől. Ez az url tulajdonság tartalmazza a config objektumban.

    A Trigger-4 létrehozása

  9. A varázsló tetején adja meg a nevet, majd válassza az Összekötő létrehozása lehetőséget.

A webhook használata eseményindítóként

Most, hogy mindent konfigurált, használhatja a webhookot egy logikai alkalmazásban vagy folyamatban. Ezután hozzon létre egy folyamatot, amely minden alkalommal leküldéses értesítést küld a Power Automate-mobilalkalmazásnak, amikor a GitHub-adattár git push parancsot kap.

  1. A flow.microsoft.com oldalon, az lap tetején válassza a Saját folyamatok lehetőséget.

  2. Válassza a Létrehozás nulláróllehetőséget, majd a következő oldalon válassza a Keresés több száz összekötő és eseményindító között lehetőséget.

    Összekötők keresése

  3. A Power Automate tervezőjében keresse meg a korábban regisztrált egyéni összekötőt.

    Új eseményindító

    Kattintson az elemre a listában annak eseményindítóként való használatához.

  4. Mivel először használja ezt az egyéni összekötőt, csatlakoznia kell hozzá. Adja meg a kapcsolati adatokat ,majd válassza a Létrehozás lehetőséget.

    Új kapcsolat

    Paraméter Érték
    Kapcsolat neve Egy beszédes név
    Felhasználónév Az Ön GitHub-felhasználóneve
    Jelszó A korábban létrehozott személyes hozzáférési jogkivonatot
  5. Adja meg a nyomon követni kívánt adattár adatait. Előfordulhat, hogy felismeri a fájl WebhookRequestBody objektumának OpenAPI mezőit.

    Adattár adatai

    Paraméter Érték
    tulajdonos A nyomon követendő adattár tulajdonosa
    adattár A nyomon követendő adattár

    Fontos

    Olyan adattárat válasszon, amelyhez hozzáfér a fiókja. Ez a legegyszerűbben saját adattár használatával biztosítható.

  6. Válassza az + Új lépés, majd a Művelet hozzáadása lehetőséget.

  7. Keresse meg és jelölje ki a Leküldéses értesítés műveletet.

    Leküldéses értesítés

  8. Írjon be szöveget a Szöveg és a többi mezőbe a többi mezőt, a dinamikus tartalom párbeszédpanel értékeinek felhasználásával. Vegye figyelembe, hogy ezek az értékek a fájl WebhookPushResponse objektumából OpenAPI származnak.

    Leküldéses értesítés részletei

    Paraméter Érték
    Kapcsolat neve Egy beszédes név
    Felhasználónév Az Ön GitHub-felhasználóneve
    Jelszó A korábban létrehozott személyes hozzáférési jogkivonatot
  9. A lap tetején adja meg a folyamat nevét és válassza a Folyamat létrehozása lehetőséget.

    Folyamat neve

Ellenőrzés és hibaelhárítás

A beállítások helyességének ellenőrzéséhez válassza a Saját folyamatok elemet majd az új folyamat melletti információs ikont választva jelenítse meg a futtatási előzményeket:

  • Már látnia kell legalább egy „Sikeres” futtatást a webhook létrehozása miatt. Ez jelzi, hogy a webhook sikeresen létrejött a GitHub oldalán.

  • Amennyiben a futtatás sikertelen volt, a részleteket megnyitva megtudhatja, hogy miért. Ha a hiba oka egy „404 Nem található” válasz, akkor a GitHub-fiókja feltehetően nem rendelkezik a webhook létrehozásához szükséges megfelelő engedélyekkel a használt adattárnál.

Összesítés

Ha mindent helyesen konfigurált, akkor ezentúl mindig leküldéses értesítést kap a Power Automate-mobilalkalmazásban, ha git push művelet megy végbe a kiválasztott GitHub-adattárban. A fenti eljárással bármilyen, webhookok használatára képes szolgáltatást felhasználhat eseményindítóként a folyamataiban.

Következő lépések

Visszajelzés küldése

Nagyra értékeljük az összekötőplatform problémáival kapcsolatos visszajelzéseket és az új funkciókkal kapcsolatos ötleteket. Ha visszajelzést szeretne küldeni, lépjen a Problémák küldése vagy segítség kérése az összekötőkkel kapcsolatban részre, és válassza ki a visszajelzés típusát.