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