cortana 频道无法说出自适应卡片内容

Unable to speak out the adaptive card content in cortana channel

我已经将我的机器人与 cortana 通道集成,并且可以成功查看自适应卡片。我需要的是把自适应卡的内容说出来。使用时的 speak 属性 表明它已被弃用。有没有办法说出我的卡片内容?

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

这段代码的一些事情。

首先,如果您查看 AdaptiveCards 的架构,您会发现 speak 属性 仅在卡片元素下有效。

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

所以这意味着

card.Speak = 'Whatever'

AdaptiveCards 是灵活的,因为您可以添加应该被渲染器忽略的属性...令人困惑,因为如果您输入具有相同名称的属性,您将不会得到任何错误 and/or 它看起来有些东西没有按预期工作。

下一个问题是说话 属性 在整个卡片的上下文中,而不仅仅是像文本块这样的元素。如果您想创建一种机制,根据附加到这些元素的提示将卡片元素转换为语音,您需要自己编写。

最后,向卡片添加 Speak 属性 仅适用于支持 Speak AdaptiveCards 的频道。信不信由你,Cortana 不会这样做。您需要从卡片上复制 Speak 属性,然后将其附加到 activity 的 speak 属性,以便 Cortana 说出结果。查看

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