アダプティブカードとは?
Teamsではアダプティブカードを挿入することができる。
文字に様々な装飾を加えたり、テーブルなども表示することができる。
また、アダプティブカードでは、ボタンやテキストを配置することができる。
通常のPower Automateの処理では、ユーザーの入力情報をもとにリアルタイムに処理を切り替えることが出来ない。
しかし、アダプティブカード上から入力されたボタンやテキストを受け取ることで処理の幅がぐっと広がる。
アダプティブカードを挿入できるアクションの種類
Teamsへアダプティブカードを挿入できるPower Automateのアクションは3つ
- オプションの選択をフローボットとしてユーザーに投稿する
(英語表記:Post a choice of options as the Flow bot to a user) - アダプティブカードを投稿して応答を待機する
(英語表記:Post adaptive card and wait for a response) - チャットやチャネルにカードを投稿する + 誰かがアダプティブカードに応答した場合
(英語表記:Post card in a chat or channel)(When someone responds to an adaptive card)
1.オプションの選択をフローボットとしてユーザーに投稿する
もっとも、シンプルなアクションで、アダプティブカードのレイアウトを指定せず、選択肢に関する情報のみを設定する。
ユーザーは選択肢に回答すると、コメント入力画面が表示され、Submitボタンを入力すると回答完了となる。
回答を受け付けるまで、Power Automate側は待機する(同期処理)
回答が完了すると、selectedOptionとcommentsで情報を受け取ることができる。
フロー実行後
選択肢回答後
2.アダプティブカードを投稿して応答を待機する
フロー実行後
選択肢回答後
3.チャットやチャネルにカードを投稿する + 誰かがアダプティブカードに応答した場合
Card Type ID
「1.オプションの選択をフローボットとしてユーザーに投稿する」と「2.アダプティブカードを投稿して応答を待機する」ではユーザーから回答があるまでPower Automate側で待機していたが、「3.チャットやチャネルにカードを投稿する + 誰かがアダプティブカードに応答した場合」では待機しない。
そのため、アダプティブカードが送信されるとき、どの種類のアダプティブカードであるかを知っている必要があるため、送信側と受信側で同じ「Card Type ID」と「JSON定義」を合わせる必要がある。
選択肢回答後
ユーザーの回答はcardOutputsから取得することができる。
実行時の注意点
トリガー「誰かがアダプティブカードに応答した場合」はなぜか手動実行ができない。それに関連してか、過去の実行履歴をもとに自動実行すると以下のエラーが表示される。
手動でも自動でも実行できないので、毎回アダプティブカードを送信して、回答して…とするのは非効率であるため、子フローを作成したほうがいいかもしれない。
トリガー「誰かがアダプティブカードに応答した場合」を持つフローはあくまでも受信処理に専念し、受信を確認出来たら、必要なユーザー情報だけピックアップし子フローに全部投げるという考えだ。都合送信1,受信2で3フローも出来上がるのが少し気持ち悪いが…
アクション1. ~ 3.の比較
項目 | オプションの選択をフローボットとしてユーザーに投稿(Post a choice of options as the Flow bot to a user) | アダプティブカードを投稿して応答を待機(Post adaptive card and wait for a response) | チャットやチャネルにカードを投稿する + 誰かがアダプティブカードに応答した場合(Post card in a chat or channel + When someone responds to an adaptive card) |
---|---|---|---|
種別 | アクション | アクション | アクション+トリガー(組み合わせ) |
同期/非同期 | 同期(回答を受け取るまでフロー待機) | 同期(回答を受け取るまでフロー待機) | 非同期(投稿後は終了、回答は別フローで受信) |
レイアウトのカスタマイズ | ✕ 固定UI(選択肢ボタンのみ) | ○ Adaptive Card JSONで自由カスタマイズ可 | ○ Adaptive Card JSONで自由カスタマイズ可 |
投稿先 | 個人チャットのみ | 個人チャット or チャネル | 個人チャット or チャネル |
回答の受け取り方 | 同一フロー内で直接取得 | 同一フロー内で直接取得 | 別フローのトリガーで取得(カード種類IDで紐付け) |
特徴的な制限 | – 選択肢以外のUIは使えない- ボタン数に制限あり | – 待機中はフローがブロックされる- 長時間待機するとタイムアウト | – 回答は別フローでしか受け取れない- カード種類ID必須 |
主な利用シナリオ | シンプルなYes/Noや承認依頼 | 詳細入力や複数項目の回答が必要なアンケート | 長期間回答待ちや非同期処理、複数フローでの回答処理 |