調適型卡片是一種多功能工具,用於在 Copilot Studio 中建立互動式且引人入勝的對話,並可用於顯示一系列項目。 在本文中,為了簡單起見,我們在新主題中建立情境並使用硬編碼範例。 但是,您可能會使用 Power Automate 從更動態的來源 (例如 SharePoint 清單) 取得資料。
初始化具有工作清單的變數
在這種情況下,您有一個陣列中的任務清單,並且您希望您的代理程式顯示這些任務。
在 Copilot Studio 中,建立一個主題並將其命名為「顯示任務」。
在觸發節點上,使用「我的任務」和「顯示任務」作為觸發字詞。
選擇觸發程序節點下方的新增節點圖示
,選擇變數管理,然後選擇設定變數值。
選取設定變數下的方塊,然後選擇建立。
選擇新變數 (例如
Var1
) 以顯示變數屬性面板。將變數重新命名為有意義的名稱,例如
EmployeeTaskList
。將以下 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 字串轉換為稍後可在調適型卡中使用的表,您必須對其進行解析。
選擇設定變數值節點下方的新增節點圖示
,選擇變數管理,然後選擇解析值。 此節點用於解析來自前一個節點的變數。
對於解析值,在本例中,選擇上一個節點中的變數 - EmployeeTaskList。
對於資料類型:
選擇從範例資料,然後選擇從範例 JSON 取得結構描述。
在開啟的編輯器中,貼上相同的 JSON 字串,然後選擇確認。 範例資料自動產生結構描述和資料類型。
對於另存新檔,選擇建立新變數。
選擇新變數,並將其重新命名為
TaskTable
。
顯示適應型卡片中的資料
若要在調適型卡片中顯示資料,請使用訊息節點。
選擇新增,然後從下拉式清單中選擇調適型卡。
選擇媒體區段以顯示調適型卡片屬性面板。
在右側的調適型卡片屬性面板中,選擇</>編輯 JSON 下拉式清單,並將其變更為公式。
貼上下方程式碼。
{ 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
}
)
}
]
}