C# 无法说出cortana频道中的自适应卡内容

C# 无法说出cortana频道中的自适应卡内容,c#,botframework,bots,cortana,adaptive-cards,C#,Botframework,Bots,Cortana,Adaptive Cards,我已经将我的机器人与cortana频道集成,可以成功查看自适应卡。我需要的是说出自适应卡的内容。使用时speak属性表明它已被弃用。有没有办法说出我名片上的内容 var contentCard = AdaptiveCard(qnaAnswer.title); Attachment attachment = new Attachment() { ContentType = AdaptiveCard.ContentType, Content = contentCard

我已经将我的机器人与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属性仅在card元素下有效

这就意味着

card.Speak = 'Whatever'
AdaptiveCards非常灵活,您可以添加渲染器应忽略的属性。。。令人困惑的是,如果您输入的属性具有相同的名称,则不会出现任何错误和/或在预期的情况下出现问题

下一个问题是speak属性位于整个卡的上下文中,而不仅仅是textblock之类的元素。如果您想创建一种机制,根据附加到这些元素的提示将卡片元素转换为语音,那么您需要自己编写这个机制

最后,向卡中添加Speak属性只能在支持Speak AdaptiveCards的频道中工作。信不信由你,科尔塔纳不会这么做。您需要从卡中复制Speak属性,然后将其附加到活动的Speak属性,以便Cortana说出结果。退房


今天我将展示一个V3C示例……那么有没有办法将我的自适应卡内容对象转换为单个字符串?我确实尝试了您在解决方案中所做的方式,但我得到的错误是无法将Adaptivecard对象强制转换为jobject。或者,您是建议我将每个自适应卡片元素内容保存到string中,并为我的回复活动分配string to speak属性吗?请访问github。在卡片中,您将看到一个speak属性,它总结了卡片和用户可以说的话。从元素到语音的自动翻译可能很棘手;从言语的角度来看,很可能是不自然的。这听起来可能很像可访问性阅读器。我建议您总结一下卡片输入和调用期望-这样听起来就像自然语言。另外,今天我们会在这里更新文档,谢谢。。期待已久的解决办法