Dela via


Visa data från matriser i adaptiva kort

Adaptiva kort är ett mångsidigt verktyg som används för att skapa interaktiva och engagerande konversationer i Copilot Studio, och kan användas för att visa en mängd olika objekt. I den här artikeln använder vi för enkelhetens skull ett hårdkodat exempel. Men du skulle förmodligen få data från en mer dynamisk källa, till exempel en SharePoint lista, med hjälp av Power Automate.

Initiera en variabel med uppgiftslistan

I det här scenariot har du en lista över uppgifter i en matris och du vill visa listan över aktiviteter i handläggare.

  1. VäljLägg till nod (+) för att lägga till en nod och sedan VäljVariabelhantering > Ange ett variabelvärde.

  2. Markera rutan under Ange variabel och välj sedan Skapa ny.

  3. Välj den nya variabeln (till exempel) Var1 för att visa egenskapspanelen för variabeln.

  4. Ge variabeln ett beskrivande namn, till exempel EmployeeTaskList.

  5. Klistra in följande JSON i fältet Till-värde :

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

Analysera JSON-data till en tabell

Den här variabelhanteringsnoden används för att konvertera JSON-strängen till en tabell som kan användas senare i det adaptiva kortet.

  1. VäljLägg till nod (+) och Parsa värde för> variabelhantering.

  2. Under Parsa värde Välj du den variabel som EmployeeTaskList du skapade i föregående avsnitt.

  3. Under Datatyp, välj Från provdata.

  4. Välj </> Hämta schema från JSON-exempel och kopiera och klistra sedan in samma JSON i avsnittet Från exempeldata i inställningarna för datatyp . Exempeldata genererar automatiskt schemat och datatypen. Välj Bekräfta.

  5. Under Spara som VäljSkapa en ny variabel.

  6. Välj den nya variabeln och ändra Variabelnamn till TaskTable.

Skärmbild av noden Parsa Värde.

Visa data på ett adaptivt kort

Om du vill visa data i ett adaptivt kort använder du en meddelandenod.

  1. Välj + Lägg till och välj Adaptivt kort i listrutan.

  2. Välj avsnittet Media om du vill visa panelen Egenskaper för adaptivt kort .

  3. I panelen Egenskaper för adaptiva kort på höger sida väljer du listrutan <> Redigera JSON och ändrar den till Formel

  4. Klistra in följande kod.

    {
      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. Nu kan vi hänvisa till JSON-postegenskaperna på ett liknande sätt Topic.TaskTable.employeeName.

  6. För att visa matrisobjekt i ett adaptivt kort, använd Behållare elementet med objektegenskapen.

Egenskapen objekt accepterar en array av element som dess värde. Varje element i matris visas i det adaptiva kortet med 'ForAll' funktionen. Referera till Topic.TaskTable.employeeTasks matrisen eftersom den ger åtkomst till alla dess egenskaper.

Om du vill skapa ämne utan att följa dessa instruktioner kan du välja Öppna kodredigeraren högst upp till höger kommandofältet och klistra in följande YAML-kod i kodredigeringsvyn.

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