简体   繁体   中英

BotFramework Webchat channel cannot render card

I'm having difficulties creating a card which uses AdaptiveShowCardAction . When I try to create a simple card, it manages to show.

Code:

public override AdaptiveCard CherwellCard(UserProfile userProfile)
{
    try
    {
        foreach (var service in CherwellCategories)
        {
            var serviceCard = new AdaptiveShowCardAction()
            {
                Title = service.Name,
                Card = new AdaptiveCard()
                {
                    Body = new List<AdaptiveElement>()
                {
                    new AdaptiveTextBlock()
                    {
                        Text = TranslateHelper.GetText(userProfile.Locale, "ticket_category"),
                        Weight = AdaptiveTextWeight.Bolder,
                        Size =  AdaptiveTextSize.Medium
                    }
                },
                    Actions = new List<AdaptiveAction>()
                    {

                    }
                }
            };
            foreach (var category in service.Categories)
            {
                var categoryCard = new AdaptiveShowCardAction()
                {
                    Title = category.Name,
                    Card = new AdaptiveCard()
                    {
                        Body = new List<AdaptiveElement>()
                    {
                        new AdaptiveTextBlock()
                        {
                            Text = TranslateHelper.GetText(userProfile.Locale, "ticket_sub_category"),
                            Weight = AdaptiveTextWeight.Bolder,
                            Size =  AdaptiveTextSize.Medium
                        }
                    },
                        Actions = new List<AdaptiveAction>()
                        {
                        }
                    }
                };
                foreach (var subCategory in category.Categories)
                {
                    var subCategoryCard = new AdaptiveShowCardAction()
                    {
                        Title = subCategory.Name,
                        Card = new AdaptiveCard()
                        {
                            Body = new List<AdaptiveElement>()
                        {
                            new AdaptiveTextBlock()
                            {
                                Text = TranslateHelper.GetText(userProfile.Locale, "ticket_selection"),
                                Weight = AdaptiveTextWeight.Bolder,
                                Size =  AdaptiveTextSize.Medium
                            }
                        },
                            Actions = new List<AdaptiveAction>()
                            {
                            }
                        }
                    };
                    var ContinueDataJson = "{ \"Service\" : \"{0}\", \"Category\" : \"{1}\", \"SubCategory\" : \"{2}\"}";
                    ContinueDataJson = ContinueDataJson.Replace("{0}", service.Name).Replace("{1}", category.Name).Replace("{2}", subCategory.Name);

                    var finalCard = new AdaptiveShowCardAction()
                    {
                        Title = TranslateHelper.GetText(userProfile.Locale, "ticket_details"),
                        Card = new AdaptiveCard()
                        {
                            Body = new List<AdaptiveElement>()
                        {
                            new AdaptiveTextBlock()
                            {
                                Text = TranslateHelper.GetText(userProfile.Locale, "ticket_services"),
                                Weight = AdaptiveTextWeight.Bolder,
                                Size =  AdaptiveTextSize.Medium
                            },
                            new AdaptiveTextBlock()
                            {
                                Text = service.Name,
                                Weight = AdaptiveTextWeight.Lighter,
                                Size =  AdaptiveTextSize.Medium
                            },
                            new AdaptiveTextBlock()
                            {
                                Text = TranslateHelper.GetText(userProfile.Locale, "ticket_category"),
                                Weight = AdaptiveTextWeight.Bolder,
                                Size =  AdaptiveTextSize.Medium
                            },
                            new AdaptiveTextBlock()
                            {
                                Text = category.Name,
                                Weight = AdaptiveTextWeight.Lighter,
                                Size =  AdaptiveTextSize.Medium
                            },
                            new AdaptiveTextBlock()
                            {
                                Text = TranslateHelper.GetText(userProfile.Locale, "ticket_sub_category"),
                                Weight = AdaptiveTextWeight.Bolder,
                                Size =  AdaptiveTextSize.Medium
                            },
                            new AdaptiveTextBlock()
                            {
                                Text = subCategory.Name,
                                Weight = AdaptiveTextWeight.Lighter,
                                Size =  AdaptiveTextSize.Medium
                            }
                        },
                            Actions = new List<AdaptiveAction>()
                        {
                            new AdaptiveSubmitAction()
                            {
                                Title =  TranslateHelper.GetText(userProfile.Locale, "ticket_submit"),
                                DataJson = ContinueDataJson
                            }
                        }
                        }
                    };

                    subCategoryCard.Card.Actions.Add(finalCard);

                    categoryCard.Card.Actions.Add(subCategoryCard);
                }
                serviceCard.Card.Actions.Add(categoryCard);
            }
            serviceAction.Add(serviceCard);
        }

        AdaptiveCard card = new AdaptiveCard()
        {
            Body = new List<AdaptiveElement>()
        {
            new AdaptiveTextBlock()
            {
                Text = TranslateHelper.GetText(userProfile.Locale, "ticket_services"),
                Weight = AdaptiveTextWeight.Bolder,
                Size =  AdaptiveTextSize.Medium
            }
        },
            Actions = new List<AdaptiveAction>()
            {
            }
        };
        card.Actions.AddRange(serviceAction);

        return card;
    }
    catch (Exception ex)
    {

        throw;
    }

}

For the CherwellCategories list - it contains 3 levels, Service (8 data) - Category (20+) and SubCategory (118 data). I'm suspecting it's because the card is way too big for it to process.

The card is not shown when I click on the button. It doesn't give any response. Is there any limit or something? As I'm able to create a simple card and show it, continue with the flow of the dialog.

JsonValue:

[
  {
    "name": "Acquire and Develop Talent",
    "categories": [
      {
        "name": "Manage Learning and Development",
        "categories": [
          {
            "name": "Deliver Training"
          },
          {
            "name": "Develop Learning Programmes"
          },
          {
            "name": "Evaluate Training"
          },
          {
            "name": "Manage course cancellation requests"
          },
          {
            "name": "Manage Employee pre-book requests"
          },
          {
            "name": "Register interest for a course"
          },
          {
            "name": "Set-up Learning"
          }
        ]
      },
      {
        "name": "Manage Performance",
        "categories": [
          {
            "name": "Conduct Annual Review"
          },
          {
            "name": "Conduct Mid-Year Review"
          },
          {
            "name": "Create Team Objectives & Individual Performance Plan"
          },
          {
            "name": "Design Performance and Development Processes and Tools"
          },
          {
            "name": "Manage and Assign Competencies"
          }
        ]
      },
      {
        "name": "Manage Recruitment and New Hires",
        "categories": [
          {
            "name": "Create Job Requisition"
          },
          {
            "name": "Develop Recruitment Processes and Tools"
          },
          {
            "name": "Document Employee Data"
          },
          {
            "name": "Edit / Cancel Job Requisition"
          },
          {
            "name": "Manage Job Offer - Grade 33 and below"
          },
          {
            "name": "Manage Job Offer - Grade 34 and above"
          },
          {
            "name": "Manage Offer Withdrawal"
          },
          {
            "name": "Manage Referral Process"
          },
          {
            "name": "Post Job / Position"
          },
          {
            "name": "Prepare for New Hire"
          },
          {
            "name": "Prepare Rejection"
          },
          {
            "name": "Screen Candidates"
          },
          {
            "name": "Select Candidate"
          },
          {
            "name": "Source Candidate"
          }
        ]
      },
      {
        "name": "Manage Talent",
        "categories": [
          {
            "name": "Conduct Talent Review & Identify Talent"
          },
          {
            "name": "Develop & Maintain Succession Plan"
          },
          {
            "name": "Develop Talent Processes & Tools"
          }
        ]
      }
    ]
  },
  {
    "name": "Ad-hoc Request",
    "categories": [
      {
        "name": "Admin request",
        "categories": [
          {
            "name": "Perform specified Admin action"
          }
        ]
      },
      {
        "name": "Reporting",
        "categories": [
          {
            "name": "Create Report"
          },
          {
            "name": "Run Report"
          }
        ]
      }
    ]
  },
  {
    "name": "HR Systems",
    "categories": [
      {
        "name": "Cherwell",
        "categories": [
          {
            "name": "Defect"
          },
          {
            "name": "New Requirement"
          },
          {
            "name": "Question"
          }
        ]
      },
      {
        "name": "IVR",
        "categories": [
          {
            "name": "Defect"
          },
          {
            "name": "New Requirement"
          },
          {
            "name": "Question"
          }
        ]
      },
      {
        "name": "Kenexa",
        "categories": [
          {
            "name": "Create new users"
          },
          {
            "name": "Jobs Specifications Updates"
          },
          {
            "name": "Manage assessments"
          },
          {
            "name": "Manage Reports"
          },
          {
            "name": "Requisitions Incidents"
          }
        ]
      },
      {
        "name": "Opentext",
        "categories": [
          {
            "name": "Defect"
          },
          {
            "name": "New Requirement"
          },
          {
            "name": "Question"
          }
        ]
      },
      {
        "name": "SharePoint",
        "categories": [
          {
            "name": "Access"
          },
          {
            "name": "Defect"
          }
        ]
      },
      {
        "name": "Success Factors",
        "categories": [
          {
            "name": "Defect"
          },
          {
            "name": "New Requirement"
          },
          {
            "name": "Question"
          }
        ]
      },
      {
        "name": "System integration",
        "categories": [
          {
            "name": "Defect"
          },
          {
            "name": "New Requirement"
          },
          {
            "name": "Question"
          }
        ]
      },
      {
        "name": "Talent Portal",
        "categories": [
          {
            "name": "Log in issues"
          },
          {
            "name": "Manage Reports"
          },
          {
            "name": "Manage Talent Xchange Communities"
          }
        ]
      }
    ]
  },
  {
    "name": "Manage Employee Administration",
    "categories": [
      {
        "name": "Manage Absence and Health",
        "categories": [
          {
            "name": "Administer Leave of Absence"
          },
          {
            "name": "Administer Occupational Health"
          },
          {
            "name": "Manage Return to Work"
          },
          {
            "name": "Record and Manage Long Term Sickness Absence"
          },
          {
            "name": "Record and Manage Short Term Sickness Absence"
          }
        ]
      },
      {
        "name": "Manage Employee Changes",
        "categories": [
          {
            "name": "Administer Mass Data Changes"
          },
          {
            "name": "Change Employee Personal Data"
          },
          {
            "name": "Change Employee Work Data"
          },
          {
            "name": "Manage Personnel Files"
          },
          {
            "name": "Manage Promotion, Demotion & Lateral Moves"
          }
        ]
      },
      {
        "name": "Manage Exit",
        "categories": [
          {
            "name": "Conduct Exit Interviews & Communications"
          },
          {
            "name": "Manage Involuntary Exit"
          },
          {
            "name": "Manage Redundancy"
          },
          {
            "name": "Manage Voluntary Exit"
          }
        ]
      },
      {
        "name": "Manage Global Mobility",
        "categories": [
          {
            "name": "End or Extend Assignment"
          },
          {
            "name": "Initiate Assignment"
          },
          {
            "name": "Initiate Assignment - What If"
          },
          {
            "name": "Initiate Assignment Non-Aurora"
          },
          {
            "name": "Manage APRO Data Errors"
          },
          {
            "name": "Manage APRO Testing"
          },
          {
            "name": "Manage APRO Updates and Uploads"
          },
          {
            "name": "Manage APRO User Accounts"
          },
          {
            "name": "Manage Cost of Living Review"
          },
          {
            "name": "Manage Home Leave Review"
          },
          {
            "name": "Manage Immigration"
          },
          {
            "name": "Manage Processes on Assignment"
          },
          {
            "name": "Manage Relocation"
          }
        ]
      },
      {
        "name": "Manage Organisation & Positions",
        "categories": [
          {
            "name": "Close / Freeze position"
          },
          {
            "name": "Create / Maintain Organisation Design & Authorities"
          },
          {
            "name": "Create Position"
          },
          {
            "name": "Modify Position"
          }
        ]
      },
      {
        "name": "Manage Payroll",
        "categories": [
          {
            "name": "Collect Payroll Data"
          },
          {
            "name": "Manage Exception / Escalation Payment Process"
          },
          {
            "name": "Manage Payroll Reporting"
          },
          {
            "name": "Manage Third Party Payroll"
          },
          {
            "name": "Payroll and Taxation Set Up and Ongoing Administration - International Assignment Payroll"
          },
          {
            "name": "Payroll and Taxation Set up and Ongoing Administration - Shadow"
          },
          {
            "name": "Payroll Processing"
          }
        ]
      }
    ]
  },
  {
    "name": "Manage Organisational Development",
    "categories": [
      {
        "name": "Manage Employee & Labour Relations",
        "categories": [
          {
            "name": "Manage Appeals"
          },
          {
            "name": "Manage Conduct Cases"
          },
          {
            "name": "Manage Grievances"
          },
          {
            "name": "Manage Unions / Work Councils"
          }
        ]
      },
      {
        "name": "Manage Organisational Strategy",
        "categories": [
          {
            "name": "Develop Engagement Surveys"
          },
          {
            "name": "Manage Diversity"
          }
        ]
      }
    ]
  },
  {
    "name": "Manage People Strategy & Analytics",
    "categories": [
      {
        "name": "Manage Analytics and Insight",
        "categories": [
          {
            "name": "Manage Reporting"
          }
        ]
      },
      {
        "name": "Plan & Manage HR and Manage Strategic HR",
        "categories": [
          {
            "name": "Manage Reporting"
          }
        ]
      }
    ]
  },
  {
    "name": "Manage Reward and Benefits",
    "categories": [
      {
        "name": "Manage Benefits",
        "categories": [
          {
            "name": "Manage Benefit Enrolment and Amendments"
          },
          {
            "name": "Manage Pensions Administration"
          },
          {
            "name": "Process Benefit Costs"
          }
        ]
      },
      {
        "name": "Manage Compensation, Incentives & Recognition",
        "categories": [
          {
            "name": "Analyse and Evaluate Jobs / Roles"
          },
          {
            "name": "Design Reward Plans"
          },
          {
            "name": "External Reward Benchmarking"
          },
          {
            "name": "Manage Bonus Payments"
          },
          {
            "name": "Manage Compensation Review"
          },
          {
            "name": "Manage Off-Cycle Reward Changes"
          },
          {
            "name": "Manage One-off payments & Allowances"
          },
          {
            "name": "Manage Reward Communications"
          },
          {
            "name": "Manage Share Plans"
          }
        ]
      }
    ]
  }
] 

I remove 3 out of the 7 service (along with the subsequent category and subcategory belonging to the 3 service removed), and it works also. If i remove only 2, then it cannot render anymore.

I do a test using the same data as the json value that you provided, I can reproduce same issue in web chat. And I checked the size of the activity that contains the generated adaptive card as attachment, it is about 430kb .

As you mentioned, if I remove some items (services) from service list, the card can be rendered and work as expected. It seems that some limitations of activity or adaptive card cause this issue, currently we can not find any documentation explains about similar issue, if possible, you can create an issue to report it.

Besides, your show many of services, categories and sub_categories for user selecting in one adaptive card, as a workaround, you can try to separate them in many adaptive cards, and then you can dynamically display child adaptive card(s) based on user's selections and post back value that you collect in previous adaptive card.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM