Verwenden Sie einen Webhook als Auslöser für Azure Logic Apps und Power Automate

Webhooks sind einfache HTTP-Rückrufe, die Ereignisbenachrichtigungen bereitstellen, wenn etwas in einem Webdienst geschieht. In Azure Logic Apps und Power Automate können Sie Webhooks als Trigger verwenden. Eine logische Anwendung oder ein logischer Fluss wartet auf diesen Auslöser und führt eine Aktion aus, sobald der Auslöser ausgelöst wird. In diesem Lernprogramm wird veranschaulicht, wie Sie einen Webhook als Trigger über einen benutzerdefinierten Connector verwenden, der mit einer OpenAPI-Spezifikation definiert ist.

Anmerkung

In diesem Artikel wird GitHub als Beispiel für einen Dienst verwendet, der Benachrichtigungen über Webhooks senden kann. Sie können jedoch die hier gezeigten Techniken auf jeden Dienst erweitern, der Webhooks zulässt.

Voraussetzungen

Aktivieren der Authentifizierung in GitHub

Eine Webdienst-API, die eine Webhook-Anforderung an Logic Apps sendet oder Power Automate in der Regel eine Form der Authentifizierung verwendet, und GitHub ist keine Ausnahme. GitHub unterstützt mehrere Authentifizierungstypen. In diesem Tutorial werden fein abgestufte persönliche Zugriffstoken von GitHub verwendet.

  1. Wechseln Sie zu GitHub, und melden Sie sich an, wenn Sie es noch nicht getan haben.

  2. Wählen Sie oben rechts Ihr Profilbild aus, und wählen Sie dann im Menü "Einstellungen" aus.

  3. Wählen Sie im Menü auf der linken Seite "Entwicklereinstellungen" aus.

  4. Wählen Sie unter "Persönliche Zugriffstoken" feinkörnige Token aus.

  5. Wählen Sie die Schaltfläche " Neues Token generieren " aus, und bestätigen Sie ihr Kennwort bei Bedarf.

  6. Geben Sie einen Tokennamen und eine Beschreibung für das Token ein.

  7. Wählen Sie unter "Ablauf" ein Ablaufdatum für das Token aus.

  8. Wählen Sie unter Repositoryzugriffnur Repositorys aus, und wählen Sie das Repository aus, auf das Sie Zugriff gewähren möchten.

  9. Wählen Sie unter BerechtigungenBerechtigungen hinzufügen>Webhooks>Lesen und schreiben aus.

  10. Wählen Sie die Schaltfläche "Token generieren " aus.

  11. Notieren Sie sich das neue Token. Sie müssen dieses Token später verwenden, wenn Sie Ihren Webhook-Connector als Trigger hinzufügen.

    Wichtig

    Sie können nicht erneut auf dieses Token zugreifen. Kopieren Sie sie, und fügen Sie sie an einer beliebigen Stelle ein, die Sie später im Lernprogramm verwenden möchten.

Definieren des Webhooks in der OpenAPI-Definition

Sie implementieren Webhooks in Logic Apps und Power Automate als Teil eines benutzerdefinierten Connectors. Zum Erstellen des Connectors müssen Sie eine OpenAPI-Definition bereitstellen, die das Shape des Webhooks definiert. In diesem Lernprogramm wird eine heruntergeladene OpenAPI-Beispieldefinition für GitHub Webhooks verwendet.

Wenn Sie einen Trigger erstellen möchten, aber nicht über eine OpenAPI-Definition verfügen, mit der Sie arbeiten können, verwenden Sie im Assistenten für benutzerdefinierte Connectors die Benutzeroberfläche für Trigger, um Webhook-Trigger zu definieren.

Die OpenAPI-Beispieldefinition enthält drei Teile, die für die Funktionsweise des Webhooks von entscheidender Bedeutung sind:

  • Erstellen des Webhooks
  • Definieren der eingehenden Hook-Anforderung aus der Webdienst-API (in diesem Lernprogrammbeispiel GitHub)
  • Löschen des Webhooks

Der Connector verwendet diese OpenAPI-Definition, um zu verstehen, wie Webhooks für das GitHub-Repository erstellt, empfangen und gelöscht werden.

Erstellen des Webhooks

Der Connector verwendet die Webdienst-API (in unserem Beispiel die GitHub REST-API), um den Webhook auf der Webdienstseite zu erstellen, indem eine HTTP POST-Anforderung an den entsprechenden Webhook-Erstellungsendpunkt für den Webdienst gesendet wird (/repos/{owner}/{repo}/hooks im Fall von GitHub).

Wenn Sie eine neue Logik-App oder einen neuen Fluss mithilfe des Connectors erstellen, sendet der Connector eine POST-Anforderung an den Create-Webhook-Endpunkt des Webdiensts, wie in der OpenAPI-Definition des Connectors definiert. Sie sendet auch eine POST-Anfrage an diese URL, wenn Sie den Trigger der Logic App oder des Flows ändern. Im folgenden Beispiel für die OpenAPI-Pfadkonfiguration enthält die post Eigenschaft das Schema der Create-Webhook-Anforderung, die an die GitHub REST-API gesendet werden soll.

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

Wichtig

Die "x-ms-trigger": "single"-Eigenschaft ist eine Schemaerweiterung, die Logic Apps und Power Automate anweist, diesen Webhook in der Liste der im Designer verfügbaren Trigger anzuzeigen. Achten Sie darauf, es anzugeben.

Eingehende Hook-Anforderung über die API definieren

Definieren Sie die Struktur der eingehenden Hookanforderung (die Benachrichtigung von GitHub an Logic Apps oder Power Automate) in der benutzerdefinierten Eigenschaft x-ms-notification-content, wie im vorherigen Beispiel gezeigt. Die Anforderung muss nicht den gesamten Inhalt der Anforderung enthalten, nur die Teile, die Sie in Ihrer Logik-App oder ihrem Fluss verwenden möchten.

Webhook löschen

Fügen Sie eine Definition zum Löschen des Webhooks in die OpenAPI-Definition ein. Logic Apps und Power Automate versuchen, den vorhandenen Webhook zu löschen, wenn Sie den Trigger aktualisieren oder wenn Sie die Logik-App oder den Flow löschen.

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

Beim Webhook-Aufruf zum Löschen wird kein Header mitgesendet. Der Webhook-Aufruf zum Löschen verwendet dieselbe Verbindung wie der Connector.

Wichtig

Damit Logic Apps oder Power Automate einen Webhook löschen können, muss die API des Webdiensts einen Location HTTP-Header in der Antwort 201 enthalten, wenn der Webhook erstellt wird. Der Location Header sollte den Pfad zu dem Webhook enthalten, der mit der HTTP DELETE-Methode verwendet wird. Die in der Location Antwort GitHub enthaltene Kopfzeile folgt z. B. dem folgenden Format: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>

OpenAPI-Definition importieren

Beginnen Sie mit dem Importieren der OpenAPI-Definition für Logic Apps oder für Power Automate.

OpenAPI-Definition für Logic Apps importieren

  1. Navigieren Sie zum Azure-Portal, und öffnen Sie den Logic Apps-Konnektor, den Sie zuvor unter Erstellen eines benutzerdefinierten Azure Logic Apps-Konnektors erstellt haben.

  2. Wählen Sie im Menü Ihres Connectors Logik-Apps-Connector und dann Bearbeiten aus.

    Screenshot der Option

  3. Wählen Sie unter "Allgemein" die Option "OpenAPI-Datei hochladen" aus, und wechseln Sie dann zur OpenAPI-Beispieldatei, die Sie heruntergeladen haben.

    Screenshot der Option

Importieren Sie die OpenAPI-Definition für Power Automate

  1. Gehe zu https://make.powerautomate.com/.

  2. Wählen Sie in der oberen rechten Ecke das Zahnradsymbol und dann "Benutzerdefinierte Verbinder" aus.

    Screenshot des Zahnradsymbolmenüs mit der Option

  3. Wählen Sie "Benutzerdefinierten Connector erstellen" und dann "Postman-Sammlung importieren" aus.

    Screenshot des Menüs

  4. Geben Sie einen Namen für den benutzerdefinierten Connector ein, wechseln Sie zur openAPI-Beispieldatei, die Sie heruntergeladen haben, und wählen Sie "Verbinden" aus.

    Screenshot des Felds zum Eingeben eines benutzerdefinierten Connectornamens.

    Parameter Wert
    Titel des benutzerdefinierten Connectors „GitHubDemo“

Beenden Sie die Erstellung des benutzerdefinierten Konnektors

  1. Wählen Sie auf der Seite "Allgemein " die Option "Weiter" aus.

  2. Wählen Sie auf der Seite Sicherheit unter Authentifizierungstyp das Feld Basis-Authentifizierung.

  3. Geben Sie im Abschnitt Standardauthentifizierung für die Bezeichnungsfelder den Text Benutzername und Kennwort ein. Diese Bezeichnungen werden angezeigt, wenn Sie den Trigger in einer Logik-App oder einem Fluss verwenden.

    Screenshot der Beschriftungsfelder für die Standardauthentifizierung.

  4. Stellen Sie oben im Assistenten sicher, dass der Name auf "GitHubDemo" festgelegt ist, und wählen Sie dann " Connector erstellen" aus.

Sie sind jetzt bereit, den Trigger in einer Logik-App oder einem logischen Flow zu verwenden, oder Sie können weiterlesen, wie Sie Trigger von der Benutzungsoberfläche aus erstellen.

Webhook-Trigger über die UI erstellen

In diesem Abschnitt erfahren Sie, wie Sie einen Trigger in der Benutzeroberfläche erstellen, ohne dass in Ihrer OpenAPI-Definition Triggerdefinitionen vorhanden sind. Beginnen Sie mit einer OpenAPI-Basisdefinition, oder beginnen Sie im Assistenten für benutzerdefinierte Konnektoren ganz von vorne.

  1. Stellen Sie auf der Seite "Allgemein " sicher, dass Sie eine Beschreibung und URL angeben.

    Parameter Wert
    Beschreibung „GitHub ist ein soziales Quellcode-Repository“
    URL „api.github.com“
  2. Auf der Seite Sicherheit konfigurieren Sie die Basis-Authentifizierung, wie Sie es im vorigen Abschnitt getan haben.

  3. Wählen Sie auf der Seite "Definition " die Option "Neuer Trigger" aus, und füllen Sie die Beschreibung für den Trigger aus. In diesem Beispiel erstellen Sie einen Trigger, der bei einer Pullanforderung an ein Repository ausgelöst wird.

    Screenshot der neuen allgemeinen Informationsfelder des Triggers.

    Parameter Wert
    Zusammenfassung „Wird ausgelöst, wenn eine Pull-Anfrage an ein ausgewähltes Repository gestellt wird“
    Beschreibung „Wird ausgelöst, wenn eine Pull-Anfrage an ein ausgewähltes Repository gestellt wird“
    Betriebs-ID „webhook-PR-trigger“
    Sichtbarkeit „none“ (siehe unten für weitere Informationen)
    Triggertyp „Webhook“

    Die Eigenschaft Sichtbarkeit für Operationen und Parameter in einer logischen Anwendung oder einem logischen Ablauf hat folgende Optionen

    • Keine: wird in der Logic App oder im Flow normal angezeigt
    • Erweitert: versteckt unter einem zusätzlichen Menü
    • intern: für den Benutzer verborgen
    • wichtig: wird dem Benutzer immer zuerst angezeigt
  4. Der Bereich Anforderung zeigt Informationen an, die auf der HTTP-Anforderung für die Aktion basieren. Wählen Sie Importieren aus Beispiel.

    Screenshot der Seite

  5. Definieren Sie die Anforderung für den Webhook-Trigger, und wählen Sie dann "Importieren" aus. Wir stellen ein Beispiel für den Import bereit (im folgenden Abschnitt). Weitere Informationen finden Sie unter GitHub-API-Referenz. Logik-Apps und Power Automate fügen automatisch Standard content-type - und Sicherheitsheader hinzu, daher müssen Sie diese beim Importieren aus einem Beispiel nicht definieren.

    Screenshot des Dialogfelds

    Parameter Wert
    Verb POST
    URL „https://api.github.com/repos/{owner}/{repo}/hooks"
    Text Siehe unten
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. Der Bereich Antwort zeigt Informationen an, die auf der HTTP-Antwort für die Aktion basieren. Wählen Sie Standardantwort hinzufügen aus.

    Screenshot des Antwortbereichs der Seite „Definition“ mit der Option „Standardantwort hinzufügen“.

  7. Definieren Sie die Antwort für den Webhook-Trigger, und wählen Sie dann "Importieren" aus. Auch hier stellen wir Ihnen ein Muster zum Importieren zur Verfügung. Weitere Informationen finden Sie unter GitHub-API-Referenz.

    Screenshot des Dialogfelds

    {
      "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. Wählen Sie im Bereich Trigger-Konfiguration den Parameter, der den Callback-URL-Wert von GitHub erhalten soll. Dieser Parameter ist die url Eigenschaft im config Objekt.

    Screenshot des Konfigurationsbereichs

  9. Geben Sie oben im Assistenten einen Namen ein, und wählen Sie dann " Connector erstellen" aus.

Verwenden Sie den Webhook als Auslöser

Nachdem Sie alles konfiguriert haben, verwenden Sie den Webhook über den benutzerdefinierten Connector in einer Logik-App oder einem Fluss. Erstellen Sie als Nächstes einen Fluss, der eine E-Mail sendet, wenn Ihr GitHub Repository einen Git-Push empfängt.

  1. Wählen Sie oben auf der Seite https://make.powerautomate.com/My flows aus.

  2. Wählen Sie Ohne Vorlage erstellen aus.

    Screenshot der Option „Hunderte von Konnektoren und Triggern durchsuchen“

  3. Suchen Sie im Designer für Power Automate nach dem benutzerdefinierten Konnektor, den Sie zuvor registriert haben.

    Screenshot der Suche nach dem Trigger für benutzerdefinierte Konnektoren im Power Automate-Designer.

  4. Wählen Sie das Element in der Liste aus, um es als Trigger zu verwenden.

  5. Da Sie diesen benutzerdefinierten Connector zum ersten Mal verwendet haben, stellen Sie eine Verbindung damit her. Geben Sie Verbindungsinformationen ein, und wählen Sie dann "Erstellen" aus.

    Screenshot der neuen Verbindungsinformationsfelder.

    Parameter Wert
    Verbindungsname Ein beschreibender Name
    Benutzername Ihr GitHub-Benutzername
    Kennwort Das persönliche Zugriffstoken, das Sie zuvor erstellt haben
  6. Geben Sie Details zum Repository ein, das überwacht werden soll. Möglicherweise erkennen Sie die Felder aus dem WebhookRequestBody-Objekt in der OpenAPI-Datei wieder.

    Screenshot der Felder „Repository-Besitzer“ und „Name“ für den Trigger.

    Parameter Wert
    Besitzer Der Besitzer des zu überwachenden Repositorys
    Repository Das zu überwachende Repository

    Wichtig

    Verwenden Sie ein Repository, für das Ihr Konto Rechte hat. Die einfachste Möglichkeit hierfür ist die Verwendung Ihres eigenen Repositorys.

  7. Wählen Sie Nächster Schritt>Aktion hinzufügen aus.

  8. Suchen Und wählen Sie die Aktion " E-Mail senden" (V2) aus.

  9. Geben Sie Text in das Feld "Textkörper " und die anderen Felder ein, wobei Werte aus dem Dialogfeld "Dynamischer Inhalt" verwendet werden. Werte stammen aus dem WebhookPushResponse-Objekt in der OpenAPI-Datei.

  10. Geben Sie oben auf der Seite einen Namen für den Fluss ein und wählen Sie Fluss erstellen.

    Screenshot des Felds

Überprüfung und Problembehandlung

Um zu überprüfen, ob alles ordnungsgemäß eingerichtet ist, wählen Sie "Meine Flüsse" aus, und wählen Sie dann das Informationssymbol neben dem neuen Fluss aus, um den Ausführungsverlauf anzuzeigen:

  • Es sollte mindestens eine erfolgreiche Ausführung vom Erstellen des Webhooks angezeigt werden. Diese Ausführung gibt an, dass der Webhook erfolgreich auf der GitHub-Seite erstellt wurde.
  • Wenn die Ausführung fehlgeschlagen ist, überprüfen Sie die Ausführungsdetails, um zu sehen, warum die Ausführung fehlgeschlagen ist. Wenn der Fehler auf eine 404 Not Found Antwort zurückzuführen war, verfügt Ihr GitHub Konto wahrscheinlich nicht über die richtigen Berechtigungen, um einen Webhook für das verwendete Repository zu erstellen.

Zusammenfassung

Wenn Sie alles richtig konfiguriert haben, erhalten Sie Pushbenachrichtigungen in der mobilen Power Automate-App, wenn ein Git-Push im ausgewählten GitHub Repository auftritt. Mithilfe des vorherigen Prozesses können Sie jeden webhook-fähigen Dienst als Trigger in Ihren Flüssen verwenden.

Nächste Schritte

Feedback senden

Wir freuen uns sehr über Feedback zu Problemen mit unserer Connector-Plattform oder neuen Feature-Ideen. Wenn Sie Feedback geben möchten, wechseln Sie zu Probleme melden oder Hilfe zu Connectors erhalten und wählen Sie den Typ Ihres Feedbacks aus.