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
- Eines der folgenden Abonnements:
- Azure, wenn Sie Logic Apps verwenden
- Power Automate
- Grundlegende Erfahrungen mit der Erstellung von Logik-Apps oder Flüsse und Kundenspezifische Konnektoren.
- Wenn Sie Logic Apps verwenden, erstellen Sie zunächst einen benutzerdefinierten Konnektor von Azure Logic Apps.
- Grundlegende Kenntnisse zu Webhooks.
- Grundverständnis der OpenAPI-Spezifikation (früher bekannt als Swagger).
- Ein GitHub-Konto.
- Die Beispiel-OpenAPI-Definition für dieses Tutorial.
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.
Navigieren Sie zu GitHub, und melden Sie sich an, sofern Sie dies noch nicht getan haben.
Wählen Sie oben rechts Ihr Profilbild, und wählen Sie dann im Menü Einstellungen.
Wählen Sie im Menü auf der linken Seite Entwicklereinstellungen, und wählen Sie dann Persönliche Zugriffstoken.
Wählen Sie die Schaltfläche Neues Token generieren, dann bestätigen Sie Ihr Kennwort, falls erforderlich.
Geben Sie im Feld Tokenbeschreibung eine Beschreibung ein.
Aktivieren Sie das Kontrollkästchen admin:repo_hook.
Wählen Sie die Schaltfläche Token generieren.
Notieren Sie sich das neue 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
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.
Wählen Sie im Menü Ihres Konnektors Logic Apps-Konnektor und dann Bearbeiten.
Unter Allgemein wählen Sie OpenAPI-Datei hochladen aus und navigieren dann zur OpenAPI-Datei, die Sie heruntergeladen haben.
Importieren Sie die OpenAPI-Definition für Power Automate
Gehen Sie zu flow.microsoft.com.
Wählen Sie in der oberen rechten Ecke das Zahnradsymbol und wählen Sie dann Benutzerdefinierte Konnektoren.
Wählen Sie Benutzerdefinierten Konnektor erstellen, und wählen Sie dann Postmann-Sammlung importieren.
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.
Parameter Wert Titel des benutzerdefinierten Connectors "GitHubDemo"
Beenden Sie die Erstellung des benutzerdefinierten Konnektors
Auf der Seite Allgemein wählen Sie Fortsetzen.
Wählen Sie auf der Seite Sicherheit unter Authentifizierungstyp das Feld Basis-Authentifizierung.
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.
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.
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" Auf der Seite Sicherheit konfigurieren Sie die Basis-Authentifizierung, wie Sie es im vorigen Abschnitt getan haben.
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.
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
Der Bereich Anforderung zeigt Informationen an, die auf der HTTP-Anforderung für die Aktion basieren. Wählen Sie Importieren aus Beispiel.
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.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" } }
Der Bereich Antwort zeigt Informationen an, die auf der HTTP-Antwort für die Aktion basieren. Wählen Sie Standardantwort hinzufügen.
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.
{ "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" } } }
Wählen Sie im Bereich Trigger-Konfiguration den Parameter, der den Callback-URL-Wert von GitHub erhalten soll. Dies ist die
url
-Eigenschaft imconfig
-Objekt.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.
Wählen Sie in flow.microsoft.com oben auf der Seite Meine Flüsse.
Wählen Sie Komplett neu erstellen, und wählen Sie dann auf der nächsten Seite Hunderte von Konnektoren und Auslösern suchen.
Suchen Sie im Designer für Power Automate nach dem benutzerdefinierten Konnektor, den Sie zuvor registriert haben.
Wählen Sie das Element in der Liste, um es als Trigger zu verwenden.
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.
Parameter Wert Verbindungsname Ein beschreibender Name Benutzername Ihr GitHub-Benutzername Kennwort Das persönliche Zugriffstoken, das Sie zuvor erstellt haben 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.
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.
Wählen Sie + Neuer Schritt, und wählen Sie dann Aktion hinzufügen.
Suchen Sie die Aktion Pushbenachrichtigung, und wählen Sie sie aus.
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.
Parameter Wert Verbindungsname Ein beschreibender Name Benutzername Ihr GitHub-Benutzername Kennwort Das persönliche Zugriffstoken, das Sie zuvor erstellt haben Geben Sie oben auf der Seite einen Namen für den Fluss ein und wählen Sie Fluss erstellen.
Ü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
- Erstellen Sie einen benutzerdefinierten Konnektor für eine Web-API
- Authentifizieren Sie Ihre API und Ihren Konnektor mit Microsoft Entra ID
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.