Невозможно высказать содержание адаптивной карты в канале Кортана - PullRequest
0 голосов
/ 29 мая 2019

Я интегрировал своего бота в канал cortana и могу успешно просматривать адаптивные карты. Что мне нужно, это высказать содержание адаптивной карты. Свойство spok при использовании показывает, что оно устарело. Есть ли способ высказать содержание моей карты?

var contentCard = AdaptiveCard(qnaAnswer.title);
 Attachment attachment = new Attachment()
   {
     ContentType = AdaptiveCard.ContentType,
     Content = contentCard
   }; 
      reply.Attachments = new List<Attachment> { attachment };
      await turnContext.SendActivityAsync(reply);

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

1 Ответ

1 голос
/ 30 мая 2019

Несколько вещей с этим кодом.

Во-первых, если вы посмотрите на схему для AdaptiveCards, вы увидите, что свойство Speak действительно только для элемента карты.

https://adaptivecards.io/explorer/AdaptiveCard.html

Итак, это подразумевает

card.Speak = 'Whatever'

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

Следующая проблема заключается в том, что свойство spok находится в контексте всей карты, а не просто элемента, подобного текстовому блоку. Если вы хотите создать механизм, который переводит элементы карты в речь на основе подсказок, прикрепленных к этим элементам, вам нужно написать это самостоятельно.

Наконец, добавление свойства Speak к карте будет работать только в каналах, которые поддерживают говорящие AdaptiveCards. Хотите верьте, хотите нет, но Кортана НЕ делает этого. Вам нужно будет скопировать свойство Speak с карты и затем прикрепить его к свойству Speak, чтобы Cortana мог сообщить результат. Проверить

https://docs.microsoft.com/en-us/cortana/skills/adding-speech

...