Power Automate:「アダプティブ カードを投稿して応答を待機する」で応答情報が取得できない場合の対応策

Power Automateのフローにて、「アダプティブ カードを投稿して応答を待機する」アクションを用いて、Teams上から回答結果を取得したいということがあると思います。

私はアダプティブ カードを作成するために必要なJSON構文の知識が少ないため、アダプティブ カード デザイナーを用いてJSON構文を作成しています。

しかし、アダプティブ カード デザイナーで作成したJSON構文を入力しても、フローでエラーが発生する事象がありました。

今回は発生したエラー内容とその解決策をご紹介します。

本記事の対象者

本記事は、JSONの知識が初心者レベルの方向けの記事となっています。

また、アダプティブ カード デザイナーを利用したことがある方を想定しています。

※ アダプティブ カード デザイナーについては過去の記事もご参照ください。

blog.jbs.co.jp

上記を前提に本記事をご覧ください。

実現したかったこと

Teamsでアダプティブ カードを用いてユーザーにメッセージを送信し、回答結果を取得しようとしていました。

下記画像のイメージです。

アダプティブ カード デザイナーを用いてJSON構文を作成すれば、簡単に実装できる内容と考えていました。

エラー事象と対応策

アダプティブ カード デザイナーでJSON構文を作成

実際にアダプティブ カード デザイナーを用いて、実現したい内容でアダプティブ カードを作成し、JSON構文を作成しました。

作成したJSON構文は以下の通りです。

{
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.4",
    "body": [
        {
            "type": "TextBlock",
            "text": "どちらが食べたいですか",
            "wrap": true
        },
        {
            "type": "Input.ChoiceSet",
            "choices": [
                {
                    "title": "りんご",
                    "value": "りんご"
                },
                {
                    "title": "みかん",
                    "value": "みかん"
                }
            ],
            "placeholder": "選んでください"
        }
    ],
    "actions": [
        {
            "type": "Action.Submit",
            "title": "送信"
        }
    ]
}

作成したJSON構文をアクションに記載して実行

実際に、上記のJSON構文を記載して実行してみました。

※ 本記事では簡略化して「アダプティブ カードを投稿して応答を待機する」アクションの後続にアクションを追加していませんが、実際には回答結果を活用したいアクションを入れてください。

上記の状態でテスト実行すると、以下のようにBadRequestのエラーが発生しました。

エラーの原因

エラーメッセージを確認すると、以下のような一文がありました。

Required property 'id' not found on 'Input.ChoiceSet' 

どうやら、選択肢を形成する「Input.ChoiceSet」にidが不足しているようです。

対応策

そこで、アダプティブ カード デザイナーで「Input.ChoiceSet」にidを追加します。

[ CARD STRUCTURE ]で[ Input.ChoiceSet ]を選択し、[ Id ]に今回は「choice」と入力します。

入力後のJSON構文は下記の通りです。先ほどのJSON構文と比較すると「Input.ChoiceSet」に「"id": "choice"」が追加されていることが分かります。

    {
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.4",
    "body": [
        {
            "type": "TextBlock",
            "text": "どちらが食べたいですか",
            "wrap": true
        },
        {
            "type": "Input.ChoiceSet",
            "choices": [
                {
                    "title": "りんご",
                    "value": "りんご"
                },
                {
                    "title": "みかん",
                    "value": "みかん"
                }
            ],
            "placeholder": "選んでください",
            "id": "choice"
        }
    ],
    "actions": [
        {
            "type": "Action.Submit",
            "title": "送信"
        }
    ]
}

修正した構文でテスト

修正したJSON構文を記載して実行してみました。

すると、今度はエラー無く実行することが出来ました。

送られてきたアダプティブ カードです。

質問に回答した後、設定したIdの「choice」に回答結果である「みかん」が格納されていることと、状態が「成功」になっていることが分かります。このことから、回答結果を格納するためのIdが必要であることが分かりました。

アダプティブ カード デザイナーでの警告

お気づきの方もいるかもしれませんが、実はアダプティブ カード デザイナーでの編集画面で、Idが無いことを警告してくれていました。

上記、画像で赤枠で囲っている部分には、以下の英文が表示されています。

[Validation] All inputs must have a unique Id.

翻訳すると「一意のIdが必要です。」という意味です。この時点で、Idが必要であることを教えてくれていることが分かります。

実際に、Idを入力した後は、上記の英文表示が消えていることが確認できます。

アダプティブ カード デザイナーで青いバナーと英文が表示される場合は、警告文であることも学習することが出来ました。

終わりに

「アダプティブ カードを投稿して応答を待機する」で発生したエラーと対応策をご紹介しました。

同じような現象で悩んでいる方の参考になれば幸いです。

執筆担当者プロフィール
平川 純也

平川 純也(日本ビジネスシステムズ株式会社)

普段はネットワーク案件に携わっています。Power Platformを用いた業務改善にも取り組んでいます。

担当記事一覧