Použití vlastního triggeru cyklického dotazování
Trigger cyklického dotazování je v podstatě událost, která pravidelně volá službu a hledá nová data. Triggery cyklického dotazování se od webhooků liší v tom, že trigger cyklického dotazování spouští událost, aby zjistil, jestli jsou k dispozici nová data, zatímco webhooky reagují na vložení nových dat ze služby. Jakmile tok určí, že jsou k dispozici nová data, můžete s těmito daty provést nějakou akci. Tento kurz ukazuje, jak pomocí triggeru cyklického dotazování aktivně načítat nová data.
Požadavky
- Předplatné služby Power Automate.
- Základní sestavování toků a vlastních konektorů.
Přečtěte si, jak spouštěč cyklického dotazování získává nová data
Trigger cyklického dotazování začíná nastavením stavu a pak v určitém intervalu pravidelně vyhledává aktualizace. Trigger si pak vyžádá všechna nová data od poslední aktualizace stavu. Kromě toho trigger také uchovává kontext stavu mezi požadavky.
Následující příklad obsahuje přehled způsobu, jakým trigger cyklického dotazování získává nová data.
- Modul runtime toku v triggeru vyvolá počáteční volání rozhraní API v konektoru.
- Konektor pak zavolá back-endovou službu.
- Back-endová služba pak do konektoru vrátí všechna aktuální data.
- Konektor následně vrátí zprávu 202 – Přijato, interval opakování a hlavičku umístění obsahující aktuální stav. Interval opakování je v sekundách. První volání vždy slouží k vytvoření předběžného stavu dat.
- Po vypršení časového limitu intervalu opakování modul runtime toku provede další volání konektoru s použitím hlavičky umístění a aktuálního stavu, který se v tomto příkladu rovná 1.
- Vzhledem k tomu, že se tento stav teď rovná 1, konektor ví, že má zavolat správné rozhraní API, které provede odpovídající filtrování, aby se vrátila správná sada dat. V tomto příkladu konektor převede volání na filtrovaný dotaz, který říká, že datum vytvoření je pozdější než určité časové razítko.
- V tomto příkladu od data vytvoření nevznikla žádná nová data, takže se zpět do konektoru odešle prázdná sada hodnot.
- Konektor následně vrátí zprávu 202 – Přijato, interval opakování a hlavičku umístění s nezměněným stavem.
- Po opětovném vypršení časového limitu intervalu opakování modul runtime toku provede další volání konektoru s použitím stejné hlavičky umístění a stejného stavu.
- Konektor opět provede odpovídající filtrování s použitím data vytvoření.
- Tentokrát se od data vytvoření zpřístupnila nová data, takže back-end vrátí zpět do konektoru hodnoty všech nových dat.
- Konektor pak vrátí zprávu 200 – OK, interval opakování, umístění s novou hodnotou stavu a pole hodnot obsahující všechna nová data zpřístupněná od data vytvoření. V tuto chvíli se spustí tok.
Vytváření triggerů cyklického dotazování z uživatelského rozhraní
Tato část ukazuje, jak vytvořit trigger dotazu v uživatelském rozhraní Power Automate. V tomto postupu jako výchozí bod použijete ukázkovou službu TripPin. Služba TripPin je velmi jednoduché rozhraní REST API obsahující seznam lidí a jejich cest.
Abyste mohli použít službu TripPin, musíte nejprve dynamicky vytvořit adresy URL, které tato služba vyžaduje. Do panelu Adresa prohlížeče zadejte https://services.odata.org/TripPinRESTierService. Vrátí se metadata potřebná pro tuto ukázku. Metadata zkopírujte a uložte do souboru pro pozdější použití.
Nastavení služby TripPin a vytvoření triggeru cyklického dotazování:
V Power Automate vyberte kartu Data > Vlastní konektory.
V podokně Vlastní konektory vyberte Nový vlastní konektor a pak Vytvořit z prázdné.
V dialogovém okně Vytvořit vlastní konektor zadejte název vlastního konektoru (v tomto příkladu můžete použít Polling Test) a pak vyberte Pokračovat.
Na stránce Obecné zadejte popis a hostitele. V tomto příkladu použijete adresu URL services.odata.org, která se vrátila jako hostitel v metadatech služby TripPin.
Parametr Hodnota Popis TripPin je příkladem cestovního webu. Hostitel services.odata.org Na stránce Zabezpečení jako typ ověřování zvolte Bez ověřování.
Na stránce Definice zvolte +Nový trigger a vyplňte popis triggeru. V tomto příkladu vytvoříte trigger, který se aktivuje při přidání nové cesty do něčího itineráře.
Parametr Hodnota Souhrn Aktivuje se při přidání nové cesty. Popis Aktivuje se při přidání nové cesty. ID operace OnNewTrip Viditelnost žádná (další informace viz seznam níže) Typ aktivační události Cyklické dotazování Vlastnost Viditelnost pro operace a parametry v toku má následující možnosti:
- žádná: zobrazí se normálně v toku
- rozšířené: skryté v další nabídce
- interní: skryté pro uživatele
- důležité: vždy se zobrazí nejprve uživateli
Oblast Žádost zobrazuje informace na základě požadavku HTTP na akci. Zvolte Importovat z ukázky.
V podokně Importovat z ukázky nadefinujete požadavek pro trigger cyklického dotazování. Jako příkaz vyberte GET. Do pole Adresa URL v podokně Importovat z ukázky zkopírujte adresu URL z metadat, která jste získali po dynamickém vytvoření adres URL, které služba vyžaduje. Za adresu přidejte
/People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc
. Příklad:https://services.odata.org/TripPinRESTierService/(S(<service number>))/People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc
Poznámka
V adrese URL nezapomeňte místo <service number> použít skutečné číslo z vašich metadat.
V tomto příkladu adresy URL vytváříte požadavek na jednu osobu a
{Person}
je proměnná modulu runtime, kterou může uživatel zadat v toku. Dále určujete, že chcete získat cesty konkrétní osoby zadané uživatelem.Nechcete však získat všechny cesty, ale pouze cesty, které vznikly od jejich posledního cyklického dotazování. Výraz
$filter=TripId gt 0
získá nové cesty tím, že vrátí ID všech cest, která jsou vyšší než dříve dotazovaná ID cest. Zde použité číslo0
se při každé aktivaci triggeru cyklického dotazování automaticky aktualizuje.Výraz
$orderby=TripId desc
také značí, že se data vrátí v pořadí od nejvyššího ID cesty po nejnižší. Trigger vyžaduje vrácení v sestupném pořadí. To znamená, že výsledky vrácené back-endovou službou musí v parametru triggeru být v obráceném pořadí, aby nejnovější parametr (jako je TripId v tomto příkladu) byl první vrácenou hodnotou v poli dat.Výběrem tlačítka Importovat importujte ukázková data. V oblasti požadavku se teď zobrazí příkaz, adresa URL, cesta a parametry dotazu.
V oblasti požadavku vyberte parametr dotazu $filter a zvolte Upravit. Zobrazí se dialogové okno Parametr.
V dialogovém okně Parametr pro parametr
$filter
jako Viditelnost nastavte vnitřní. Tento parametr interně používá pouze konektor, který zabrání uživateli provádět jakékoli změny. Další informace o nastavení viditelnosti najdete v tématu věnovaném rozšíření OpenAPI x-ms-visibility.Vyberte Zpět a vraťte se do oblasti požadavku.
V oblasti požadavku vyberte parametr dotazu $orderby a zvolte Upravit. Zobrazí se dialogové okno Parametr.
V dialogovém okně Parametr pro parametr
$orderby
v části Je povinné? nastavte Ano a jako Viditelnost nastavte vnitřní. Tato nastavení opět zabrání uživateli provádět jakékoli změny tohoto parametru.Kromě toho do pole Výchozí hodnota zadejte hodnotu TripId desc. Tato nastavení zajistí, aby výsledky byly v obráceném pořadí.
Vyberte Zpět a vraťte se do předchozí oblasti.
Oblast Žádost zobrazuje informace na základě reakce HTTP na akci. Vyberte Přidat výchozí odpověď.
Definujte odpověď pro trigger cyklického dotazování a pak zvolte Importovat. Jako text odpovědi použijte níže uvedenou ukázku, která automaticky vytvoří schéma odpovědi.
{ "@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" } ] }
Poznámka
V adrese URL nezapomeňte místo <service number> použít skutečné číslo z vašich metadat.
V oblasti Konfigurace triggeru vyberte parametr sloužící k monitorování změn stavu ze služby TripPin. V tomto příkladu zadejte parametr
$filter
.V tomto příkladu v části Zadejte hodnotu, která se předá do vybraného parametru dotazu použijte následující výraz:
TripId gt @{triggerBody().value[0].TripId}
Tento výraz slouží k získání nejnovějších výsledků při každém spuštění triggeru. Ve výrazu, který tady používáte, se trigger spustí, když je hodnota
TripId
vyšší než hodnota vrácená zbytkem výrazu. Pokud je hodnotaTripId
nižší než hodnota vrácená zbytkem výrazu, žádný trigger se nespustí.V části Vyberte kolekci, která obsahuje data triggeru zvolte @triggerBody().value. Toto pole obsahuje data triggeru vrácená back-endovou službou.
V horní části průvodce vyberte Vytvořit konektor.
Použití triggeru cyklického dotazování
Teď, když je vše nakonfigurované, můžete trigger cyklického dotazování použít v toku. V této části vytvoříte tok, který se bude back-endové služby dotazovat na změny vždy, když dojde k zaznamenání nové cesty pro konkrétní osobu.
Na levé straně stránky flow.microsoft.com zvolte Vytvořit.
V části Začít od začátku zvolte Okamžitý tok.
V dialogovém okně Vytvořit okamžitý tok vyberte tlačítko Přeskočit.
Do vyhledávacího pole zadejte Aktivuje se při přidání nové cesty.
Když kliknete na položku v seznamu, použije se jako trigger.
Do pole toku Osoba jako osobu, jejíž cesty budete zkoumat, zadejte russellwhyte a pak vyberte + Nový krok.
V dialogovém okně Zvolte akci vyberte kartu Předdefinované a pak vyberte Datum a čas.
V části Datum a čas vyberte Aktuální čas.
Uložte nový tok výběrem možnosti Uložit.
Ověření a řešení potíží
Pokud chcete ověřit, že je vše správně nastavené, zvolte Moje toky a pak tok Aktivuje se při přidání nové cesty -> Aktuální čas. Zobrazí se historie spuštění. Vzhledem k tomu, že se tento tok ještě nespustil, měla by se zobrazit prázdná historie.
Pokud chcete tok otestovat, musíte otevřít aplikaci Postman a přidat nová data do služby TripPin.
V aplikaci Postman vyberte ikonu + vedle karty Launchpad (Hlavní panel).
V požadavku bez názvu v rozevíracím seznamu vlevo vyberte POST a pak do pole Enter request URL (Zadejte adresu URL požadavku) zadejte následující adresu:
https://services.odata.org/TripPinRESTierService/(S(<Service number))/People('russellwhyte')/Trips
Poznámka
V adrese URL nezapomeňte místo <service number> použít skutečné číslo z vašich metadat.
V rámci požadavku POST vyberte kartu Body (Text) a pak zvolte raw (nezpracovaný text). V rozevíracím seznamu napravo od raw zvolte JSON.
Do textového pole zadejte následující text:
{ "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" }
Vyberte Send (Odeslat) a odešlete zprávu POST na web TripPin.
Měla by se vrátit odpověď se stavem
201 Created
.
Když teď otevřete Moje toky a zvolíte tok Aktivuje se při přidání nové cesty -> Aktuální čas, v historii spuštění se zobrazí informace o aktivaci triggeru.
Poznámka
Pokud pro stejnou osobu spustíte v aplikaci Postman jiný požadavek POST, musíte v textu JSON změnit hodnotu TripId. Jinak dojde k chybě 409 – Konflikt.
Pokud je vše správně nakonfigurované, v Microsoft Power Automate se vám teď zobrazí oznámení vždy, když se do služby TripPin přidá nová cesta.
Viz také
- Vytvoření vlastního konektoru pro webové rozhraní API
- Ověřování rozhraní API a konektoru pomocí Microsoft Entra ID
Poskytnutí názorů
Velmi si vážíme vašich názorů na problémy s naší platformou konektorů nebo nových nápadů na funkce. Chcete-li poskytnout zpětnou vazbu, přejděte do části Odeslat problémy nebo získat pomoc s konektory a vyberte typ zpětné vazby.