2017-12-03 25 views
0

私はボットにいくつかのグラフ(折れ線グラフなど)を作成しようとしています。私は、オンラインソース(finance.Yahoo.com)から入手可能なデータを持っていますC#Bot Frameworkを使用してチャートを作成するには?

私はこの目的のためにどのライブラリを使用するべきかわかりません
1.どのチャートライブラリですか?
2.私はどの種類のカード(ヒーローカード、アダプティブカード...)を使用しますか?
3.外部サイト(Yahoo)に接続している私の現在の解決策はWeb APIであり、私はC#botフレームワークを使用していますか?

どのように私はこれを達成することができますか?

私はUI.Visualization.Chartライブラリを使用しようとしましたが、解決策を得ることに成功しませんでした。したがって、私はこの分野でいくつかの助けを探しています

+1

あなたは[oxyplot](http://www.oxyplot.org/)のようなライブラリを使用することができます、チャートを作成し、公共のアクセス可能な場所に保存して、ヒーローカードなどに入れます。私は青空関数([ソース](https://github.com/Expecho/IoT-Project/blob/master/src/backend/AzureFunctions/RenderChart.cs))でこれを行いました –

答えて

1

現在、BotFrameworkではインタラクティブな図表はサポートされていません。チャートを生成するために@Peter Bonsの推奨またはオンラインサービスとしてサードパーティ製のライブラリを使用できますが、これを画像ファイルとしてレンダリングして、このファイルをメッセージに添付するには、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; 
    } 
}