我正在使用来自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;
}
}
因此,代码创建了卡并将其附加到返回消息中。任何人都可以建议如何将文本包装在卡上吗?
答案 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;
}
希望有帮助!