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

时间:2017-12-03 17:01:05

标签: c# charts botframework

我正在尝试在机器人中创建一些图表(折线图等)。我有来自在线资源(finance.Yahoo.com)的数据

我不确定我应该为此目的使用什么库 1.什么图表库?
2.我应该使用什么类型的卡(英雄卡,自适应卡......)? 3.我目前连接到外部站点(Yahoo)的解决方案是web api,我使用的是C#bot框架?

有谁可以分享一个如何实现这个目标的例子?

我曾尝试使用UI.Visualization.Chart库,但我没有成功获得解决方案。因此,我正在寻找这个领域的一些帮助

1 个答案:

答案 0 :(得分:2)

BotFramework目前不支持交互式图表,您可以使用某些第三方库作为@Peter Bons建议或在线服务来生成图表,但您需要尝试将其渲染为图像文件并附加在bot中使用HeroCard / AdaptiveCard将此文件添加到您的邮件中。

由于您的数据位于finance.Yahoo.com,我不确定Yahoo是否支持生成图表图像,否则,您需要从Yahoo获取数据,然后尝试查找在线服务或第三方lib首先绘制图表图像。

渲染图像后,您可以将其作为图像附件发送  例如:

[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;
    }
}