この記事は[RPA] UiPath Friends 公式 Advent Calendar 2020 21日目の記事です。
UiPathでワークフロー実行が完了した際に、Microsoft Teamsに通知したい!!
めちゃめちゃ需要があるはずなのに、情報が少ないですよね(;´・ω・)
UiPath公式からも UiPath.MicrosoftTeams.Activities というTeams連携用ライブラリが提供されているのですが、事前設定が複雑で、かつ用意されてるアクティビティのプロパティ設定含め、すこーしハードルが高いんですよね。
Teamsに完了メッセージを送信するだけであれば、実は簡単な方法があるので本記事でご紹介します。
作るもの
UiPathから HTTP要求アクティビティ を使用し、Microsoft Power Automateにメッセージを送ります。
Microsoft Power Automateでは HTTP要求の受信時トリガーを使用し、UiPathから通知を受け取ります。また受け取ったパラメータを使用して、Microsoft Teamsに投稿します。
ざっと以下のようなイメージです。
Power Automateの HTTP要求の受信時 トリガー便利すぎます。。。
それでは作り方を説明します。
Power Automate側の実装
Power Automateで最初にプロジェクト(フローと呼びます)を作成します。
Power Automateフローは、トリガー(フローを動かすきっかけとなる操作)とアクション(フロー内で実施する操作)から構成されます。
Power Automate フローの作成
まずはPower Automateにログインします。
「作成」タブ - 「自動化したクラウドフロー」を選択し、何も入力せず、「スキップ」をクリックします。
新規フロー作成画面が表示されるので、画面左上の「無題」を選択し、「UiPathからTeamsにメッセージを送信する」に書き換えます。
以上でフロー作成は完了です。
Power Automate トリガーの作成
続いてトリガーを作成します。
画面中央の検索欄に「HTTP」と入力し、画面下に表示される「HTTP 要求の受信時」トリガーを選択します。
JSONスキーマの作成
UiPathから受け取るパラメータを、JSONスキーマという形で事前に登録を行います。
「サンプルのペイロードを使用してスキーマを作成する」を選択します。
以下のコードをコピーして貼り付け、「完了」ボタンをクリックします。
{
"ProcessName":"UiPathデモプロセス",
"Status":"完了",
"SuccessCount":"5",
"ErrorCount":"1",
"SkipCount":"2"
}
要求本文のJSONスキーマが表示されることを確認します。
以上でトリガー作成は終了です。
保存するとUiPathから呼び出すためのURLが発行されますので、アクション作成後、発行されたURLを確認しましょう。
Power Automate アクションの作成
「新しいステップ」をクリックし、Microsoft Teamsを選択します。
表示されるアクションの中から「チャットまたはチャネルにメッセージを投稿する」を選択します。
投稿者は「Flow Bot」を選択し、投稿先は「Chat with Flow bot」を選択します。
今回は自分個人宛てに送信するため、Recipientには自分のメールアドレスを入力します。
Teams投稿メッセージの編集
Message欄を選択し、固定の文字として以下を入力します。
UiPathプロセス通知
=============
プロセス名:
ステータス:
成功件数:
失敗件数:
スキップ件数:
Message欄にカーソルを合わせると、動的なコンテンツとして、先ほどJSONスキーマとして登録した定義情報が選択できるようになっているはずです。各項目の:右側にカーソルを合わせ、動的なコンテンツから項目をクリックすると配置できます。
最終的に以下の形になっていれば完了です。
以上でアクションの作成は完了です。
画面右上の「保存」ボタンをクリックし、フローを保存します。
「HTTP 要求の受信時」をクリックし展開すると、URLが発行されているのでコピーしてメモしておきます。
UiPath側の実装
続いてUiPath側の実装です。
UiPathプロジェクトの作成
UiPath Studioで新規プロセスを作成します。
名前は「UiPathからTeamsにメッセージを送信する」としました。
パッケージのインストール
2つのパッケージを追加します。
「パッケージを管理」をクリックし、パッケージ管理画面を開きます。
オフィシャルを選択し、検索欄で「UiPath.Web.Activities」と入力し、インストールします。
同様に、「Workflow Manager Activities」で検索し、インストールします。
ワークフローの作成
3つのアクティビティを配置します。
1つ目に、完了通知を送信する時のパラメータを指定するため、Dictionary形式でデータを作成します。
アクティビティ検索欄で「Build Dictionary」と検索し、Mainワークフローに配置します。
配置時、「型の選択」ダイアログが表示されるので、両方ともStringを選択します。
「結果」プロパティに、dictというDictionary変数を指定します。
続けて「Values」プロパティの詳細ボタンより以下を指定します。
2つ目に、bodyというstring型変数を作成し、「代入」アクティビティを配置し以下を指定します。
body = Newtonsoft.Json.JsonConvert.SerializeObject(dict)
3つ目に、「HTTP要求」アクティビティを配置します。
表示されるウィザードで、Power AutomateでメモしたURLを入力します。
要求メソッドは「Post」を選択します。「OK」を選択します。
続いて「HTTP要求」アクティビティの「本文」プロパティに「body」変数を指定します。「本文形式」プロパティを「application/json」に変更します。
以上で完成です。最終系は以下の形です。
動作確認
UiPathでワークフローを実行してみましょう!
うまく届きましたでしょうか?
本運用時はUiPath Studioで 上記3つの処理をライブラリ化 し、パラメータを渡せば呼び出せるようにすれば、内部の詳しい実装を知らなくても済みますし、StudioXでも使えるようになりますね。
ということで、おしまいです😀