Usare un trigger di polling per Microsoft Power Automate

Un trigger di polling è essenzialmente un evento che effettua periodicamente una chiamata al servizio per cercare nuovi dati. I trigger di pollin si differiscono dai webhook in quanto avviano un eventi per determinare se sono disponibili nuovi dati, mentre i webhook rispondono a una richiesta push di nuovi dati proveniente dal servizio. Quando il flusso determina che sono disponibili nuovi dati, è possibile usarli per eseguire azioni. Questa esercitazione illustra come usare un trigger di polling per recuperare proattivamente nuovi dati.

Prerequisiti

Come funzionano i trigger di polling

Un trigger di polling inizia impostando uno stato, quindi verifica periodicamente la disponibilità di aggiornamenti nel corso di un intervallo di tempo. Il trigger richiede quindi tutti i nuovi dati dopo l'ultimo aggiornamento dello stato. Inoltre, il trigger mantiene anche il contesto dello stato tra le richieste.

L'esempio seguente fornisce una panoramica di base del modo in cui un trigger di polling acquisisce nuovi dati.

Come acquisiscono i dati i trigger di polling

  1. Il runtime del flusso effettua una chiamata iniziale nel trigger all'API nel connettore.

  2. Il connettore chiama quindi il servizio back-end.

  3. Il servizio back-end restituisce tutti i dati correnti al connettore.

  4. Il connettore a sua volta restituisce un messaggio 202 - Accettato, un intervallo tra tentativi e un'intestazione di posizione che include lo stato corrente. L'intervallo tra tentativi è in secondi. Questa prima chiamata viene sempre usata per stabilire lo stato preliminare dei dati.

  5. Quando si verifica il timeout dell'intervallo tra tentativi, il runtime del flusso effettua un'altra chiamata al connettore usando l'intestazione di posizione e lo stato corrente, che in questo esempio è uguale a 1.

  6. Poiché questo stato è ora uguale a 1, il connettore può effettuare una chiamata all'API corretta, che applicherà i filtri appropriati in modo che venga restituito il set di dati corretto. In questo esempio il connettore lo converte in una query filtrata che indica che la data di creazione è successiva a un determinato timestamp.

  7. In questo esempio non sono presenti nuovi dati dopo la data di creazione, quindi al connettore viene restituito un set vuoto di valori.

  8. Il connettore restituisce quindi un messaggio 202 - Accettato, un intervallo tra tentativi e un'intestazione di posizione in cui lo stato non è cambiato.

  9. Quando si verifica di nuovo il timeout dell'intervallo tra tentativi, il runtime del flusso effettua un'altra chiamata al connettore usando gli stessi valori per l'intestazione di posizione e lo stato.

  10. Anche in questo caso, il connettore applica il filtro appropriato usando la data di creazione.

  11. Questa volta, sono diventati disponibili nuovi dati dopo la data di creazione, quindi il back-end restituisce i valori di tutti i nuovi dati al connettore.

  12. Il connettore restituisce quindi un messaggio 200 - OK, un intervallo tra tentativi, la posizione con un nuovo valore di stato e una matrice di valori contenenti tutti i nuovi dati resi disponibili dopo la data di creazione. A questo punto, verrà avviato il flusso.

Creare trigger di polling dall'interfaccia utente

Questa sezione illustra come creare un trigger di poll nell'interfaccia utente di Power Automate. In questa procedura verrà usato il servizio TripPin di esempio come punto di partenza. Il servizio TripPin è un'API REST molto semplice che contiene un elenco di persone e dei viaggi che hanno effettuato.

Per usare il servizio TripPin, è necessario prima di tutto creare dinamicamente gli URL necessari. Immetti https://services.odata.org/TripPinRESTierService nella barra degli indirizzi del browser. Verranno restituiti i metadati necessari per questa dimostrazione. Copia e salva i metadati in un file per un uso successivo.

Per configurare il servizio TripPin e creare il trigger di poll:

  1. In Power Automate, seleziona la scheda Dati > Connettori personalizzati.

  2. Nel riquadro Connettori personalizzati selezionare Nuovo connettore personalizzato e quindi Crea da zero.

  3. Nella finestra di dialogo Crea un connettore personalizzato immettere il nome del connettore personalizzato (in questo esempio è possibile usare Polling Test), quindi selezionare Continua.

  4. Nella pagina Generale specificare una descrizione e un host. In questo esempio come host si userà l'URL services.odata.org restituito nei metadati TripPin.

    Parametro Value
    Descrizione "TripPin è un esempio di sito Web di viaggi".
    Host "services.odata.org"

    Aggiunta della descrizione e dell'host

  5. Nella pagina Sicurezza selezionare Nessuna autenticazione come tipo di autenticazione.

    Autenticazione del polling

  6. Nella pagina Definizione, scegli + Nuovo trigger e compila la descrizione del trigger. In questo esempio verrà creato un trigger che viene attivato quando viene aggiunto un nuovo viaggio nell'itinerario di una persona.

    Creare un nuovo trigger

    Parametro Value
    Riepilogo "Si attiva quando viene aggiunto un nuovo viaggio"
    Descrizione "Si attiva quando viene aggiunto un nuovo viaggio"
    ID operazione "OnNewTrip"
    Visibilità "nessuna" (vedi l'elenco di seguito per altre informazioni)
    Tipo di trigger "Polling"

    la proprietà Visibilità per operazioni e parametri in un flusso include le seguenti opzioni:

    • nessuno: visualizzato normalmente nel flusso
    • avanzata: nascosti in un menu aggiuntivo
    • interna: nascosti all'utente
    • importante: sempre mostrati all'utente come prima cosa
  7. L'area Richiesta visualizza le informazioni in base alla richiesta HTTP per l'azione. Scegli Importa da esempio.

    Pagina di definizione: importa da esempio

  8. Nel riquadro Importa da esempio definire la richiesta per il trigger di poll. Per il verbo, selezionare GET. Dai metadati ricevuti durante la creazione dinamica degli URL necessari per il servizio, copiare l'indirizzo URL nella sezione URL del riquadro Importa da esempio. Dopo l'indirizzo, aggiungere /People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc. Ad esempio:

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

    Nota

    Assicurarsi di usare il numero effettivo recuperato dai metadati anziché <numero di servizio> nell'URL.

    In questo esempio di URL si crea una richiesta per una singola persona; {Person} è una variabile di runtime che un utente può specificare nel flusso. Successivamente, si specifica che si vogliono ottenere i viaggi della persona specifica immessa dall'utente.

    Ma non si vogliono ottenere tutti i viaggi, solo quelli nuovi rispetto all'ultima volta in cui è stato eseguito il polling. L'espressione $filter=TripId gt 0 ottiene i nuovi viaggi restituendo i valori TripId di tutti i viaggi successivi a quelli di cui è stato eseguito il polling in precedenza. Il numero 0 usato in questo caso verrà aggiornato automaticamente ogni volta che viene eseguito un trigger di poll.

    Inoltre, l'espressione $orderby=TripId desc indica che i dati vengono restituiti come TripId in ordine decrescente. La restituzione in ordine decrescente è richiesta dal trigger. Ovvero, i risultati restituiti dal servizio back-end devono essere disposti in ordine inverso nel parametro trigger, in modo che il parametro più recente, ad esempio TripId in questo esempio, sia il primo valore restituito nella matrice di dati.

    Menu Importa da esempio

    Selezionare il pulsante Importa per importare i dati di esempio. L'area della richiesta ora visualizza il verbo, l'URL, il percorso e i parametri della query.

  9. Nell'area della richiesta selezionare il parametro di query $filter, quindi scegliere Modifica per visualizzare la finestra di dialogo Parametro.

    Modificare il parametro filter

  10. Nella finestra di dialogo Parametro per $filter impostare la selezione di Visibilità su interna. Questo parametro viene usato solo internamente dal connettore, impedendo all'utente di apportare modifiche. Per altre informazioni sulle impostazioni di visibilità, vedi l'estensione OpenAPI x-ms-visibility.

    Selezionare Indietro per tornare nell'area della richiesta.

    Modifica del parametro filter

  11. Nell'area della richiesta selezionare il parametro di query $orderby, quindi scegliere Modifica per visualizzare la finestra di dialogo Parametro.

  12. Nella finestra di dialogo Parametro per $orderby impostare la selezione di Obbligatorio? su e la selezione di Visibilità su interna. Anche in questo caso, tali impostazioni impediranno all'utente di apportare modifiche a questo parametro.

    Inoltre, immettere TripId desc come valore nella casella Valore predefinito. Queste impostazioni faranno in modo che i risultati vengano restituiti in ordine inverso.

    Selezionare Indietro per tornare nell'area precedente.

    Modifica del parametro orderby

  13. L'area Risposta visualizza le informazioni in base alla risposta HTTP per l'azione. Selezionare Aggiungi risposta predefinita.

    Aggiungere la risposta di polling predefinita

  14. Definire la risposta per il trigger di polling e quindi scegliere Importa. Usare l'esempio riportato di seguito per il corpo della risposta, che creerà automaticamente uno schema per la risposta.

    Aggiungere il corpo della risposta di polling

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

    Nota

    Assicurarsi di usare il numero effettivo recuperato dai metadati anziché <numero di servizio> nell'URL.

  15. Nell'area Configurazione del trigger selezionare il parametro usato per monitorare il cambiamento di stato di TripPin. In questo esempio il parametro da immettere è $filter.

    In questo esempio usare l'espressione seguente in Specificare il valore da passare al parametro della query selezionata:

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

    Questa espressione viene usata per ottenere i risultati più recenti ogni volta che viene eseguito il trigger. Nell'espressione usata qui, il trigger verrà eseguito quando TripId è maggiore del valore restituito dal resto dell'espressione. Se TripId non è maggiore del valore restituito dal resto dell'espressione, non verrà eseguito alcun trigger.

    Nella sezione Selezionare la raccolta che contiene i dati del trigger scegliere @triggerBody().value. Si tratta della matrice che contiene i dati del trigger restituiti dal servizio back-end.

    Configurazione del trigger di polling

  16. Nella parte iniziale della procedura guidata selezionare Crea connettore.

Usare il trigger di polling

Dopo aver completato la configurazione, è possibile usare il trigger di polling in un flusso. In questa sezione verrà creato un flusso che esegue il polling del servizio back-end per rilevare la presenza di modifiche ogni volta che viene registrato un nuovo viaggio per una specifica persona.

  1. In flow.microsoft.com, sul lato sinistro della pagina, scegliere Crea.

  2. In Inizia da zero scegliere Flusso istantaneo.

  3. Nella finestra di dialogo Crea un flusso istantaneo seleziona il pulsante Ignora.

  4. Nella casella di ricerca immetti Si attiva quando viene aggiunto un nuovo viaggio.

    Screenshot che mostra il testo di ricerca nella casella di ricerca.

    Scegli l'elemento nell'elenco per usarlo come trigger.

  5. Nella casella del flusso Persona immetti russellwhyte come nome della persona di cui esaminare i viaggi, quindi seleziona + Nuovo passaggio.

    Screenshot che mostra la casella Persona e il pulsante Nuovo passaggio.

  6. Nella finestra di dialogo Scegli un'azione seleziona la scheda Predefinita e quindi Data/Ora.

    Screenshot che mostra la finestra di dialogo Scegli un'azione.

  7. In Data/Ora seleziona Ora corrente.

    Screenshot che mostra il pulsante Ora corrente.

  8. Seleziona Salva per salvare il nuovo flusso.

Verifica e risoluzione dei problemi

Per verificare che la configurazione sia stata completata correttamente, scegliere Flussi personali e quindi il flusso Si attiva quando viene aggiunto un nuovo viaggio -> Ora corrente per visualizzare la cronologia di esecuzione. Poiché il flusso non è stato ancora eseguito, non è presente alcun elemento nella cronologia.

Per testare il flusso, è necessario aprire l'applicazione Postman per aggiungere nuovi dati a TripPin.

  1. In Postman selezionare l'icona + accanto alla scheda Launchpad.

  2. Nella richiesta senza titolo selezionare POST nella casella di riepilogo a discesa a sinistra, quindi immettere l'indirizzo seguente nella casella Immettere l'URL della richiesta:

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

    Nota

    Assicurarsi di usare il numero effettivo recuperato dai metadati anziché <numero di servizio> nell'URL.

  3. Nella richiesta POST selezionare la scheda Corpo e quindi scegliere raw. Nell'elenco a discesa a destra di raw scegliere JSON.

  4. Nella casella di testo immettere il testo seguente:

    {
         "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. Selezionare Invia per inviare il messaggio POST al sito TripPin.

    Inviare il messaggio POST

    Dovrebbe essere restituita la risposta con lo stato 201 Created.

A questo punto, quando si apre Flussi personali e quindi si sceglie il flusso Si attiva quando viene aggiunto un nuovo viaggio -> Ora corrente si noterà nella cronologia di esecuzione che si è verificato un trigger.

Si è verificato un trigger

Nota

Se si esegue un'altra richiesta POST in Postman per la stessa persona, sarà necessario cambiare il valore di TripId nel corpo JSON. In caso contrario, si verificherà un errore di conflitto 409.

Riepilogo

Se la configurazione è stata completata correttamente, si riceveranno ora notifiche in Microsoft Power Automate ogni volta che si aggiunge un nuovo viaggio a TripPin.

Passaggi successivi

Inviare commenti

L'invio da parte degli utenti di feedback sui problemi riscontrati con la piattaforma di connettori o di idee su nuove funzionalità è molto apprezzato. Per fornire un feedback, vai a Inviare problemi o ottenere assistenza per i connettori e seleziona il tipo di commenti.