承認フローにTeamsアダプティブカードを利用する
解決できる課題
Teams承認の自動化で、以下のようなお悩みはありませんか? ・シンプルな承認画面しか扱えず、柔軟な対応ができない ・承認や拒否の時にコメント入力を受け付けたい ・承認時の選択肢は3つ以上にしたい このレシピを使えば、多段階のフローを作らず、承認画面を自作することで、承認フローをリッチにして解決します。
完成イメージ

必要なもの
Teams コネクタ
SharePoint コネクタ
作り方
Power Automateと承認の組み合わせは、自動化の中でも基本です。
簡素な承認フローであれば、承認を起動するトリガーと、承認/拒否を操作するアクションのステップで済みます。
ですが、拒否の際には理由を付したい、あるいは選択肢は複数用意したい場合、基本のフローでは満足できません。
フローで条件分岐を駆使して多段階で構えることもできますが、承認画面を自作することでスマートに解決可能です。
- 1. アダプティブカードの作成
Teamsにはアダプティブカードの機能があり、通常のメッセージ機能を拡張可能です。
作成方法は、JSONによる記述が必要ですが、Microsoftによるデザイナーも用意されています。
このレシピでは、例として下記のケースを想定します。
・承認/拒否/保留の選択肢を用意
・拒否/保留時のコメント入力受け付け
{
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "【承認依頼】"
},
{
"type": "TextBlock",
"text": "内容を確認し、以下のボタンから選択してください。",
"wrap": true
},
{
"type": "Input.Text",
"id": "comment",
"placeholder": "拒否・保留の場合は理由を入力してください",
"isMultiline": true
}
],
"actions": [
{
"type": "Action.Submit",
"title": "承認",
"style": "positive",
"data": { "action": "approve" }
},
{
"type": "Action.Submit",
"title": "拒否",
"style": "destructive",
"data": { "action": "reject" }
},
{
"type": "Action.Submit",
"title": "保留",
"data": { "action": "hold" }
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.4"
}
上記を使用すると、下図になります。

- 2. SharePointリストで承認依頼のフォームを作成
ステップ1の承認画面と整合性を持たせるため、リストの項目列は「タイトル」「日付」「コメント」を用意します。
※承認/拒否/保留の応答受付は、リストの選択肢を使用しても良いです
・タイトル: 依頼の件名、承認/拒否/保留の応答受付
・日付: 応答した日の記録
・コメント: 拒否と保留のコメント受付

- 3. トリガー「項目が作成されたとき」を設定
承認依頼の起点となるトリガーを用意します。
[サイトのアドレス]と[リスト名]は任意のものを選択します。

- 4. アクション「アダプティブ カードを投稿して応答を待機する」を設定
[投稿者]と[投稿先]は任意のものにし、チャネルにした場合、[チーム]と[チャネル]も設定します。
[メッセージ]に、ステップ1で作成したアダプティブカードのJSONを使用します。
[更新メッセージ]は、投稿の応答に対し、更新があった場合に表示されるメッセージで「更新されました。」にします。

- 5. スイッチを設定
アダプティブカードに用意した「承認・拒否・保留の選択肢」に対し、それぞれアクションを用意します。
[オン]に「body/data/action」を選択します。
これはJSONのactions内にある"data": { "action": "xxx" }が該当します。
スイッチ内の条件分岐は、それぞれ「approve」「reject」「hold」を入力します。
※アクションの名前(Case1-3)は、「approve」「reject」「hold」にしておくと分かりやすいです

- 6. アクション「項目の更新」を設定
[サイトのアドレス]と[リスト名]はステップ3と同じにし、[ID]は「ID」を選択します。
詳細パラメーターは、下記の通りです。
・タイトル: 「タイトル」 - 「body/data/action」
・日付: 「body/responseTime」
・コメント: 「body/data/comment」 ※rejectとholdの場合のみ

- 7. 動作確認
SharePointリストから、承認依頼を行います。

Teamsに承認依頼の投稿が届き、今回は「拒否」します。

「拒否」のボタンを押下後、ステップ4で設定した「更新メッセージ」が表示されます。

承認依頼に対し、件名に「reject」とコメントに理由が付され、リストが更新されました。
