Benutzerdefinierten Abfragetrigger verwenden

Bei einem Abrufauslöser handelt es sich im Grunde um ein Ereignis, das regelmäßig einen Aufruf an Ihren Dienst sendet, um nach neuen Daten zu suchen. Abrufauslöser unterscheiden sich von Webhooks dahingehend, dass sie ein Ereignis initiieren, um zu ermitteln, ob neue Daten vorliegen, während Webhooks auf das Pushen neuer Daten aus dem Dienst reagieren. Nachdem der Flow ermittelt hat, dass neue Daten vorliegen, kann eine Aktion mit diesen Daten ausgeführt werden. In diesem Tutorial erfahren Sie, wie Sie mithilfe eines Abrufauslösers proaktiv neue Daten abrufen.

Voraussetzungen

Erfahren Sie, wie ein Abruftrigger neue Daten erfasst

Ein Abrufauslöser legt zunächst einen Status fest und überprüft dann innerhalb eines Intervalls regelmäßig, ob eine Aktualisierung vorliegt. Anschließend fordert der Auslöser alle neuen Daten seit der letzten Statusaktualisierung an. Darüber hinaus verwaltet der Auslöser den Statuskontext zwischen Anforderungen.

Das folgende Beispiel bietet einen Überblick über das Abrufen neuer Daten durch einen Abruftrigger.

Abrufen von Daten durch einen Abrufauslöser

  1. Die Flow-Runtime richtet einen ersten Abruf für den Auslöser an die API im Connector.
  2. Der Connector ruft daraufhin den Back-End-Dienst auf.
  3. Der Back-End-Dienst gibt alle aktuellen Daten an den Connector zurück.
  4. Der Connector gibt wiederum eine Meldung vom Typ 202 Akzeptiert, ein Wiederholungsintervall und einen Location-Header mit dem aktuellen Status zurück. Das Wiederholungsintervall wird in Sekunden angegeben. Der erste Abruf dient jeweils zur Bestimmung des vorläufigen Status der Daten.
  5. Nach Ablauf des Wiederholungsintervalls richtet die Flow-Runtime einen weiteren Aufruf mit dem Location-Header und dem aktuellen Status (in diesem Beispiel: 1) an den Connector.
  6. Da der Zustand nun „1“ lautet, ruft der Connector die passende API auf, die die entsprechende Filterung vornimmt, sodass die korrekten Daten zurückgegeben werden. In diesem Beispiel generiert der Connector eine gefilterte Abfrage mit der Angabe, dass das Erstellungsdatum größer als ein bestimmter Zeitstempel sein soll.
  7. Da in diesem Beispiel seit dem Erstellungsdatum keine neuen Daten hinzugekommen sind, wird ein leerer Satz von Werten an den Connector zurückgesendet.
  8. Der Connector gibt daraufhin eine Meldung vom Typ 202 Akzeptiert, ein Wiederholungsintervall und einen Location-Header mit unverändertem Status zurück.
  9. Nach erneutem Ablauf des Wiederholungsintervalls richtet die Flow-Runtime einen weiteren Aufruf mit dem gleichen Location-Header und Status an den Connector.
  10. Der Connector führt erneut die entsprechende Filterung anhand des Erstellungsdatums durch.
  11. Diesmal sind seit dem Erstellungsdatum neue Daten verfügbar geworden, und das Back-End gibt die Werte der gesamten neuen Daten an den Connector zurück.
  12. Der Connector gibt eine Meldung vom Typ 200 OK, ein Wiederholungsintervall, den Ort mit einem neuen Statuswert und ein Array von Werten mit allen neuen Daten zurück, die nach dem Erstellungsdatum verfügbar geworden sind. An diesem Punkt wird der Flow gestartet.

Erstellen von Abrufauslösern über die Benutzeroberfläche

Dieser Abschnitt zeigt, wie ein Abfrage-Trigger in der Power Automate-Benutzeroberfläche erstellt wird. Bei diesem Vorgang verwenden Sie den TripPin-Service als Ausgangspunkt. Der TripPin-Service ist eine sehr einfache REST-API mit einer Liste von Personen und deren Reisen.

Um den TripPin-Service verwenden zu können, müssen Sie zuerst die für den Service erforderlichen URLs dynamisch erstellen. Geben Sie https://services.odata.org/TripPinRESTierService in die Adressleiste Ihres Browsers ein. Dadurch werden die für diese Demonstration erforderlichen Metadaten zurückgegeben. Kopieren Sie die Metadaten, und speichern Sie sie zur späteren Verwendung in einer Datei.

Gehen Sie wie folgt vor, um den TripPin-Service einzurichten und den Abrufauslöser zu erstellen:

  1. Wählen Sie in Power Automate die Registerkarte Daten > Benutzerdefinierte Konnektoren.

  2. Wählen Sie im Bereich Benutzerdefinierte Connectors die Option Neuer benutzerdefinierter Connector und anschließend Ohne Vorlage neu erstellen aus.

  3. Geben Sie im Dialogfeld Benutzerdefinierten Connector erstellen den Namen Ihres benutzerdefinierten Connectors (in diesem Beispiel: Abruftest) ein, und wählen Sie anschließend Weiter aus.

  4. Geben Sie auf der Seite Allgemein eine Beschreibung und einen Host an. Verwenden Sie in diesem Beispiel die URL services.odata.org aus den zurückgegebenen TripPin-Metadaten als Host.

    Parameter Value
    Beschreibung „TripPin ist ein Beispiel für eine Reisewebsite.“
    Host „services.odata.org“

    Hinzufügen von Beschreibung und Host

  5. Wählen Sie auf der Seite Sicherheit den Authentifizierungstyp Keine Authentifizierung aus.

    Abrufauthentifizierung

  6. 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 Auslöser, der ausgelöst wird, wenn dem Reiseplan einer Person eine neue Reise hinzugefügt wird.

    Erstellen eines neuen Auslösers

    Parameter Value
    Zusammenfassung „Triggers when a new trip is added“ (Wird ausgelöst, wenn eine neue Reise hinzugefügt wird.)
    Beschreibung „Triggers when a new trip is added“ (Wird ausgelöst, wenn eine neue Reise hinzugefügt wird.)
    Betriebs-ID „OnNewTrip“
    Sichtbarkeit „none“ (Weitere Informationen finden Sie unten in der Liste)
    Triggertyp „Abruf“

    Die Eigenschaft Sichtbarkeit für Vorgänge und Parameter in einem Flow bietet folgende Optionen:

    • keine : wird normalerweise im Flow angezeigt
    • Erweitert: versteckt unter einem zusätzlichen Menü
    • intern: für den Benutzer verborgen
    • wichtig: wird dem Benutzer immer zuerst angezeigt
  7. 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

  8. Der Bereich Aus Beispiel importieren dient zum Definieren der Anforderung für den Abrufauslöser. Wählen Sie das Verb GET aus. Kopieren Sie die URL-Adresse aus den Metadaten, die Sie beim dynamischen Erstellen der für den Dienst erforderlichen URLs erhalten haben, im Bereich Aus Beispiel importieren in das Feld URL. Fügen Sie nach der Adresse /People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc hinzu. Beispiel:

    https://services.odata.org/TripPinRESTierService/(S(<service number>))/People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc

    Hinweis

    Ersetzen Sie <service number> in der URL durch die tatsächliche Nummer aus Ihren Metadaten.

    In diesem URL-Beispiel erstellen Sie eine Anforderung für eine einzelne Person, wobei {Person} eine Runtime-Variable ist, die ein Benutzer im Flow angeben kann. Als Nächstes geben Sie an, dass Sie die Reisen für die vom Benutzer eingegebene Person erhalten möchten.

    Es sollen jedoch nicht alle Reisen zurückgegeben werden, sondern nur diejenigen, die seit der letzten Abfrage neu hinzugekommen sind. Der Ausdruck $filter=TripId gt 0 gibt zum Abrufen der neuen Fahrten die Reise-IDs (TripIds) aller Reisen zurück, die größer als die zuvor abgefragten Reise-IDs sind. Die hier verwendete Zahl 0 wird automatisch bei jeder Ausführung eines Abrufauslösers aktualisiert.

    Darüber hinaus gibt der Ausdruck $orderby=TripId desc an, dass die Daten auf der Grundlage der Reise-ID (TripId) in absteigender Reihenfolge zurückgegeben werden sollen. Die Rückgabe in absteigender Reihenfolge ist für diesen Auslöser erforderlich. Die vom Back-End-Dienst zurückgegebenen Ergebnisse müssen also im Auslöserparameter in umgekehrter Reihenfolge sortiert sein, damit der neueste Parameter (in diesem Beispiel: die TripId) der erste Rückgabewert im Datenarray ist.

    Menü Aus Beispiel importieren

    Wählen Sie die Schaltfläche Importieren aus, um die Beispieldaten zu importieren. Im Anforderungsbereich werden nun das Verb, die URL, der Pfad und die Abfrageparameter angezeigt.

  9. Wählen Sie im Anforderungsbereich den Abfrageparameter $filter und anschließend Bearbeiten aus, um das Dialogfeld Parameter zu öffnen.

    Bearbeiten des Filterparameters

  10. Legen Sie im Dialogfeld Parameter für $filter die Option Sichtbarkeit auf intern fest. Dieser Parameter wird nur intern vom Connector verwendet; dadurch werden Änderungen durch den Benutzer verhindert. Weitere Informationen zu den Sichtbarkeitseinstellungen finden Sie unter OpenAPI-Erweiterung „x-ms-visibility“.

    Wählen Sie Zurück aus, um zum Anforderungsbereich zurückzukehren.

    Bearbeiten des Filterparameters

  11. Wählen Sie im Anforderungsbereich den Abfrageparameter $orderby und anschließend Bearbeiten aus, um das Dialogfeld Parameter zu öffnen.

  12. Legen Sie im Dialogfeld Parameter für $orderby die Option Erforderlich? auf Ja und die Option Sichtbarkeit auf intern fest. Diese Einstellungen hindern also den Benutzer daran, Änderungen an diesem Parameter vorzunehmen.

    Geben Sie außerdem im Feld Standardwert den Wert TripId desc ein. Diese Einstellungen stellen sicher, dass die Ergebnisse in umgekehrter Reihenfolge angegeben werden.

    Wählen Sie Zurück aus, um zum vorherigen Bereich zurückzukehren.

    Bearbeiten des orderby-Parameters

  13. Der Bereich Antwort zeigt Informationen an, die auf der HTTP-Antwort für die Aktion basieren. Wählen Sie Standardantwort hinzufügen aus.

    Hinzufügen der Standardantwort für den Abruf

  14. Definieren Sie die Antwort für den Abrufauslöser und wählen Sie anschließend Importieren aus. Verwenden Sie das im Anschluss bereitgestellte Beispiel als Antworttext; dadurch wird automatisch ein Schema für die Antwort erstellt.

    Hinzufügen des Antworttexts für den Abruf

    
    {
        "@odata.context":"https://services.odata.org/TripPinRESTierService/(S(<service number>))/$metadata#Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Trip)",
        "value":[
            {
                "TripId":2,
                "ShareId":"9ce142c3-5fd6-4a71-848e-220ebf1e9f3",
                "Name":"Honeymoon",
                "Budget":2650,
                "Description":"Happy honeymoon trip",
                "Tags":[
                    "Travel",
                    "honeymoon"
                ],
                "StartsAt":"2014-02-01T00:00:00Z",
                "EndsAt":"2014-02-04T00:00:00Z"
            },
            {
                "TripId":1,
                "ShareId":"f94e9116-8bdd-4dac-ab61-08438d0d9a71",
                "Name":"Trip in Beijing",
                "Budget":2000,
                "Description":"Trip from Shanghai to Beijing",
                "Tags":[
                    "Travel",
                    "Beijing"
                ],
                "StartsAt":"2014-02-01T00:00:00Z",
                "EndsAt":"2014-02-04T00:00:00Z"
            }
        ]
    }   
    

    Hinweis

    Ersetzen Sie <service number> in der URL durch die tatsächliche Nummer aus Ihren Metadaten.

  15. Wählen Sie im Bereich Auslöserkonfiguration den Parameter für die Überwachung der Statusänderung von TripPin aus. In diesem Beispiel muss der Parameter $filter eingegeben werden.

    Verwenden Sie in diesem Beispiel unter Geben Sie einen Wert zur Übergabe an den ausgewählten Abfrageparameter ein den folgenden Ausdruck:

    TripId gt @{triggerBody().value[0].TripId}

    Dieser Ausdruck wird verwendet, um bei jeder Ausführung des Auslösers die neuesten Ergebnisse abzurufen. In dem hier verwendeten Ausdruck gilt: Wenn TripId größer ist als der Wert, der vom Rest des Ausdrucks zurückgegeben wird, wird der Auslöser ausgeführt. Ist TripId nicht größer ist als der Wert, der vom Rest des Ausdrucks zurückgegeben wird, wird kein Auslöser ausgeführt.

    Wählen Sie unter Sammlung mit Auslöserdaten auswählen die Option @triggerBody().value aus. Hierbei handelt es sich um das Array mit den vom Back-End-Dienst zurückgegebenen Auslöserdaten.

    Konfiguration des Abrufauslösers

  16. Wählen Sie im oberen Bereich des Assistenten die Option Connector erstellen aus.

Verwenden des Abrufauslösers

Nachdem Sie nun alle Einstellungen konfiguriert haben, können Sie den Abrufauslöser in einem Flow verwenden. In diesem Abschnitt erstellen Sie einen Flow, der den Back-End-Dienst mittels Abfrage auf Änderungen überprüft, wenn eine neue Reise für eine bestimmte Person erfasst wird.

  1. Wählen Sie links in flow.microsoft.com die Option Erstellen aus.

  2. Wählen Sie unter Mit leerer App starten die Option Direktflow aus.

  3. Wählen Sie im Dialogfeld Direktflow erstellen die Schaltfläche Überspringen aus.

  4. Geben Sie Auslösen, wenn eine neue Reise hinzugefügt wird in das Suchfeld ein.

    Screenshot, der den Suchtext im Suchfeld zeigt.

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

  5. Geben Sie im Feld Person die Zeichenfolge russellwhyte für die Person ein, deren Reisen Sie untersuchen möchten, und wählen Sie anschließend + Neuer Schritt aus.

    Screenshot, der das Feld „Person“ und die Schaltfläche „Neuer Schritt“ zeigt.

  6. Wählen Sie im Dialogfeld Aktion auswählen die Registerkarte Integriert und anschließend Datum/Uhrzeit aus.

    Screenshot, der das Dialogfeld „Aktion auswählen“ zeigt.

  7. Wählen Sie unter Datum/Uhrzeit die Option Aktuelle Zeit aus.

    Screenshot, der die Schaltfläche „Aktuelle Zeit“ zeigt.

  8. Wählen Sie Speichern aus, um den neuen Flow zu speichern.

Überprüfung und Problembehandlung

Wählen Sie zum Überprüfen der Einrichtung die Option Meine Flows und anschließend den Flow Auslösen, wenn eine neue Reise hinzugefügt wird -> Aktuelle Zeit aus, um den Ausführungsverlauf anzuzeigen. Da der Flow noch nicht ausgeführt wurde, sollte der Verlauf leer sein.

Zum Testen des Flows müssen Sie die Postman-Anwendung öffnen, um TripPin neue Daten hinzuzufügen.

  1. Wählen Sie in Postman das Symbol + neben der Registerkarte Launchpad aus.

  2. Wählen Sie in der unbenannten Anforderung im Dropdownfeld auf der linken Seite die Option POST aus, und geben Sie anschließend im Feld Enter request URL (Anforderungs-URL eingeben) die folgende Adresse ein:

    https://services.odata.org/TripPinRESTierService/(S(<Service number))/People('russellwhyte')/Trips

    Hinweis

    Ersetzen Sie <service number> in der URL durch die tatsächliche Nummer aus Ihren Metadaten.

  3. Wählen Sie unter der POST-Anforderung die Registerkarte Body (Text) und anschließend raw (unformatiert) aus. Wählen Sie in der Dropdownliste rechts neben raw (unformatiert) die Option JSON aus.

  4. Geben Sie den folgenden Text in das Textfeld ein:

    {
         "TripId": 190,
         "ShareId": "9d9b2fa0-efbf-490e-a5e3-bac8f7d47354",
         "Name": "Trip in US",
         "Budget": 5000,
         "Description": "Trip from San Francisco to New York City",
         "Tags": [
             "business",
             "New York meeting"
         ],
         "StartsAt": "2014-01-01T00:00:00Z",
         "EndsAt": "2014-01-04T00:00:00Z"
    }
    
  5. Wählen Sie Send (Senden) aus, um die POST-Nachricht an die TripPin-Website zu senden.

    Senden der POST-Nachricht

    Die Antwort sollte mit dem Status 201 Created zurückgegeben werden.

Wenn Sie nun unter Meine Flows den Auslöser Auslösen, wenn eine neue Reise hinzugefügt wird -> Aktuelle Zeit auswählen, enthält der Ausführungsverlauf einen Auslöser.

Ein Auslöser hat ausgelöst

Hinweis

Wenn Sie in Postman eine weitere POST-Anforderung für die gleiche Person ausführen, müssen Sie im JSON-Text den TripId-Wert ändern. Andernfalls tritt ein 409-Fehler (Konflikt) auf.

Falls alles ordnungsgemäß konfiguriert ist, erhalten Sie nun Benachrichtigungen in Microsoft Power Automate, wenn TripPin eine neue Reise hinzugefügt wird.

Siehe auch

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.