Teamsのアダプティブカードで回答を受け取る
自分宛てのカードで「確認しました」「修正が必要」を選び、回答値を取り出す練習です。カードのJSON、具体的な式、未回答時との違いを確認します。
画面上の名前は、表示言語やバージョンによって異なる場合があります。クラウドフローはトリガー(フローを開始する条件)から始まり、その後にアクションを実行します。値の受け渡しには、前のステップの出力を選ぶ「動的コンテンツ」を使います。式は[式]欄へ入力します。
実行前に確認
- Teamsへの接続、対象アカウントの利用権、組織のポリシー、Power Automateのライセンスを確認してください。TeamsコネクタはStandardですが、誰でも無料で実行できるという意味ではありません。この例はFlow botを使える商用環境が対象です。
- 実行すると自分宛てでもTeamsにカードが投稿されます。架空の練習文だけを使い、機密情報を入力しないでください。カードと回答はTeamsやフローの実行履歴に残ります。
- これは回答値を取り出す練習で、正式な承認や複数人全員の合意を集める仕組みではありません。業務承認には関連する承認の記事を参照してください。
- 未回答は「修正が必要」ではありません。応答待ち、投稿失敗、キャンセル、タイムアウトを分けて扱います。失敗・タイムアウト時に成功時用のAnswerOutを実行させる設定へ変えないでください。本番の期限や例外処理は別途設計が必要です。
1使うトリガーとアクション
- トリガー手動でフローをトリガーする本番と分けた練習フローを開始
- アクションアダプティブ カードをポストして応答を待つCardReply:自分宛てに投稿して回答を待つ
- アクション作成AnswerOut:応答の data.answer を確認
図で見る処理のイメージ
概念図「確認しました」と「修正が必要」は、それぞれ別の文字列を返します。まずは自分に届く1枚のカードと、取り出す値の関係を見ます。
ボタンの表示と、返す値を見比べる
【練習】内容を確認しましたか?
- 確認しましたdata.answer
confirmed - 修正が必要data.answer
review_requested
自分宛てに投稿
CardReplyで2つのボタンを表示
1つ選んで回答
選んだボタンのdata.answerを送る
値を確認
AnswerOutに回答の文字列が出る
「確認しました」ならconfirmed、「修正が必要」ならreview_requested。まだ押していなければ、後続の作成は始まりません。
| 今回の操作 | CardReplyの状態 | AnswerOutの出力 |
|---|---|---|
| A:確認しましたを押す | 回答を受けて成功 | confirmed |
| B:修正が必要を押す | 回答を受けて成功 | review_requested |
| C:まだ押さない | 回答待ち | 未実行(値は出ない) |
図と表は設定に沿った期待値です。実際のPower Automateフローを実行して確認した結果ではありません。Teamsの見た目や項目名は環境により異なります。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する9ステップの設定と確認方法
- 1
準備:商用のMicrosoft 365環境で、Teamsを使える自分の職場アカウントとメールアドレスを確認します。TeamsのWorkflowsアプリが使えること、Power AutomateからTeamsへの接続が有効なことを確認。本番と分けたインスタントクラウドフローを作り、「手動でフローをトリガーする」を選びます。テストは1回ずつ行い、実行中の練習フローを重ねません。
- 2
Microsoft Teamsの「アダプティブ カードをポストして応答を待つ」(Post adaptive card and wait for a response/操作ID:PostCardAndWaitForResponse)を追加し、名前を CardReply に変更します。非推奨の旧アクションや、応答を待たない投稿アクションを選ばないようにします。[投稿者]=フローボット(Flow bot)、[投稿先]=フローボットとのチャット(Chat with Flow bot)、[受信者]=準備した自分のメールアドレスにします。
- 3
CardReplyの[メッセージ]欄へ、下のJSON全体を通常の入力として貼り付けます。式として入力したり、全体をさらに引用符で囲んだりしません。2つのAction.Submitは表示するtitleと、送るdata.answerを分けてあります。[更新メッセージ]に「回答を受け取りました。練習を終了します。」を指定します。更新する設定が別に表示される場合は有効にします。
カード本文に貼り付けるJSON
CardReplyの「メッセージ」欄に使います。ボタンごとのdata.answerが、後で取り出す値です。
{ "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextBlock", "text": "【練習】内容を確認しましたか?", "wrap": true } ], "actions": [ { "type": "Action.Submit", "title": "確認しました", "data": { "answer": "confirmed" } }, { "type": "Action.Submit", "title": "修正が必要", "data": { "answer": "review_requested" } } ] } - 4
直後に組み込みのデータ操作「作成」を1つ置き、名前を AnswerOut に変更します。[入力]の[式]欄へ body('CardReply')?['data']?['answer'] を入れて確定します。先頭の @ や @{ } は付けません。CardReplyに成功した後だけ実行する既定の設定を保ちます。回答者・ボタンの表示名・submitActionIdではなく、JSONで定義したanswerを読み取ります。
- 5
確認A:保存して手動実行し、Teamsで今回届いたカードの「確認しました」を1回押します。フローの実行履歴でCardReplyが成功したこと、出力本文のdata内にanswer=confirmedがあること、AnswerOutの出力もconfirmedであることを確認します。この練習では外部の表や承認状態は更新しません。
- 6
確認B:新しく手動実行し、新しいカードの「修正が必要」を1回押します。AnswerOutの出力がreview_requestedになることを確認します。同じカードを押し直して回答を変更する練習ではありません。各カードで処理されるのは最初の回答だけです。
- 7
確認C:もう一度実行し、今回はボタンを押さずに実行履歴を見ます。CardReplyは回答待ち、AnswerOutは未実行で、confirmedもreview_requestedも得られません。確認後は、その練習実行を実行履歴からキャンセルして待機を終えます。キャンセル後の古いカードは使わず、再テストには新しい実行とカードを使います。
- 8
届かない・押しても再開しない:実行履歴のCardReplyを開き、受信者、Teams接続、Workflowsの利用可否、JSONの半角ダブルクォートを確認します。古いカードや、応答を待たないアクションになっていないかも確認します。権限エラーは組織の管理者に確認し、管理ポリシーを無効にして回避しません。
- 9
AnswerOutが空(null)になる:成功したCardReplyの実行履歴で出力本文を開き、dataの中にanswerがあるか確認します。JSONのキーの大文字・小文字、式内のCardReplyというアクション名、押したカードが今回のものかを照合します。空や想定外の値を「修正が必要」と自動判定せず、ここで原因を調べます。本番で条件分岐を足す場合は、confirmedとreview_requestedをそれぞれ明示して判定し、その他は別扱いにします。
- 対象環境
- Power Automate クラウドフロー
- 更新日
- 2026年10月12日