文字未包装在英雄卡中

时间:2019-06-06 12:43:29

标签: botframework qnamaker

我正在使用来自MS的模板,该模板使我可以在QnA制造商中使用多匝。问题是英雄卡上的文字不会自动换行。从我看到的代码中,卡名和副标题是根据Qna maker中提示的存在而动态生成的。

到目前为止,我已经看过SO了,可以看到\ n \ n示例,但是在这种情况下不适用。或者如果有的话,有人可以用正确的语法帮助我。似乎没有任何进一步的建议。

public static Activity GetHeroCard(string cardTitle, QnAPrompts[] 
 prompts)
    {
        var chatActivity = Activity.CreateMessageActivity();
        var buttons = new List<CardAction>();

        var sortedPrompts = prompts.OrderBy(r => r.DisplayOrder);
        foreach (var prompt in sortedPrompts)
        {
            buttons.Add(
                new CardAction()
                {
                    Value = prompt.DisplayText,
                    Type =  ActionTypes.ImBack,
                    Title = prompt.DisplayText,

                });
        }

        var plCard = new HeroCard()
        {
            Title = cardTitle,
            Subtitle = string.Empty,
            Buttons = buttons

        };

        var attachment = plCard.ToAttachment();

        chatActivity.Attachments.Add(attachment);

        return (Activity)chatActivity;
    }
}

因此,代码创建了卡并将其附加到返回消息中。任何人都可以建议如何将文本包装在卡上吗?

2 个答案:

答案 0 :(得分:0)

首先,英雄卡只会让您显示两行文字,因此,如果您希望显示更多的行数,那么我建议您使用自适应卡。当前,英雄卡不支持格式化。

public static AdaptiveCard AdaptiveCard(string subtitle)
 {
   AdaptiveCard card = new AdaptiveCard();           
   card.Body.Add(new AdaptiveTextBlock()
  {
   Text = string.IsNullOrEmpty(subtitle) ? string.Empty : subtitle,                         
   Speak =text ,
   Wrap = true, 
  });
return card;
 }

答案 1 :(得分:0)

首先,您应该将返回的QnA结果分配给“文本”字段,而不是“标题”字段。如果这样做,您应该发现没有字符限制。我说“应该”是因为英雄卡可以显示的文本行数是特定于通道的。在撰写本文时,我可以肯定地知道,网络聊天,团队和Facebook的字符数没有限制(您需要测试其他感兴趣的人)。

由于我不知道您要显示英雄卡的渠道,您的里程可能会有所不同。

这里是一个英雄卡的示例,其文本字段取自文档。您可以阅读有关英雄卡here的更多信息。您还可以从Botbuilder-Samples存储库中引用此官方sample

public static HeroCard GetHeroCard()
{
    var heroCard = new HeroCard
    {
        Title = "BotFramework Hero Card",
        Subtitle = "Microsoft Bot Framework",
        Text = "Build and connect intelligent bots to interact with your users naturally wherever they are," +
               " from text/sms to Skype, Slack, Office 365 mail and other popular services.",
        Images = new List<CardImage> { new CardImage("https://sec.ch9.ms/ch9/7ff5/e07cfef0-aa3b-40bb-9baa-7c9ef8ff7ff5/buildreactionbotframework_960.jpg") },
        Buttons = new List<CardAction> { new CardAction(ActionTypes.OpenUrl, "Get Started", value: "https://docs.microsoft.com/bot-framework") },
    };

    return heroCard;
}

希望有帮助!