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

Webhooks sind einfache HTTP-Rückrufe, mit denen Ereignisbenachrichtigungen bereitgestellt werden. Azure Logic Apps und Power Automate erlauben es Ihnen, Webhooks als Auslöser zu 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. Dieses Lernprogramm demonstriert, wie ein Webhook als Trigger verwendet wird.

Hinweis

Wir werden GitHub als Beispiel für einen Dienst verwenden, der Benachrichtigungen über Webhooks senden kann, aber die hier gezeigten Techniken können auf jeden Dienst ausgedehnt werden, der Webhooks verwendet.

Voraussetzungen

Die OpenAPI-Definition

Webhooks werden in Logic Apps und Power Automate als Teil eines benutzerdefinierten Connectors implementiert. Daher müssen Sie eine OpenAPI-Definition bereitstellen, die die Form des Webhooks definiert. Wenn Sie einen Trigger erstellen möchten, aber keine OpenAPI-Definition haben, können Sie die Triggers-UI im Assistenten für benutzerdefinierte Konnektoren verwenden, um Webhook-Trigger zu definieren.

Die OpenAPI-Definition enthält drei Teile, die für eine ordnungsgemäße Funktionsweise des Webhooks entscheidend sind:

  • Erstellen des Webhooks
  • Definieren der eingehenden Hook-Anforderung über die API (in diesem Fall GitHub)
  • Löschen des Webhooks

Erstellen des Webhooks

Der Webhook wird auf der GitHub-Seite durch HTTP POST an /repos/{owner}/{repo}/hooks erstellt. Wenn eine neue Logik-App oder ein neuer Flow erstellt wird, werden sie mithilfe des in der OpenAPI-Definition definierten Triggers an diese URL gesendet. Es wird auch an die URL gepostet, wenn der Trigger geändert wird. Im Folgenden enthält die Eigenschaft post das Schema der Anfrage, die an GitHub gesendet wird.

"/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 Eigenschaft "x-ms-trigger": "single" ist eine Schemaerweiterung, die Logic Apps und Power Automate anweist, diesen Webhook in der Liste der verfügbaren Trigger im Designer anzuzeigen. Nehmen Sie sie also unbedingt mit auf.

Eingehende Hook-Anforderung über die API definieren

Die Form der eingehenden Hook-Anforderung (die Benachrichtigung von GitHub an Logic Apps oder Power Automate) wird in der benutzerdefinierten Eigenschaft x-ms-notification-content definiert, wie im vorherigen Beispiel gezeigt. Sie muss nicht den gesamten Inhalt der Anforderung enthalten, sondern nur die Teile, die Sie in Ihrer Logik-App oder Ihrem Flow verwenden möchten.

Webhook löschen

Die OpenAPI-Definition muss eine Definition zum Löschen des Webhook beinhalten. Logic Apps und Power Automate versuchen, den Webhook zu löschen, wenn Sie den Trigger aktualisieren und wenn Sie die Logic 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 Hook being deleted",
        "required": true,
        "type": "string"
        }
    ]
    }
},

Für den Aufruf zum Löschen des Webhooks ist kein zusätzlicher Unterrichts-Header enthalten. Dieselbe Verbindung, die im Konnektor verwendet wird, wird auch für den Aufruf zum Löschen von Webhooks verwendet.

Wichtig

Damit Logic Apps oder Power Automate einen Webhook löschen kann, muss die API muss zum Zeitpunkt der Erstellung des Webhook einen HTTP-Header Location in der Antwort 201 enthalten. Der Location-Header sollte den Pfad zum Webhook enthalten, der bei HTTP DELETE verwendet wird. Das Format der Location in der Antwort von GitHub folgt z. B. dem folgenden Format: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Aktivieren der Authentifizierung in GitHub

Die API, die die Webhook-Anforderung an Logic Apps oder Power Automate sendet, verwendet normalerweise eine Form der Authentifizierung, und GitHub ist keine Ausnahme. GitHub unterstützt verschiedene Arten der Authentifizierung; wir werden für dieses Tutorial persönliche GitHub-Zugriffstoken verwenden.

  1. Navigieren Sie zu GitHub, und melden Sie sich an, sofern Sie dies noch nicht getan haben.

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

    Einstellungen

  3. Wählen Sie im Menü auf der linken Seite Entwicklereinstellungen, und wählen Sie dann Persönliche Zugriffstoken.

  4. Wählen Sie die Schaltfläche Neues Token generieren, dann bestätigen Sie Ihr Kennwort, falls erforderlich.

    Neues Token generieren

  5. Geben Sie im Feld Tokenbeschreibung eine Beschreibung ein.

  6. Aktivieren Sie das Kontrollkästchen admin:repo_hook.

    admin:repo_hook

  7. Wählen Sie die Schaltfläche Token generieren.

  8. Notieren Sie sich das neue Token.

    Neues Token

    Wichtig

    Sie können auf dieses Token nicht noch einmal zugreifen. Sie sollten es kopieren und irgendwo einfügen, um es später im Tutorial zu verwenden.

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 Konnektors Logic Apps-Konnektor und dann Bearbeiten.

    Logic Apps-Konnektor bearbeiten

  3. Unter Allgemein wählen Sie OpenAPI-Datei hochladen aus und navigieren dann zur OpenAPI-Datei, die Sie heruntergeladen haben.

    Screenshot, der die Option zum Hochladen einer OpenAPI-Datei zeigt.

Importieren Sie die OpenAPI-Definition für Power Automate

  1. Gehen Sie zu flow.microsoft.com.

  2. Wählen Sie in der oberen rechten Ecke das Zahnradsymbol und wählen Sie dann Benutzerdefinierte Konnektoren.

    Benutzerdefinierte Connectors

  3. Wählen Sie Benutzerdefinierten Konnektor erstellen, und wählen Sie dann Postmann-Sammlung importieren.

    Erstellen des benutzerdefinierten Konnektors

  4. Geben Sie einen Namen für den benutzerdefinierten Konnektor ein, navigieren Sie dann zu der von Ihnen heruntergeladenen OpenAPI-Datei, und wählen Sie Verbinden aus.

    Screenshot, der das Feld zur Eingabe eines Namens zeigt.

    Parameter Wert
    Titel des benutzerdefinierten Connectors "GitHubDemo"

Beenden Sie die Erstellung des benutzerdefinierten Konnektors

  1. Auf der Seite Allgemein wählen Sie Fortsetzen.

  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. Dies sind nur Bezeichnungen, die angezeigt werden, wenn der Trigger in einer Logik-App oder einem Flow verwendet wird.

    Standardauthentifizierung

  4. Vergewissern Sie sich oben im Assistenten, dass der Name auf "GitHubDemo" gesetzt ist, und wählen Sie dann Konnektor erstellen.

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.

Erstellen von Webhook-Triggern von der UI

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

  1. Stellen Sie sicher, dass Sie auf der Seite Allgemein eine Beschreibung und eine 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. Auf der Seite Definition wählen Sie + Neuer Trigger, und füllen Sie die Beschreibung für Ihren Trigger aus. In diesem Beispiel erstellen Sie einen Trigger, der bei einer Pullanforderung an ein Repository ausgelöst wird.

    Erstellen des Triggers (1)

    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

    • kein Wert: wird normalerweise in der logischen Anwendung oder im logischen Ablauf 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.

    Definitionsseite - Import aus Muster

  5. Definieren Sie die Anforderung für den Webhook-Trigger und wählen Sie dann Importieren. Wir stellen Ihnen ein Muster zum Importieren zur Verfügung (unter dem Bild). Weitere Informationen finden Sie unter GitHub-API-Referenz. Logic Apps und Power Automate fügen automatisch Standard-content-type und Sicherheitskopfzeilen hinzu, sodass Sie diese beim Importieren aus einem Beispiel nicht definieren müssen.

    Erstellen des Triggers (2)

    Parameter Wert
    Verb „POST“
    URL "https://api.github.com/repos/{owner}/{repo}/hooks"
    Textkörper 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.

    Definitionsseite - Antwort

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

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

    Erstellen des Triggers (4)

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

Verwenden Sie den Webhook als Auslöser

Sie haben alle Einstellungen konfiguriert und können nun den Webhook in einer Logik-App oder einem Flow verwenden. Als nächstes erstellen Sie einen Flow, der eine Push-Benachrichtigung an die mobile Power Automate App sendet, sobald Ihr GitHub-Repo einen Git-Push erhält.

  1. Wählen Sie in flow.microsoft.com oben auf der Seite Meine Flüsse.

  2. Wählen Sie Komplett neu erstellen, und wählen Sie dann auf der nächsten Seite Hunderte von Konnektoren und Auslösern suchen.

    Connectors suchen

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

    Neuer Trigger

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

  4. Da dieser benutzerdefinierte Konnektor zum ersten Mal verwendet wird, muss eine Verbindung mit diesem hergestellt werden. Geben Sie Verbindungsinformationen ein und wählen Sie dann Erstellen.

    Neue Verbindung

    Parameter Wert
    Verbindungsname Ein beschreibender Name
    Benutzername Ihr GitHub-Benutzername
    Kennwort Das persönliche Zugriffstoken, das Sie zuvor erstellt haben
  5. 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.

    Repository-Informationen

    Parameter Wert
    Besitzer Der Besitzer des zu überwachenden Repositorys
    Aktualisieren Das zu überwachende Repo

    Wichtig

    Sie sollten ein Repository verwenden, für das Ihr Konto über Berechtigungen verfügt. Die einfachste Möglichkeit hierzu ist die Verwendung eines eigenen Repositorys.

  6. Wählen Sie + Neuer Schritt, und wählen Sie dann Aktion hinzufügen.

  7. Suchen Sie die Aktion Pushbenachrichtigung, und wählen Sie sie aus.

    Pushbenachrichtigung

  8. Geben Sie etwas Text in das Feld Text und in die anderen Felder ein und verwenden Sie dabei Werte aus dem Dialogfenster für dynamischen Inhalt. Beachten Sie, dass diese Werte aus dem WebhookPushResponse-Objekt in der OpenAPI-Datei stammen.

    Details der Pushbenachrichtigung

    Parameter Wert
    Verbindungsname Ein beschreibender Name
    Benutzername Ihr GitHub-Benutzername
    Kennwort Das persönliche Zugriffstoken, das Sie zuvor erstellt haben
  9. Geben Sie oben auf der Seite einen Namen für den Fluss ein und wählen Sie Fluss erstellen.

    Flowname

Überprüfung und Problembehandlung

Um zu überprüfen, ob alles korrekt eingerichtet ist, wählen Sie Meine Abläufe, und wählen Sie dann das Symbol Informationen neben dem neuen Ablauf, um den Ablaufverlauf anzuzeigen:

  • Es sollte mindestens eine erfolgreiche Ausführung vom Erstellen des Webhooks angezeigt werden. Dies gibt an, dass der Webhook auf der GitHub-Seite erfolgreich erstellt wurde.

  • Wenn das Ausführen fehlgeschlagen ist, können Sie Details zur Ausführung anzeigen, um die Fehlerursache zu ermitteln. Wenn der Fehler aufgrund der Antwort "404 Nicht gefunden" aufgetreten ist, verfügt das GitHub-Konto wahrscheinlich nicht über die richtigen Berechtigungen zum Erstellen von Webhooks im verwendeten Repository.

Zusammenfassung

Wenn alles korrekt konfiguriert ist, erhalten Sie jetzt Push-Benachrichtigungen in der mobilen App Power Automate, wann immer ein Git-Push auf das von Ihnen ausgewählte GitHub-Repository erfolgt. Mit dem oben beschriebenen Prozess können Sie jeden Webhook-fähigen Dienst als Trigger in Ihren Flows 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, gehen Sie zu Probleme melden oder Hilfe zu Connectors und wählen Sie einen Feedbacktyp aus.