如何使用c#Bot框架创建图表?

如何使用c#Bot框架创建图表?,c#,charts,botframework,C#,Charts,Botframework,我正在尝试在机器人中创建一些图表(折线图等)。我可以从网上获得这些数据(finance.Yahoo.com) 我不确定为此目的应该使用哪个库 1.什么图表库? 2.我应该使用哪种类型的卡(英雄卡、自适应卡……? 3.我目前的解决方案是连接到外部站点(Yahoo),它是一个web api,我使用的是C#bot框架 有人能举个例子说明我如何做到这一点吗 我曾尝试使用UI.Visualization.Chart library,但未能成功获得解决方案。因此,我正在寻求这方面的帮助BotFramewor

我正在尝试在机器人中创建一些图表(折线图等)。我可以从网上获得这些数据(finance.Yahoo.com)

我不确定为此目的应该使用哪个库
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函数()中完成了此操作