アダプティブ カードの配列からのデータを表示する

アダプティブ カードは、Copilot Studio で対話型で魅力的な会話を作成するために使用できる多目的ツールです。 このドキュメントでは、Copilot Studio のアダプティブ カードで配列項目を表示する方法を学習します。 わかりやすくするためにハードコードされた例を使用しますが、実際のシナリオでは、Power Automate を使用して、SharePoint リストなどのより動的なソースからデータを取得することになります。

配列内にタスクのリストがあり、ボット内のタスクのリストを表示したいとします。

Finaloutput

タスク リストを使用して変数を初期化する

  1. ノードの追加 (+) を選択してノードを追加し、変数管理 ->変数値の設定を選択します。

  2. 変数の設定の下のボックスを選択し、新規作成を選択します。

  3. 新しい変数 (例: Var1) を選択して、変数プロパティ パネルを表示します。

  4. 変数に、EmployeeTaskList など意味のある名前を付けます。

  5. 次の JSON を 設定する値 に貼り付けます。

    {
        "employeeName": "Alice",
        "employeeID": "E12345",
        "employeeDepartment": "HR",
        "employeeTasks": [
            {
                "taskID": "T001",
                "taskDescription": "Review employee benefits",
                "dueDate": "2023-10-15"
            },
            {
                "taskID": "T002",
                "taskDescription": "Conduct new hire orientation",
                "dueDate": "2023-09-30"
            },
            {
                "taskID": "T003",
                "taskDescription": "Update HR policies",
                "dueDate": "2023-11-05"
            }
        ]
    }
    

JSON データをテーブルに貼り付ける

  1. ノードの追加 (+)変数管理 ->値の解析を選択します。 これは、JSON 文字列を後でアダプティブ カードで使用できるテーブルに変換するために使用されます。
  2. 「解析値」の下で、上記で作成した変数を選択します。 例: EmployeeTaskList
  3. データの種類サンプル データからを選択します。
  4. </> サンプル JSON からスキーマを取得する を選択し、JSON をコピーして データの種類 設定の サンプルデータから セクションに貼り付けます。 サンプル データはスキーマとデータ型を自動的に生成します。 確認を選択します。
  5. 名前を付けて保存の下で、新しい変数を作成するを選択します。 新しい変数を選択し、変数名TaskTable に変更します。

タスク テーブル

アダプティブ カード内のデータを表示する

  1. アダプティブ カードにデータを表示するには、メッセージの送信 ノードを追加します。

  2. + 追加を選択し、ドロップダウンから アダプティブカード を選択します。

  3. メディア セクションを選択して、アダプティブカードのプロパティ パネルを表示します。

  4. 右側にある アダプティブカードのプロパティ パネルで、< /> JSON を編集 ドロップダウンから選択し、に変更します。

  5. 次のコードを貼り付けます。

    {
      type: "AdaptiveCard",
      version: "1.5",
      body: [
        {
          type: "TextBlock",
          text: "Employee Information",
          weight: "bolder",
          size: "large"
        },
        {
          type: "TextBlock",
          text: "Employee Name: " & Topic.TaskTable.employeeName,
          separator: true
        },
        {
          type: "TextBlock",
          text: "Employee ID: " & Topic.TaskTable.employeeID,
          separator: true
        },
        {
          type: "TextBlock",
          text: "Department: " & Topic.TaskTable.employeeDepartment,
          separator: true
        },
        {
          type: "TextBlock",
          text: "Tasks",
          weight: "bolder",
          size: "medium",
          separator: true
        },
        {
          type: "Container",
          items: 
            ForAll(Topic.TaskTable.employeeTasks,
              {
                type: "TextBlock",
                text: "- Task ID: " & taskID & ",  Description: " & taskDescription & ", Due Date: " & dueDate ,
                wrap: true
              }
          )
        }
      ]
    }
    
    1. これで、Topic.TaskTable.employeeName のような式を使用して JSON レコードのプロパティを参照できます。

    2. アダプティブ カードに配列項目を表示するには、コンテナー要素を項目プロパティとともに使用します。

      項目プロパティは、要素の配列を値として受け入れます。 配列内の各要素は 'ForAll' 関数を使用してアダプティブ カードに表示されます。 各プロパティにアクセスできるため、Topic.TaskTable.employeeTasks 配列を参照してください。

    これらの手順に従わずにトピックを作成する場合、右上のコマンド バーから [コード エディターを開く] を選択し、コード エディター ビューに次の YAML コードを貼り付けます。

    kind: AdaptiveDialog
    beginDialog:
      kind: OnRecognizedIntent
      id: main
      intent:
        displayName: Untitled
        triggerQueries:
          - array
    
      actions:
        - kind: SetVariable
          id: setVariable_uFs69M
          variable: Topic.EmployeeTaskList
          value: "{     \"employeeName\": \"Alice\",     \"employeeID\": \"E12345\",     \"employeeDepartment\": \"HR\",     \"employeeTasks\": [         {             \"taskID\": \"T001\",             \"taskDescription\": \"Review employee benefits\",             \"dueDate\": \"2023-10-15\"         },         {             \"taskID\": \"T002\",             \"taskDescription\": \"Conduct new hire orientation\",             \"dueDate\": \"2023-09-30\"         },         {             \"taskID\": \"T003\",             \"taskDescription\": \"Update HR policies\",             \"dueDate\": \"2023-11-05\"         }     ] }"
    
        - kind: ParseValue
          id: 58zKdp
          variable: Topic.TaskTable
          valueType:
            kind: Record
            properties:
              employeeDepartment: String
              employeeID: String
              employeeName: String
              employeeTasks:
                type:
                  kind: Table
                  properties:
                    dueDate: String
                    taskDescription: String
                    taskID: String
    
          value: =Topic.EmployeeTaskList
    
        - kind: SendActivity
          id: sendActivity_oNXY1r
          activity:
            attachments:
              - kind: AdaptiveCardTemplate
                cardContent: |-
                  ={
                    type: "AdaptiveCard",
                    version: "1.5",
                    body: [
                      {
                        type: "TextBlock",
                        text: "Employee Information",
                        weight: "bolder",
                        size: "large"
                      },
                      {
                        type: "TextBlock",
                        text: "Employee Name: " & Topic.TaskTable.employeeName,
                        separator: true
                      },
                      {
                        type: "TextBlock",
                        text: "Employee ID: " & Topic.TaskTable.employeeID,
                        separator: true
                      },
                      {
                        type: "TextBlock",
                        text: "Department: " & Topic.TaskTable.employeeDepartment,
                        separator: true
                      },
                      {
                        type: "TextBlock",
                        text: "Tasks",
                        weight: "bolder",
                        size: "medium",
                        separator: true
                      },
                      {
                        type: "Container",
                        items: 
                          ForAll(Topic.TaskTable.employeeTasks,
                            {
                              type: "TextBlock",
                              text: "- Task ID: " & taskID & ",  Description: " & taskDescription & ", Due Date: " & dueDate ,
                              wrap: true
                            }
                        )
                      }
                    ]
                  }