다음을 통해 공유


적응형 카드에서 배열의 데이터 표시

적응형 카드는 Copilot Studio에서 상호작용적이고 매력적인 대화를 만드는 데 사용되는 다재다능한 도구이며, 다양한 항목을 표시하는 데 사용할 수 있습니다. 이 글에서는 단순성을 위해 하드코딩된 예제를 사용합니다. 하지만 SharePoint 목록과 같이 더 동적인 소스에서 데이터를 가져오는 경우도 있을 것입니다 Power Automate.

작업 목록을 사용하여 변수 초기화

이 시나리오에서는 배열에 작업 목록이 있고 에이전트.js에 작업 목록을 표시하려고 합니다.

  1. 노드 추가(+) 를 선택하여 노드를 추가한 후, 변수 관리>변수 값 설정을 선택합니다.

  2. 변수 설정 아래의 상자를 선택한 다음, 새로 만들기를 선택합니다.

  3. 새 변수(예: Var1)를 선택하면 변수 속성 패널이 표시됩니다.

  4. EmployeeTaskList와 같이 의미 있는 이름을 변수에 지정하십시오.

  5. 다음 JSON을 To 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"
            }
        ]
    }
    

JSON 데이터를 테이블로 구문 분석

이 변수 관리 노드는 JSON 문자열을 나중에 Adaptive 카드에서 사용할 수 있는 테이블로 변환하는 데 사용됩니다.

  1. 노드 추가(+)변수 관리>값 구문 분석을 선택합니다.

  2. 값 분석에서 이전 섹션에서 만든 EmployeeTaskList 변수를 선택합니다.

  3. 데이터 형식에서 샘플 데이터에서를 선택합니다.

  4. </> 샘플 JSON에서 스키마 가져오기를 선택한 다음, 동일한 JSON을 복사하여 데이터 유형 설정의 샘플 데이터에서 섹션에 붙여넣습니다. 샘플 데이터는 스키마와 데이터 유형을 자동으로 생성합니다. 확인을 선택합니다.

  5. 다른 이름으로 저장에서 새 변수 만들기를 선택합니다.

  6. 새로운 변수를 선택하고 변수 이름TaskTable로 변경합니다.

Parse Value 노드의 스크린샷입니다.

적응형 카드에 데이터 표시

적응형 카드에서 데이터를 표시하려면 메시지 노드를 사용하세요.

  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
              }
          )
        }
      ]
    }
    
  5. 이제 Topic.TaskTable.employeeName과 같은 식을 사용하여 JSON 레코드 속성을 참조할 수 있습니다.

  6. 적응형 카드에 배열 항목을 표시하려면 항목 속성과 함께 컨테이너 요소를 사용하세요.

항목 속성은 요소 배열을 값으로 받아들입니다. 배열의 각 요소는 '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
                        }
                    )
                  }
                ]
              }