无法在Cortana频道中说出自适应卡的内容

时间:2019-05-29 16:18:56

标签: c# botframework bots cortana adaptive-cards

我已经将我的机器人与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;
 }

1 个答案:

答案 0 :(得分:1)

此代码的一些要求。

首先,如果您查看AdaptiveCard的架构,则会看到语音属性仅在card元素下有效。

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

这意味着

card.Speak = 'Whatever'

AdaptiveCards的灵活性在于您可以添加渲染器应忽略的属性...令人困惑,因为如果您以相同的名称放置属性,则不会出现任何错误,并且/或者看起来有些东西不起作用在预期的时候。

下一个问题是,speak属性位于整个卡的上下文中,而不仅仅是文本块之类的元素。如果要创建一种机制,可以根据卡元素上的提示将卡片元素转换为语音,则需要自己编写。

最后,向卡添加Speak属性仅在支持语音AdaptiveCard的通道中起作用。信不信由你,Cortana不会这样做。您将需要从卡中复制语音属性,然后将其附加到活动的语音属性中,以便Cortana说出结果。结帐

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