Текст не помещается в карточку героя - PullRequest
0 голосов
/ 06 июня 2019

Я использую шаблон от 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;
    }
}

, поэтому код создает карту и прикрепляет ее к ответному сообщению пользователю.Может ли кто-нибудь посоветовать, как обернуть текст на карточке.

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Во-первых, вы должны назначить возвращенный результат QnA в поле 'text', а не в поле 'title'. Если вы это сделаете, вы должны обнаружить, что нет ограничения на количество символов. Я говорю «должен», потому что количество строк текста, которое может показать карта героя, зависит от конкретного канала. На момент написания этой статьи я точно знал, что в веб-чате, командах и Facebook нет ограничения по количеству символов (вам нужно будет протестировать других, которые вас интересуют).

Поскольку я не знаю, на каком канале вы пытаетесь показать свою карту героя, ваш пробег может отличаться.

Вот пример карты героя с текстовым полем, взятым из документов. Вы можете прочитать больше о картах героев здесь . Вы также можете сослаться на этот официальный образец из репозитория Botbuilder-Samples.

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

Надежда на помощь!

0 голосов
/ 07 июня 2019

Прежде всего карты героев позволяют отображать только две строки текста, поэтому, если вы хотите, чтобы отображалось большее количество строк, я советую вам использовать адаптивные карты.В настоящее время форматирование не поддерживается для карт героев.

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