Utiliser un déclencheur d’interrogation pour Microsoft Power Automate

Un déclencheur d’interrogation désigne un événement qui appelle régulièrement votre service afin de rechercher de nouvelles données. Les déclencheurs d’interrogation diffèrent des webhooks, car un déclencheur d’interrogation lance un événement pour déterminer si de nouvelles données sont disponibles, alors que les webhooks répondent à une notification Push de nouvelles données provenant du service. Une fois que le flux détermine que de nouvelles données sont disponibles, vous pouvez effectuer une action avec ces données. Ce tutoriel montre comment utiliser un déclencheur d’interrogation pour récupérer de nouvelles données de manière proactive.

Conditions préalables

Fonctionnement des déclencheurs d’interrogation

Un déclencheur d’interrogation commence par définir un état, puis recherche périodiquement des mises à jour au cours d’un intervalle de temps. Le déclencheur demande ensuite toutes les nouvelles données depuis la dernière mise à jour de l’état. En outre, le déclencheur gère également le contexte d’état entre les demandes.

L’exemple suivant fournit une vue d’ensemble de base de la façon dont un déclencheur d’interrogation acquiert de nouvelles données.

Acquisition de données par les déclencheurs d’interrogation

  1. Le runtime du flux effectue un appel initial sur le déclencheur à l’API dans le connecteur.

  2. Le connecteur appelle ensuite le service back-end.

  3. Le service back-end retourne ensuite toutes les données actuelles au connecteur.

  4. Le connecteur retourne à son tour un message 202 Accepté, un intervalle avant nouvelle tentative et un en-tête d’emplacement qui comprend l’état actuel. L’intervalle avant nouvelle tentative est exprimé en secondes. Ce premier appel est toujours utilisé pour établir l’état préliminaire des données.

  5. Une fois que l’intervalle avant nouvelle tentative a expiré, le runtime du flux effectue un autre appel au connecteur à l’aide de l’en-tête d’emplacement et de l’état actuel, qui, dans cet exemple, est égal à 1.

  6. Le connecteur sait maintenant, étant donné que cet état est maintenant égal à 1, qu’il doit appeler l’API appropriée qui effectue le filtrage adapté afin que le jeu de données correct soit retourné. Dans cet exemple, le connecteur le convertit en une requête filtrée qui indique que la date de création est ultérieure à un certain horodatage.

  7. Dans cet exemple, il n’y a pas de nouvelles données depuis la date de création, donc un ensemble de valeurs vide est renvoyé au connecteur.

  8. Le connecteur retourne alors un message 202 Accepté, un intervalle avant nouvelle tentative et un en-tête d’emplacement dans lequel l’état n’a pas changé.

  9. Une fois que l’intervalle avant nouvelle tentative a expiré, le runtime du flux effectue un autre appel au connecteur à l’aide des mêmes en-tête d’emplacement et état.

  10. Là encore, le connecteur effectue le filtrage approprié à l’aide de la date de création.

  11. Cette fois, de nouvelles données sont disponibles depuis la date de création, de sorte que le service back-end retourne les valeurs de toutes les nouvelles données au connecteur.

  12. Le connecteur retourne alors un message 200 OK, un intervalle avant nouvelle tentative, l’emplacement avec une nouvelle valeur d’état et un tableau de valeurs contenant toutes les nouvelles données qui sont devenues disponibles après la date de création. À ce stade, le flux démarre.

Créer des déclencheurs d’interrogation à partir de l’interface utilisateur

Cette section montre comment créer un déclencheur d’interrogation dans l’interface utilisateur Power Automate. Dans cette procédure, vous allez utiliser l’exemple de service TripPin comme point de départ. Le service TripPin est une API REST très simple qui contient une liste de personnes et les voyages qu’elles ont effectués.

Pour utiliser le service TripPin, vous devez d’abord créer dynamiquement les URL requises pour le service. Entrez https://services.odata.org/TripPinRESTierService dans la barre d’adresse de votre navigateur. Cette opération retourne les métadonnées requises pour cette démonstration. Copiez et enregistrez les métadonnées dans un fichier pour une utilisation ultérieure.

Pour configurer le service TripPin et créer le déclencheur d’interrogation :

  1. Dans Power Automate, sélectionnez l’onglet Données > Connecteurs personnalisés.

  2. Dans le volet Connecteurs personnalisés, sélectionnez Nouveau connecteur personnalisé, puis Créer entièrement.

  3. Dans la boîte de dialogue Créer un connecteur personnalisé, entrez le nom de votre connecteur personnalisé (dans cet exemple, vous pouvez utiliser Test d’interrogation), puis sélectionnez Continuer.

  4. Sur la page Général, spécifiez une description et un hôte. Dans cet exemple, vous allez utiliser comme hôte l’URL services.odata.org qui a été retournée dans les métadonnées TripPin.

    Paramètre Value
    Description « TripPin est un exemple de site web de voyage. »
    Hôte « services.odata.org »

    Ajout de la description et de l’hôte

  5. Sur la page Sécurité, choisissez Aucune authentification comme type d’authentification.

    Authentification de l’interrogation

  6. Sur la page Définition, choisissez + Nouveau déclencheur et remplissez la description de votre déclencheur. Dans cet exemple, vous allez créer un déclencheur qui se déclenche lorsqu’un nouveau voyage est ajouté à l’itinéraire d’une personne.

    Créer un déclencheur

    Paramètre Value
    Résumé « Se déclenche lors de l’ajout d’un nouveau voyage »
    Description « Se déclenche lors de l’ajout d’un nouveau voyage »
    ID d’opération « OnNewTrip »
    Visibilité « aucune » (voir la liste ci-dessous pour en savoir plus)
    Type de déclencheur « Interrogation »

    La propriété Visibilité pour les opérations et les paramètres dans un flux a les options suivantes :

    • aucune : affiché normalement dans le flux
    • avancée : masqué sous un menu supplémentaire
    • interne : masqué pour l’utilisateur
    • importante : s’affiche toujours pour l’utilisateur en premier
  7. La zone Demande affiche des informations basées sur la demande HTTP pour l’action. Choisissez Importer à partir de l’exemple de menu.

    Page de définition - importation à partir d’un exemple

  8. Dans le volet Importer à partir de l’exemple, vous allez définir la demande du déclencheur d’interrogation. Pour le verbe, sélectionnez GET. À partir des métadonnées que vous avez reçues lors de la création dynamique des URL requises pour le service, copiez l’adresse URL dans les métadonnées vers URL dans le volet Importer à partir de l’exemple. Après l’adresse, ajoutez /People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc. Par exemple :

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

    Notes

    Veillez à utiliser le nombre réel provenant de vos métadonnées au lieu de <numéro de service> dans l’URL.

    Dans cet exemple d’URL, vous créez une demande pour une personne individuelle, et {Person} est une variable de runtime qu’un utilisateur peut spécifier dans le flux. Ensuite, vous spécifiez que vous souhaitez obtenir les voyages pour la personne spécifique entrée par l’utilisateur.

    Mais vous ne souhaitez pas obtenir tous les voyages. Vous ne souhaitez obtenir que les voyages qui sont nouveaux depuis la dernière interrogation. L’expression $filter=TripId gt 0 obtient les nouveaux voyages en retournant les TripId des voyages qui sont ultérieurs aux TripId précédemment interrogés. Le nombre 0 utilisé ici sera automatiquement mis à jour à chaque fois qu’un déclencheur d’interrogation se produit.

    En outre, l’expression $orderby=TripId desc indique que l’ordre des données est retourné en fonction du TripId dans l’ordre décroissant. Le déclencheur exige que les résultats soient retournés dans l’ordre décroissant. Autrement dit, les résultats retournés par le service back-end doivent être triés dans l’ordre inverse dans le paramètre du déclencheur afin que le paramètre le plus récent (tel que TripId dans cet exemple) soit la première valeur retournée dans le tableau de données.

    Importer à partir de l’exemple de menu

    Sélectionnez le bouton Importer pour importer les exemples de données. La zone de la demande affiche maintenant le verbe, l’URL, le chemin et les paramètres de requête.

  9. Dans la zone de la requête, sélectionnez le paramètre de requête $filter, puis choisissez Modifier pour afficher la boîte de dialogue Paramètre.

    Modifier le paramètre de filtre

  10. Dans la boîte de dialogue Paramètre, pour $filter, définissez la sélection Visibilité sur interne. Ce paramètre est utilisé uniquement en interne par le connecteur, ce qui empêche l’utilisateur d’apporter des modifications. Pour plus d’informations sur les paramètres de visibilité, consultez l’extension OpenAPI x-ms-visibility..

    Sélectionnez Retour pour revenir à la zone de la requête.

    Modification du paramètre de filtre

  11. Dans la zone de la requête, sélectionnez le paramètre de requête $orderby, puis choisissez Modifier pour afficher la boîte de dialogue Paramètre.

  12. Dans la boîte de dialogue Paramètre, pour $orderby, définissez la sélection Obligatoire ? sur Oui et la sélection Visibilité sur interne. Là encore, ces paramètres empêchent l’utilisateur d’apporter des modifications à ce paramètre.

    De plus, entrez TripId desc comme valeur dans la zone Valeur par défaut. Ces paramètres permettent de s’assurer que les résultats sont fournis dans l’ordre inverse.

    Sélectionnez Retour pour revenir à la zone précédente.

    Modification du paramètre orderby

  13. La zone Réponse affiche des informations basées sur la réponse HTTP pour l’action. Sélectionnez Ajouter la réponse par défaut.

    Ajouter une réponse d’interrogation par défaut

  14. Définissez la réponse pour le déclencheur d’interrogation, puis choisissez Importer. Utilisez l’exemple fourni ci-dessous pour le corps de la réponse, qui génère automatiquement un schéma pour la réponse.

    Ajouter le corps de la réponse d’interrogation

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

    Notes

    Veillez à utiliser le nombre réel provenant de vos métadonnées au lieu de <numéro de service> dans l’URL.

  15. Dans la zone Configuration du déclencheur, sélectionnez le paramètre utilisé pour surveiller le changement d’état dans TripPin. Dans cet exemple, le paramètre à entrer est $filter.

    Dans cet exemple, utilisez l’expression suivante dans Spécifier la valeur à passer au paramètre de requête sélectionné :

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

    Cette expression est utilisée pour obtenir les résultats les plus récents à chaque fois que le déclencheur s’exécute. Dans l’expression que vous utilisez ici, lorsque TripId est supérieur à la valeur retournée par le reste de l’expression, le déclencheur s’exécute. Si TripId n’est pas supérieure à la valeur retournée par le reste de l’expression, aucun déclencheur ne se produit.

    Dans la sélection Sélectionner la collection qui contient les données du déclencheur, choisissez @triggerBody().value. Il s’agit du tableau qui contient les données du déclencheur qui sont retournées par le service back-end.

    Configuration du déclencheur d’interrogation

  16. En haut de l’assistant, sélectionnez Créer un connecteur.

Utiliser le déclencheur d’interrogation

Maintenant que tout est configuré, vous pouvez utiliser le déclencheur d’interrogation dans un flux. Dans cette section, vous allez créer un flux qui interrogera le service back-end à la recherche de modifications à chaque fois qu’un nouveau voyage est enregistré pour une personne spécifique.

  1. Dans flow.microsoft.com, à gauche de la page, choisissez Créer.

  2. Sous Démarrer de zéro, choisissez Flux instantané.

  3. Dans la boîte de dialogue Générer un flux instantané, sélectionnez le bouton Ignorer.

  4. Dans la zone de recherche, entrez Se déclenche lors de l’ajout d’un nouveau voyage.

    Capture d’écran montrant le texte de recherche dans la zone de recherche.

    Cliquez sur l’élément dans la liste pour l’utiliser comme déclencheur.

  5. Dans la zone de flux Personne, entrez russellwhyte pour la personne dont vous allez examiner les voyages, puis sélectionnez + Nouvelle étape.

    Capture d’écran montrant la zone Personne et le bouton Nouvelle étape.

  6. Dans la boîte de dialogue Choisir une action, sélectionnez l’onglet Intégrée, puis Date Time.

    Capture d’écran montrant la boîte de dialogue Choisir une action.

  7. Sous Date Time, sélectionnez Heure actuelle.

    Capture d’écran montrant le bouton Heure actuelle.

  8. Sélectionnez Enregistrer pour enregistrer le nouveau flux.

Vérification et résolution des problèmes

Pour vérifier que tout est configuré correctement, choisissez Mes flux, puis le flux Se déclenche lors de l’ajout d’un nouveau voyage -> Heure actuelle pour afficher l’historique des exécutions. Étant donné que le flux n’a encore jamais été exécuté, l’historique ne devrait afficher aucune donnée.

Pour tester le flux, vous devez ouvrir l’application Postman pour ajouter de nouvelles données dans TripPin.

  1. Dans Postman, sélectionnez l’icône + en regard de l’onglet Launchpad.

  2. Dans la demande sans titre, sélectionnez POST dans la zone déroulante à gauche, puis entrez l’adresse suivante dans la zone Entrer l’URL de la demande :

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

    Notes

    Veillez à utiliser le nombre réel provenant de vos métadonnées au lieu de <numéro de service> dans l’URL.

  3. Sous la demande POST, sélectionnez l’onglet Corps, puis choisissez brut. Dans la liste déroulante à droite de brut, choisissez JSON.

  4. Dans la zone de texte, entrez le texte suivant :

    {
         "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. Sélectionnez Envoyer pour envoyer le message POST au site TripPin.

    Envoyer le message POST

    La réponse doit être retournée avec l’état 201 Created.

Maintenant, lorsque vous ouvrez Mes flux, puis choisissez le flux Se déclenche lors de l’ajout d’un nouveau voyage -> Heure actuelle, vous verrez dans l’historique des exécutions qu’un déclencheur s’est produit.

Un déclencheur s’est produit

Notes

Si vous exécutez une autre demande POST dans Postman pour la même personne, vous devez modifier la valeur TripId dans le corps JSON. Sinon, une erreur 409 Conflit se produit.

Résumé

Si tout est correctement configuré, vous recevrez désormais des notifications dans Microsoft Power Automate à chaque fois qu’un nouveau voyage sera ajouté à TripPin.

Étapes suivantes

Fournir des commentaires

Nous apprécions grandement les commentaires sur les problèmes liés à notre plateforme de connecteurs ou les idées de nouvelles fonctionnalités. Pour fournir des commentaires, accédez à Soumettre des problèmes ou obtenir de l’aide avec les connecteurs et sélectionnez votre type de commentaire.