简体   繁体   English

BotFramework 网络聊天频道无法渲染卡片

[英]BotFramework Webchat channel cannot render card

I'm having difficulties creating a card which uses AdaptiveShowCardAction .我在创建使用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).对于CherwellCategories列表 - 它包含 3 个级别,服务(8 个数据)-类别(20+)和子类别(118 个数据)。 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: JSON值:

[
  {
    "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.我删除了 7 个服务中的 3 个(以及属于删除的 3 个服务的后续类别和子类别),它也可以工作。 If i remove only 2, then it cannot render anymore.如果我只删除 2,那么它就不能再渲染了。

I do a test using the same data as the json value that you provided, I can reproduce same issue in web chat.我使用与您提供的 json 值相同的数据进行了测试,我可以在网络聊天中重现相同的问题。 And I checked the size of the activity that contains the generated adaptive card as attachment, it is about 430kb .我检查了包含生成的自适应卡作为附件的活动的大小,大约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.此外,您在一张自适应卡片中显示了许多服务、类别和子类别供用户选择,作为一种解决方法,您可以尝试将它们分开在许多自适应卡片中,然后您可以根据用户的选择动态显示子自适应卡片并回发您在以前的自适应卡中收集的值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 botframework 网络聊天中开始对话 - Start dialogue in botframework webchat 从Botframework向Azure测试WebChat发送消息 - Sending Message from Botframework to Azure Test WebChat 使用 Directline 通道通过 WebChat 使用 MS Botframework V4 (c#) 时,用户名在 stepContext.Context.Activity.From.Name 中不可用 - User Name not available in stepContext.Context.Activity.From.Name when using MS Botframework V4 (c#) over WebChat using Directline channel 我们可以在Microsoft BotFramework Webchat中发布自定义更改吗 - Can we publish the customised changes in Microsoft BotFramework Webchat 如何在WebChat频道中添加多行答案 - How to add multiplelines answer in WebChat channel 团队通道1:1上的botframework集成了身份验证AAD - botframework on teams channel 1:1 Authentication AAD integrated Carousel Card在Facebook Messenger的BotFramework中无法正常运行 - Carousel Card is not working well in BotFramework for Facebook Messenger BotFramework V4:如何从机器人发送事件并在 React WebChat 中捕获它? - BotFramework V4: how to send an event from the bot and catch it in react WebChat? 带有 v4 网络聊天频道的 Bot Framework 问候语 - Bot Framework Greeting message with v4 Webchat Channel Botframework v4:无法渲染卡片 - Botframework v4: Can't render cards
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM