2016-05-03 14 views
4

私はC#Microsoft Bot Frameworkを使ってボットを作っています。私はFacebookのメッセンジャーにアクションボタンを使ってメッセージを送信したいと思います。私は正常にボットを作成し、それを展開し、メッセンジャーを使って通信することができ、ボットの反応の様子を洗練しようとしています。カード情報をMessage.Attachementsに入れて、単一のカードとカルーセルを作成することができましたが、アクションボタンも含めたいと思います。 Messenger Platformのドキュメントでは、ボタンと「generic」テンプレートについてはSend API Referenceに記載されていますが、私にとってはボットコネクタを強制的にMessengerに送信する方法はわかりません。私はSend API jsonをMessage.ChannelDataプロパティに入れてもいいが、運がないといいだろう。 Messengerにボットフレームワークのボタンを表示させることができた人はいますか?Facebookのメッセンジャーのボタンを使ったMicrosoft Bot Frameworkメッセージ

答えて

7

メッセージにボタンを追加するには、添付ファイルに複数の操作を追加できます。各アクションは、コネクターによってボタンにマッピングされます。複数の添付ファイルはFacebookメッセンジャーのカルーセルにマップされます。以下は、3つのボタンをメッセージに追加する例です。バージョン3.9.0のための

  var reply = context.MakeMessage(); 
      reply.Attachments = new List<Attachment>(); 

      var actions = new List<Microsoft.Bot.Connector.Action>(); 
      for (int i = 0; i < 3; i++) 
      { 
       actions.Add(new Microsoft.Bot.Connector.Action 
       { 
        Title = $"Button:{i}", 
        Message = $"Action:{i}" 
       }); 
      } 

      reply.Attachments.Add(new Attachment 
      { 
       Title = "Choose one:", 
       Actions = actions 
      }); 

      await context.PostAsync(reply); 
+2

すごいです!それは完璧に働いた。私の問題は、アクションを持たないMicrosoft.Bot.Connector Nugetライブラリの古いバージョンがあることでした。バージョン1.1.0にアップグレードする必要がありました。ありがとう! – Bill

+1

コンテキストとはどのようなタイプですか?メソッド全体を投稿してください。私は現在、v3からv1にダウングレードして、ボタンが動作しているかどうかを確認しようとしています(v3ではfacebookメッセンジャーのskype noreでは正しく表示されていません)。 – Alin

+0

私はContextがIDialogContextの実装であると思います – dodoconr

1

更新ソリューション:

 var actions = new List<CardAction>(); 
     for (int i = 0; i < 3; i++) 
     { 
      actions.Add(new CardAction 
      { 
       Title = $"Button:{i}", 
       Text = $"Action:{i}" 
      }); 
     } 

     reply.Attachments.Add(
      new HeroCard 
      { 
       Title = "Choose option", 
       Buttons = actions 
      }.ToAttachment() 
     ); 

     await context.PostAsync(reply); 
関連する問題