【问题标题】:Text not wrapping in hero card英雄卡中没有换行的文字
【发布时间】:2019-06-08 04:34:24
【问题描述】:

我正在使用 MS 的模板,它允许我在 QnA maker 中使用多回合。问题是英雄卡上的文字不会换行。从我可以看到的代码中,卡片标题和副标题是根据 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;
    }
}

因此代码会创建卡片并将其附加到返回给用户的消息中。任何人都可以建议如何包装卡片上的文字。

【问题讨论】:

    标签: botframework qnamaker


    【解决方案1】:

    首先,您应该将返回的 QnA 结果分配给“文本”字段,而不是“标题”字段。如果这样做,您应该发现没有没有字符限制。我说“应该”是因为英雄卡可以显示的文本行数是特定于渠道的。在撰写本文时,我确信网络聊天、Teams 和 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;
    }
    

    希望有帮助!

    【讨论】:

      【解决方案2】:

      首先英雄卡只会让你显示两行文字,所以如果你想显示更多的行数,那么我建议你使用自适应卡。目前英雄卡不支持格式化。

      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;
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        • 2018-07-28
        相关资源
        最近更新 更多