如何使用c#Bot框架创建图表?
我正在尝试在机器人中创建一些图表(折线图等)。我可以从网上获得这些数据(finance.Yahoo.com) 我不确定为此目的应该使用哪个库如何使用c#Bot框架创建图表?,c#,charts,botframework,C#,Charts,Botframework,我正在尝试在机器人中创建一些图表(折线图等)。我可以从网上获得这些数据(finance.Yahoo.com) 我不确定为此目的应该使用哪个库 1.什么图表库? 2.我应该使用哪种类型的卡(英雄卡、自适应卡……? 3.我目前的解决方案是连接到外部站点(Yahoo),它是一个web api,我使用的是C#bot框架 有人能举个例子说明我如何做到这一点吗 我曾尝试使用UI.Visualization.Chart library,但未能成功获得解决方案。因此,我正在寻求这方面的帮助BotFramewor
1.什么图表库?
2.我应该使用哪种类型的卡(英雄卡、自适应卡……?
3.我目前的解决方案是连接到外部站点(Yahoo),它是一个web api,我使用的是C#bot框架 有人能举个例子说明我如何做到这一点吗
我曾尝试使用UI.Visualization.Chart library,但未能成功获得解决方案。因此,我正在寻求这方面的帮助BotFramework目前不支持交互式图表,您可以使用@Peter Bons建议的一些第三方LIB或在线服务来生成图表,但您需要尝试将其呈现为图像文件,并使用bot中的
HeroCard
/AdaptiveCard
将此文件附加到邮件中
由于您的数据位于finance.Yahoo.com,我不确定雅虎是否支持生成图表图像,如果不支持,您将需要从雅虎获取数据,然后尝试寻找在线服务或第三方库来首先绘制图表图像
渲染图像后,可以将其作为图像附件发送
例如:
[Serializable]
public class RootDialog : IDialog<object>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
return Task.CompletedTask;
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
var card = CreateHeroCard();
Attachment attachment = card.ToAttachment();
var message = context.MakeMessage();
message.Attachments.Add(attachment);
await context.PostAsync(message);
context.Wait(MessageReceivedAsync);
}
private HeroCard CreateHeroCard()
{
List<CardImage> cardImages = new List<CardImage>();
cardImages.Add(new CardImage("your chart image url goes here"));
var card = new HeroCard()
{
Title = "Months with Numbers Bar Chart",
Subtitle = "Using a Chart as Image service...",
Text = "Build and connect intelligent bots that have charts rendered as images.",
Images = cardImages
};
return card;
}
}
[可序列化]
公共类RootDialog:IDialog
{
公共任务StartSync(IDialogContext上下文)
{
Wait(MessageReceivedAsync);
返回Task.CompletedTask;
}
专用异步任务消息ReceivedAsync(IDialogContext上下文,IAwaitable结果)
{
var活动=等待作为活动的结果;
var card=CreateHeroCard();
附件=card.ToAttachment();
var message=context.MakeMessage();
message.Attachments.Add(附件);
等待上下文。PostAsync(消息);
Wait(MessageReceivedAsync);
}
私人HeroCard CreateHeroCard()
{
List cardImages=新列表();
添加(新的CardImage(“你的图表图像url在这里”);
var卡=新卡()
{
Title=“带数字的月份条形图”,
Subtitle=“将图表用作图像服务…”,
Text=“构建并连接将图表呈现为图像的智能机器人。”,
图像=心脏图像
};
回程卡;
}
}
您可以使用类似的库,例如创建图表,将其保存到公共可访问的位置,并将其放入英雄卡中。我在azure函数()中完成了此操作