共用方式為


顯示調適型卡片中陣列的資料

調適型卡片是一種多功能工具,用於在 Copilot Studio 中建立互動式且引人入勝的對話,並可用於顯示一系列項目。 在本文中,為了簡單起見,我們在新主題中建立情境並使用硬編碼範例。 但是,您可能會使用 Power Automate 從更動態的來源 (例如 SharePoint 清單) 取得資料。

初始化具有工作清單的變數

在這種情況下,您有一個陣列中的任務清單,並且您希望您的代理程式顯示這些任務。

  1. 在 Copilot Studio 中,建立一個主題並將其命名為「顯示任務」。

  2. 觸發節點上,使用「我的任務」和「顯示任務」作為觸發字詞。

  3. 選擇觸發程序節點下方的新增節點圖示 ,選擇變數管理,然後選擇設定變數值

  4. 選取設定變數下的方塊,然後選擇建立

  5. 選擇新變數 (例如 Var1) 以顯示變數屬性面板。

  6. 將變數重新命名為有意義的名稱,例如 EmployeeTaskList

  7. 將以下 JSON 文字貼到目標值欄位中:

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

將 JSON 文字解析為資料表

若要將 JSON 字串轉換為稍後可在調適型卡中使用的表,您必須對其進行解析。

  1. 選擇設定變數值節點下方的新增節點圖示 ,選擇變數管理,然後選擇解析值。 此節點用於解析來自前一個節點的變數。

  2. 對於解析值,在本例中,選擇上一個節點中的變數 - EmployeeTaskList

  3. 對於資料類型

    1. 選擇從範例資料,然後選擇從範例 JSON 取得結構描述

    2. 在開啟的編輯器中,貼上相同的 JSON 字串,然後選擇確認。 範例資料自動產生結構描述和資料類型。

  4. 對於另存新檔,選擇建立新變數

  5. 選擇新變數,並將其重新命名為 TaskTable

    「解析值」節點的螢幕擷取畫面。

顯示適應型卡片中的資料

若要在調適型卡片中顯示資料,請使用訊息節點

  1. 選擇新增,然後從下拉式清單中選擇調適型卡

  2. 選擇媒體區段以顯示調適型卡片屬性面板。

  3. 在右側的調適型卡片屬性面板中,選擇</>編輯 JSON 下拉式清單,並將其變更為公式

  4. 貼上下方程式碼。

    {
      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
              }
          )
        }
      ]
    }
    

    請注意公式如何使用像 Topic.TaskTable.employeeName 這樣的運算式來參考記錄屬性。 還要注意,它使用具有 items 屬性的 Container 元素在調適型卡片上顯示陣列項。 items 屬性接受一個元素陣列作為其值。 陣列中的每個元素都使用 ForAll 函數顯示在調適型卡片上。 對 Topic.TaskTable.employeeTasks 陣列的參考允許存取其每個屬性。

從 YAML 程式碼建立相同的範例情境

如果您希望快速建立此範例主題,您可以建立空白主題,開啟程式碼編輯器,並用以下程式碼取代預設的 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
                        }
                    )
                  }
                ]
              }