Een aangepaste poll-trigger gebruiken voor Microsoft Power Automate

Een poll-trigger is in principe een gebeurtenis voor het periodiek aanroepen van uw service om te zoeken naar nieuwe gegevens. Poll-triggers verschillen van webhooks. Een poll-trigger initieert een gebeurtenis om te bepalen of nieuwe gegevens beschikbaar zijn, terwijl webhooks reageren op een push vanuit de service over nieuwe gegevens. Zodra via de stroom is vastgesteld dat nieuwe gegevens beschikbaar zijn, kunt u een actie uitvoeren met deze gegevens. In deze zelfstudie wordt gedemonstreerd hoe u een poll-trigger gebruikt om proactief nieuwe gegevens op te halen.

Vereisten

Hoe poll-triggers werken

Een poll-trigger wordt gestart door een status in te stellen, waarna gedurende een bepaald interval periodiek wordt gecontroleerd op updates. Op basis van de trigger worden vervolgens alle nieuwe gegevens aangevraagd sinds de laatste update van de status. Daarnaast onderhoudt de trigger ook de statuscontext tussen aanvragen.

Het volgende voorbeeld bevat een basisoverzicht van hoe via een poll-trigger nieuwe gegevens worden opgehaald.

Hoe poll-triggers gegevens verkrijgen

  1. Tijdens de stroomuitvoering wordt via de trigger een initiële aanroep gedaan naar de API in de connector.

  2. De connector roept vervolgens de back-endservice aan.

  3. De back-endservice retourneert hierna alle huidige gegevens terug naar de connector.

  4. De connector retourneert dan een 202 Geaccepteerd-bericht, een interval voor nieuwe poging, en een locatieheader die de huidige status bevat. Het interval voor nieuwe poging is in seconden. Deze eerste aanroep wordt altijd gebruikt voor het vaststellen van de eerste status van de gegevens.

  5. Nadat er een time-out is opgetreden voor het interval voor nieuwe poging, wordt tijdens de stroomuitvoering de connector nog een keer aangeroepen met behulp van de locatieheader en huidige status, die in dit voorbeeld gelijk is aan 1.

  6. Omdat de status nu gelijk is aan 1, wordt via de connector de juiste API aangeroepen waarmee de geschikte filters worden ingesteld, zodat de juiste gegevens worden geretourneerd. In dit voorbeeld worden deze via de connector omgezet in een gefilterde query die aangeeft dat de aanmaakdatum later is dan een bepaalde tijdstempel.

  7. In dit voorbeeld zijn er geen nieuwe gegevens van na de aanmaakdatum, daarom is via de connector een lege set waarden teruggestuurd.

  8. De connector retourneert vervolgens een 202 Geaccepteerd-bericht, een interval voor nieuwe poging, en een locatieheader waarin de status niet is gewijzigd.

  9. Nadat er opnieuw een time-out is opgetreden voor het interval voor nieuwe poging, wordt tijdens de stroomuitvoering de connector nog een keer aangeroepen met behulp van dezelfde locatieheader en status.

  10. Opnieuw worden via de connector de geschikte filters ingesteld met behulp van de aanmaakdatum.

  11. Deze keer zijn er wel nieuwe gegevens beschikbaar sinds de aanmaakdatum, waardoor via de back-end de waarden van alle nieuwe gegevens worden geretourneerd naar de connector.

  12. De connector retourneert vervolgens een 200 OK-bericht, een interval voor nieuwe poging, de locatie met een nieuwe statuswaarde, en een matrix met waarden die alle nieuwe gegevens bevat die na de aanmaakdatum beschikbaar zijn geworden. Op dit moment wordt de stroom gestart.

Poll-triggers maken vanuit de gebruikersinterface

In deze sectie wordt gedemonstreerd hoe u een poll-trigger maakt in de gebruikersinterface van Power Automate. In deze procedure gebruikt u de voorbeeldservice TripPin als uitgangspunt. De TripPin-service is een zeer eenvoudige REST API die een lijst met personen bevat en welke reizen deze personen hebben gemaakt.

Als u de TripPin-service wilt gebruiken, moet u eerst dynamisch de URL’s maken die zijn vereist voor de service. Voer https://services.odata.org/TripPinRESTierService in de adresbalk van de browser in. Hiermee worden de metagegevens geretourneerd die zijn vereist voor deze demonstratie. Kopieer de metagegevens en sla deze op in een bestand voor later gebruik.

De TripPin-service instellen en de poll-trigger maken:

  1. Selecteer in Power Automate het tabblad Gegevens > Aangepaste connectors.

  2. Selecteer in het deelvenster Aangepaste connectors de optie Nieuwe aangepaste connector, en selecteer vervolgens Leeg item maken.

  3. Voer in het dialoogvenster Aangepaste connector maken, de naam in van de aangepaste connector (in dit voorbeeld kunt u Polling-test gebruiken), en selecteer vervolgens Doorgaan.

  4. Geef op de pagina Algemeen een beschrijving en een host op. In dit voorbeeld gebruikt u de services.odata.org-URL die als host is geretourneerd in de TripPin-metagegevens.

    Parameter Value
    Beschrijving 'TripPin is een voorbeeld van een reiswebsite.'
    Host 'services.odata.org'

    Beschrijving en host toevoegen

  5. Kies op de pagina Beveiliging de optie Geen verificatie als verificatietype.

    Polling-verificatie

  6. Kies op de pagina Definitie de optie + Nieuwe trigger en vul de beschrijving voor uw trigger in. In dit voorbeeld maakt u een trigger die wordt geactiveerd wanneer een nieuwe reis wordt toegevoegd aan het reisschema van een persoon.

    Een nieuwe trigger maken

    Parameter Value
    Samenvatting 'Wordt geactiveerd wanneer een nieuwe reis wordt toegevoegd'
    Beschrijving 'Wordt geactiveerd wanneer een nieuwe reis wordt toegevoegd'
    Bewerkings-id 'OnNewTrip'
    Zichtbaarheid 'geen' (raadpleeg lijst hieronder voor meer informatie)
    Type trigger 'Polling'

    De eigenschap Zichtbaarheid voor bewerkingen en parameters in een stroom heeft de volgende opties:

    • geen: normaal weergegeven in de stroom
    • geavanceerd: verborgen in een aanvullend menu
    • intern: verborgen voor de gebruiker
    • belangrijk: altijd eerst voor de gebruiker weergegeven
  7. In het gebied Aanvraag wordt informatie weergegeven op basis van de HTTP-aanvraag voor de actie. Kies Importeren uit voorbeeld.

    Definitiepagina - Importeren uit voorbeeld

  8. In het deelvenster Importeren vanuit voorbeeld, definieert u de aanvraag voor de poll-trigger. Selecteer GET als werkwoord. Kopieer uit de metagegevens die u hebt ontvangen toen u dynamisch de vereiste URL's voor de service hebt gemaakt, het URL-adres in de metagegevens naar de URL in het deelvenster Importeren uit voorbeeld. Voeg /People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc toe aan het eind van het adres. Bijvoorbeeld:

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

    Notitie

    Zorg ervoor dat u het werkelijke nummer uit de metagegevens gebruikt in plaats van <servicenummer> in de URL.

    In dit URL-voorbeeld maakt u een aanvraag voor een individueel persoon, en {Person} is een uitvoeringsvariabele die een gebruiker kan opgeven in de stroom. Vervolgens geeft u op dat u de reizen wilt ophalen voor de specifieke persoon die de gebruiker invoert.

    Maar u wilt niet alle reizen ophalen. U wilt alleen de reizen ophalen die nieuw zijn sinds de laatst uitgevoerde poll. Met de $filter=TripId gt 0-expressie worden de nieuwe reizen opgehaald door alle TripId's van reizen te retourneren die groter zijn dan de eerder aangevraagde TripId's. Het getal 0 dat hier wordt gebruikt, wordt automatisch bijgewerkt telkens wanneer een poll-trigger optreedt.

    Ook geeft de $orderby=TripId desc-expressie aan dat de volgorde van de gegevens wordt geretourneerd als de TripId, in aflopende volgorde. Retourneren in aflopende volgorde is vereist voor de trigger. Dit wil zeggen dat de resultaten die met de back-endservice worden geretourneerd, in de omgekeerde volgorde moeten zijn gesorteerd in de triggerparameter, zodat de meest recente parameter (zoals de TripId in dit voorbeeld) de eerste waarde is die wordt geretourneerd in de gegevensmatrix.

    Importeren uit voorbeeldmenu

    Selecteer de knop Importeren om de voorbeeldgegevens te importeren. In het aanvraaggebied worden nu het werkwoord, de URL, het pad en de queryparameters weergegeven.

  9. Selecteer in het aanvraaggebied de queryparameter $filter en kies vervolgens Bewerken om het dialoogvenster Parameter te openen.

    De filterparameter bewerken

  10. Stel in het dialoogvenster Parameter voor $filter, de selectie Zichtbaarheid in op intern. Deze parameter wordt alleen intern gebruikt voor de connector, waardoor de gebruiker geen wijzigingen kan aanbrengen. Raadpleeg de x-ms-visibility OpenAPI-extensie voor meer informatie over de zichtbaarheidsinstellingen.

    Selecteer Terug om terug te gaan naar het aanvraaggebied.

    De filterparameter bewerken

  11. Selecteer in het aanvraaggebied de queryparameter $orderby en kies vervolgens Bewerken om het dialoogvenster Parameter te openen.

  12. Stel in het dialoogvenster Parameter voor $orderby, de selectie Is vereist? in op Ja en de selectie Zichtbaarheid op intern. Door deze instellingen wordt opnieuw voorkomen dat de gebruiker wijzigingen aanbrengt aan deze parameter.

    Voer daarnaast TripId desc in als de waarde in het vak Standaardwaarde. Deze instellingen zorgen ervoor dat de resultaten in omgekeerde volgorde worden gegeven.

    Selecteer Terug om terug te gaan naar het vorige gebied.

    De parameter orderby bewerken

  13. In het gebied Respons wordt informatie weergegeven op basis van de HTTP-respons voor de actie. Selecteer Standaardantwoord toevoegen.

    Standaard-polling-antwoord toevoegen

  14. Definieer het antwoord voor de poll-trigger en kies vervolgens Importeren. Gebruik het onderstaande voorbeeld voor de hoofdtekst van het antwoord, waarmee automatisch een schema voor het antwoord wordt samengesteld.

    Hoofdtekst van polling-antwoord toevoegen

    
    {
        "@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"
            }
        ]
    }   
    

    Notitie

    Zorg ervoor dat u het werkelijke nummer uit de metagegevens gebruikt in plaats van <servicenummer> in de URL.

  15. Selecteer in het gebied Configuratie van trigger de parameter die wordt gebruikt om de statuswijziging te controleren vanuit TripPin. In dit voorbeeld is $filter de parameter die moet worden ingevoerd.

    In dit voorbeeld gebruikt u de volgende expressie in Geef de waarde op die moet worden doorgegeven aan de geselecteerde queryparameter:

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

    Deze expressie wordt gebruikt om de meest recente resultaten op te halen wanneer de trigger wordt uitgevoerd. Als TripId groter is dan de waarde die wordt geretourneerd met de rest van de expressie, wordt de trigger uitgevoerd in de expressie die u hier gebruikt. Als TripId niet groter is dan de waarde die wordt geretourneerd door de rest van de expressie, treedt er geen trigger op.

    Kies in de selectie Verzameling selecteren die triggergegevens bevat de optie @triggerBody().value. Dit is de matrix die de triggergegevens bevat die via de back-endservice worden geretourneerd.

    Configuratie van poll-trigger

  16. Selecteer boven aan de wizard de optie Connector maken.

Poll-trigger gebruiken

Nu u alles hebt geconfigureerd, kunt u de poll-trigger gebruiken in een stroom. In deze sectie maakt u een stroom waarmee de back-endservice wordt gecontroleerd op wijzigingen telkens wanneer een nieuwe reis wordt vastgelegd voor een specifieke persoon.

  1. Kies Maken in flow.microsoft.com, aan de linkerkant van de pagina.

  2. Kies onder Vanuit het niets starten de optie Directe stroom.

  3. Selecteer in het dialoogvenster Een directe stroom maken de knop Overslaan.

  4. Voer in het zoekvak in Activeren wanneer een nieuwe reis wordt toegevoegd.

    Schermopname met zoektekst in het zoekvak.

    Kies het item in de lijst dat u als trigger wilt gebruiken.

  5. Voer russellwhyte in het stroomvak Persoon in als de persoon van wie u de reizen wilt bekijken en selecteer vervolgens + Nieuwe stap.

    Schermopname met het vak Persoon en de knop Nieuwe stap.

  6. Selecteer in het dialoogvenster Actie kiezen het tabblad Ingebouwd en selecteer vervolgens Datum en tijd.

    Schermopname met het dialoogvenster Een actie kiezen.

  7. Selecteer Huidige tijd vanuit Datum en tijd.

    Schermopname met de knop Huidige tijd.

  8. Selecteer Opslaan om de nieuwe stroom op te slaan.

Verificatie en probleemoplossing

Kies Mijn stromen om te controleren of alles juist is ingesteld. Kies vervolgens de stroom Wordt geactiveerd wanneer een nieuwe reis wordt toegevoegd -> Huidige tijd om de uitvoeringsgeschiedenis weer te geven. Omdat de stroom nog niet is uitgevoerd, wordt er op dit moment niets weergegeven in de geschiedenis.

Als u de stroom wilt testen, moet u de toepassing Postman openen om nieuwe gegevens toe te voegen aan TripPin.

  1. Selecteer in Postman het pictogram + naast het tabblad Launchpad.

  2. Selecteer in de naamloze aanvraag de optie POST in de vervolgkeuzelijst aan de linkerkant en voer het volgende adres in het vak Aanvraag-URL invoeren in:

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

    Notitie

    Zorg ervoor dat u het werkelijke nummer uit de metagegevens gebruikt in plaats van <servicenummer> in de URL.

  3. Selecteer in de POST-aanvraag het tabblad Hoofdtekst en kies vervolgens onbewerkt. Kies JSON in de vervolgkeuzelijst, rechts van onbewerkt.

  4. Voer de volgende tekst in het tekstvak in:

    {
         "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. Selecteer Verzenden om het POST-bericht te verzenden naar de TripPin-site.

    Het POST-bericht verzenden

    Het antwoord moet worden geretourneerd met de status 201 Created.

Wanneer u nu Mijn stromen opent, en vervolgens de stroom Wordt geactiveerd wanneer een nieuwe reis wordt toegevoegd -> Huidige tijd kiest, ziet u in de uitvoeringsgeschiedenis dat er een trigger is opgetreden.

Er is een trigger opgetreden

Notitie

Als u nog een POST-aanvraag uitvoert in Postman voor dezelfde persoon, moet u de TripId-waarde in de JSON-hoofdtekst wijzigen. Anders treedt er een 409 Conflict-fout op.

Samenvatting

Als alles juist is geconfigureerd, ontvangt u nu meldingen in Microsoft Power Automate telkens wanneer een nieuwe reis wordt toegevoegd in TripPin.

Volgende stappen

Feedback geven

We stellen feedback over problemen met ons connectorplatform of ideeën voor nieuwe functies zeer op prijs. Om feedback te geven, gaat u naar Problemen melden of hulp krijgen met connectoren en selecteer uw feedbacktype.