以前、クラウドフローからデスクトップフローを呼び出すハイブリッドフロー(RPAを作りましょう ハイブリッドフロー編)を紹介しました。プラミアムアクションの「Power Automate Desktopで構築したフローを実行する」を利用することで実現可能となっています。これとは反対にデスクトップフローからクラウドフローの呼び出しは残念ながら現時点では明確なアクションとしては提供されていませんが、いくつかの機能を組み合わせることで実現可能となっています。今回は、ハイブリッドフローリバースということで、デスクトップフローからクラウドフローの呼び出し方を紹介します。今回作成するのは、クラウドフロー側で用意した“Teamsにメッセージを投稿する”というフローをデスクトップフローから呼び出すといったものになります。
ハイブリッドフローで必要なライセンス
前回紹介したハイブリッドフローの作成同様、今回もPower Automateの有償ライセンスが必要となります。最低限「Power Automate per user with attended RPA(1ユーザーあたり¥4,350/月)」が必要となります。
※参照※
https://developers.gmo.jp/technology/8233
クラウドフローの作成
まずはPower Automateのクラウドフローの作成から。Power Automate Desktopのデスクトップフローから呼び出されるための設定を行います。今回のポイントはクラウドフローのトリガーとして「HTTP要求の受信時」を利用する部分です。
作成するのは「自動化したクラウドフロー」となります。
ここはスキップで進みます。
“http”のキーワードで検索して、トリガーの中から「HTTP要求の受信時」を選択します。
今回のフローはTeamsへメッセージを投稿する機能となるので、以下のJSONスキーマを入力します。
{ "type": "object", "properties": { "subject": { "type": "string" }, "message": { "type": "string" } }}
次に、Teamsのアクションから「メッセージを投稿する」を選択します。
先ほどの「HTTP要求の受信時」で入力したJSONスキーマを読み取って、「件名」と「メッセージ」は動的なコンテンツから選択可能となっています。
いったんここまでの内容で名前を付けて保存します。
保存後「HTTP要求の受信時」を確認すると、「HTTP POSTのURL」が発行されているのが確認できます。こちらをコピーして取得しておきます。
URLのデコード
取得したURLはエンコードされているので、この後、Power Automate Desktopのデスクトップフローで利用するにはURLデコードを行っておく必要があります。
UrlEncode.net(http://urlencode.net/)などでもデコードは可能ですし、PowerShellでも以下のようにデコードできます。
$Url = "取得したUrl"[System.Web.HttpUtility]::UrlDecode($Url,[Text.Encoding]::GetEncoding("sjis"))
デスクトップフローの作成
続いて、Power Automate Desktopでデスクトップフローを作成します。
アクションの中から「Web」-「Webサービスを呼び出す」を選択します。
以下の内容を設定して保存します。
URL先ほど取得してデコードしたものを入力しますメソッドPOST受け入れるapplication/jsonコンテンツタイプapplication/json要求本文{"subject":"TEST2020", "message":"テストです!"}要求本文をエンコードしますOFF
実行してみましょう!
上手くいきました!成功です!
参考までに、デスクトップフローで「Webサービスを呼び出す」の部分を「PowerShellスクリプトの実行」に置き換えることも可能です。
$Url = "取得したURL"$postText = @{subject="TEST2020"; message="テストです!"} | ConvertTo-Json -Compress$postBody = [Text.Encoding]::UTF8.GetBytes($postText)Invoke-RestMethod -Method POST -Uri $Url -Body $postBody -ContentType application/json
以上がデスクトップフローからクラウドフローを呼び出すハイブリッドフローリバースとなります。
さいごに
デスクトップフローをクラウドフローが連携することでPower Automateの利便性は確実にアップします。
今回のようにTeamsを絡めてのメッセージングや、デスクトップフローからOneDriveにファイルを保存した後にクラウドフローで処理するなどアイディア次第で色々便利に使えそうです。
これぞハイブリッドフローという使い方を見つけてみてください。