我正在使用Microsoft Bot Framework开发Bot。我正在使用自适应卡向用户显示航班,但是它们在外观上有很多限制。我试图通过使用我自己的hostconfig.json创建一个自适应卡渲染器,然后将我的自适应卡的HTML附加回聊天窗口,来从bot框架中的一个对话框中渲染自适应卡。但它不起作用:(
public static Attachment CreateFlight(Flight flight)
{
var renderedAdaptiveCard = AdaptiveCardRenderer
.RenderCard(new AdaptiveCard
{
Body = new List<AdaptiveElement>
{
new AdaptiveContainer {Items = CreateFlightAdaptiveElements(flight)}
},
Actions = new List<AdaptiveAction>
{
new AdaptiveShowCardAction
{
Card = new AdaptiveCard
{
Body = new List<AdaptiveElement>
{
},
Actions = new List<AdaptiveAction>
{
new AdaptiveSubmitAction
{
Title = "Select",
Data = flight.Segments.Select(x => $"{x.Airline} {x.FlightNo}")
.Aggregate((i, j) => i + "/" + j),
}
},
BackgroundImage = new Uri($"{DomainUrl}/Images/ac_background.jpg")
},
Title = "Select"
},
},
BackgroundImage = new Uri($"{DomainUrl}/Images/ECEFF1.png")
});
var attachment = new Attachment
{
ContentType = "application/html",
Content = renderedAdaptiveCard.Html
};
return attachment;
}
我在这里尝试一些不可能的事情吗?如何更改我的机器人的默认灰色外观?我的主要渠道是Skype,Slack等,因此我没有计划将其集成到网络聊天中。在这方面请帮助我。
答案 0 :(得分:0)
Adaptive Cards背后的想法是允许每个通道以特定于该通道的方式渲染卡片。卡可以“适应”任何可能支持它的环境。尽管自适应卡提供了很大的灵活性,但该机器人只能做很多事情,因为它最终是负责渲染卡的渠道。
卡作者将其内容描述为一个简单的JSON对象。那 然后可以在主机应用程序内部本地呈现内容, 自动适应主机的外观。
例如,Contoso Bot可以通过Bot编写自适应卡 框架,当交付给Skype时,它的外观和感觉就像是 Skype卡。当相同的有效负载发送到Microsoft Teams时,它将 外观和感觉就像Microsoft Teams。随着越来越多的主机应用程序开始支持 自适应卡,相同的有效载荷将自动在内部点亮 这些应用程序,但仍然感觉完全是该应用程序的本机。
用户之所以胜利,是因为一切都变得熟悉。主机应用程序获胜是因为 它们控制用户体验。卡片作者获胜是因为他们的 内容无需任何其他工作即可获得更广泛的覆盖。
您可能已经知道,RenderedAdaptiveCard类型应在客户端代码中使用。这意味着,例如,如果您想创建自己的频道,它可以为您提供帮助,但并不是真正要在漫游器中使用。您的代码无法正常工作,因为没有HTML附件类型,并且大多数渠道根本不支持HTML。您可以在this question和this GitHub issue中找到更多信息。
希望您可以使用可用的工具(例如图像和链接)来获得所需的外观。