この記事は[RPA] UiPath Friends 公式 Advent Calendar 2020 21日目の記事です。

UiPathでワークフロー実行が完了した際に、Microsoft Teamsに通知したい!!

めちゃめちゃ需要があるはずなのに、情報が少ないですよね(;´・ω・)
UiPath公式からも UiPath.MicrosoftTeams.Activities というTeams連携用ライブラリが提供されているのですが、事前設定が複雑で、かつ用意されてるアクティビティのプロパティ設定含め、すこーしハードルが高いんですよね。

Teamsに完了メッセージを送信するだけであれば、実は簡単な方法があるので本記事でご紹介します。

Microsoft Power Automateを使用します。

作るもの

UiPathから HTTP要求アクティビティ を使用し、Microsoft Power Automateにメッセージを送ります。
Microsoft Power Automateでは HTTP要求の受信時トリガーを使用し、UiPathから通知を受け取ります。また受け取ったパラメータを使用して、Microsoft Teamsに投稿します。

ざっと以下のようなイメージです。

pic1

Power Automateの HTTP要求の受信時 トリガー便利すぎます。。。
それでは作り方を説明します。

Power Automate側の実装

Power Automateで最初にプロジェクト(フローと呼びます)を作成します。
Power Automateフローは、トリガー(フローを動かすきっかけとなる操作)とアクション(フロー内で実施する操作)から構成されます。

Power Automate フローの作成

まずはPower Automateにログインします。

「作成」タブ - 「自動化したクラウドフロー」を選択し、何も入力せず、「スキップ」をクリックします。

pic2

新規フロー作成画面が表示されるので、画面左上の「無題」を選択し、「UiPathからTeamsにメッセージを送信する」に書き換えます。

pic3

以上でフロー作成は完了です。

まだトリガーとアクションを設定していないため、保存できません。
この状態でページ移動すると作成されなかったことになりますので注意してください。

Power Automate トリガーの作成

続いてトリガーを作成します。
画面中央の検索欄に「HTTP」と入力し、画面下に表示される「HTTP 要求の受信時」トリガーを選択します。

pic4

「HTTP要求の受信時」トリガーでは、他のシステム(webアプリやRPA)からPower Automateを呼び出すためのURLを発行できます。発行されたURLを呼び出す(HTTPリクエストを発行)ことで、任意のタイミングでPower Automateフローを呼び出すことができる超お勧めのトリガーです。

JSONスキーマの作成

UiPathから受け取るパラメータを、JSONスキーマという形で事前に登録を行います。
「サンプルのペイロードを使用してスキーマを作成する」を選択します。

pic15

以下のコードをコピーして貼り付け、「完了」ボタンをクリックします。

{
    "ProcessName":"UiPathデモプロセス",
    "Status":"完了",
    "SuccessCount":"5",
    "ErrorCount":"1",
    "SkipCount":"2"
}

要求本文のJSONスキーマが表示されることを確認します。

pic16

以上でトリガー作成は終了です。

現時点ではまだアクションを設定していないため、保存できません。
保存するとUiPathから呼び出すためのURLが発行されますので、アクション作成後、発行されたURLを確認しましょう。

Power Automate アクションの作成

「新しいステップ」をクリックし、Microsoft Teamsを選択します。
表示されるアクションの中から「チャットまたはチャネルにメッセージを投稿する」を選択します。

pic5

投稿者は「Flow Bot」を選択し、投稿先は「Chat with Flow bot」を選択します。

pic6

もしチャネルに投稿したければ、「Channel」を選択し、画面の指示にしたがって「Team」と「Channel」を指定してください。

今回は自分個人宛てに送信するため、Recipientには自分のメールアドレスを入力します。

Teams投稿メッセージの編集

Message欄を選択し、固定の文字として以下を入力します。

UiPathプロセス通知
=============
プロセス名:
ステータス:
成功件数:
失敗件数:
スキップ件数:

Message欄にカーソルを合わせると、動的なコンテンツとして、先ほどJSONスキーマとして登録した定義情報が選択できるようになっているはずです。各項目の:右側にカーソルを合わせ、動的なコンテンツから項目をクリックすると配置できます。
最終的に以下の形になっていれば完了です。

pic17

UiPathから渡されたパラメータは「HTTP要求の受信時 - 動的なコンテンツ」として参照することができます

以上でアクションの作成は完了です。

画面右上の「保存」ボタンをクリックし、フローを保存します。
「HTTP 要求の受信時」をクリックし展開すると、URLが発行されているのでコピーしてメモしておきます。

pic7

UiPath側の実装

続いてUiPath側の実装です。

UiPathプロジェクトの作成

UiPath Studioで新規プロセスを作成します。
名前は「UiPathからTeamsにメッセージを送信する」としました。

pic8

パッケージのインストール

2つのパッケージを追加します。
「パッケージを管理」をクリックし、パッケージ管理画面を開きます。
オフィシャルを選択し、検索欄で「UiPath.Web.Activities」と入力し、インストールします。 同様に、「Workflow Manager Activities」で検索し、インストールします。

pic9

ワークフローの作成

3つのアクティビティを配置します。

1つ目に、完了通知を送信する時のパラメータを指定するため、Dictionary形式でデータを作成します。

アクティビティ検索欄で「Build Dictionary」と検索し、Mainワークフローに配置します。
配置時、「型の選択」ダイアログが表示されるので、両方ともStringを選択します。

pic10

「結果」プロパティに、dictというDictionary変数を指定します。
続けて「Values」プロパティの詳細ボタンより以下を指定します。

pic11

2つ目に、bodyというstring型変数を作成し、「代入」アクティビティを配置し以下を指定します。

pic12

body = Newtonsoft.Json.JsonConvert.SerializeObject(dict)
Power Automateには、JSONという形式でパラメータを渡す必要があるため、Dictionary型をJSON形式に変換しています。

3つ目に、「HTTP要求」アクティビティを配置します。
表示されるウィザードで、Power AutomateでメモしたURLを入力します。
要求メソッドは「Post」を選択します。「OK」を選択します。

pic13

続いて「HTTP要求」アクティビティの「本文」プロパティに「body」変数を指定します。「本文形式」プロパティを「application/json」に変更します。

pic14

以上で完成です。最終系は以下の形です。

pic18

動作確認

UiPathでワークフローを実行してみましょう!

pic19

うまく届きましたでしょうか?
本運用時はUiPath Studioで 上記3つの処理をライブラリ化 し、パラメータを渡せば呼び出せるようにすれば、内部の詳しい実装を知らなくても済みますし、StudioXでも使えるようになりますね。

ということで、おしまいです😀