2016-05-10 12 views
1

FacebookのメッセンジャーでボタンとしてレンダリングされるMicrosoft Bot Connectorアクションが試行されていますが、期待通りにレンダリングされません。実際、メッセンジャーには何も表示されません。 BotFrameworkエミュレータでのテストは.Textプロパティのみを表示しますが、ボタンも表示しません。BotFrameworkアクションがFacebookメッセンジャーとテレグラムのボタン(空)としてレンダリングされない

class myFactory 
{ 

public static IForm<myButton> BuildForm() 
{ 
    return new FormBuilder<myButton>() 
      .Message("Welcome to my test Button!") 
      .OnCompletionAsync(async (context, myButton) => 
      { 
       var reply = context.MakeMessage(); 
       reply.Text = "Test actions"; 
       reply.Attachments = new List<Attachment>(); 

       var actions = new List<Microsoft.Bot.Connector.Action>(); 

       actions.Add(new Microsoft.Bot.Connector.Action() { Title = "button1", Message = "message1", Url = "http://google.com" }); 
       actions.Add(new Microsoft.Bot.Connector.Action() { Title = "button2", Message = "message2", Url = "http://google.com" }); 
       actions.Add(new Microsoft.Bot.Connector.Action() { Title = "button3", Message = "message3", Url = "http://google.com" }); 

       Attachment at = new Attachment(); 
        at.Title = "Choose One:"; 
        at.Actions = actions; 
        at.ContentType = "template"; 
        at.Text = "Text choose"; 
        at.TitleLink = "http://www.google.com"; 
        at.ContentUrl = "http://msdn.microsoft.com"; 

        reply.Attachments.Add(at); 

        await context.PostAsync(reply); 
      }) 
      .Build(); 
    } 
}; 
+0

。私は、ButtonsはWeb Facebookのメッセージだけで動作し、モバイルFacebookのメッセンジャーのアプリケーションでは動作しないことを知りました。電報は私が望むボタンも表示しません。私が考えている解決策は、適切な応答を表示するためにボットが実行されているチャネルを確認することです。 – agentpx

+1

ボタンはすべてのFacebookメッセンジャークライアント、kik、テレグラムにわたって普遍的に機能するはずです。ボタンやカルーセルをサポートしていない古いバージョンのfbメッセンジャーアプリを持っている可能性はありますか?私はボットの中に 'Actions'を使ってボタンを生成し、ボタンをサポートしていないチャンネルのテキストオプションにそれらをダウングレードするためにコネクターに依存しています。 –

+0

@ShahinShayandehはい。あなたは正しいです私はWindowsの携帯電話でそれを実行している言及を忘れていましたが、それは正しくメッセンジャーのUWPデスクトップバージョンとアンドロイドメッセンジャーバージョンを使用して動作します。あなたのコメントを回答として追加してください。私は正しい答えとしてフラグを立てることができます。ありがとう。 – agentpx

答えて

2

私はテレグラムを使っていませんが、Facebookのアクションボタンの場合は、メッセージとURLの両方を入力する必要はありません。 Urlプロパティが指定されている場合、アクションボタンはそのURLにリンクしますが、メッセージが入力されたときにクリックされると、ユーザーが入力したかのようにそのテキストがボットに送信されます。

また、添付ファイル内のContentTypeおよびContentUrlによって問題が発生している可能性があります。 ContentUrlが提供されている場合は、画像またはビデオを指し、ContentTypeは「画像」または「ビデオ」でなければなりません。 "template"を指定する必要はありません。ボットコネクタはそれを行います。

var reply = context.MakeMessage(); 
reply.Text = "Test actions"; 
reply.Attachments = new List<Attachment>(); 

var actions = new List<Microsoft.Bot.Connector.Action>(); 

actions.Add(new Microsoft.Bot.Connector.Action() { Title = "button1", Message = "message1" }); 
actions.Add(new Microsoft.Bot.Connector.Action() { Title = "button2", Url = "http://bing.com" }); 
actions.Add(new Microsoft.Bot.Connector.Action() { Title = "button3", Message = "message3" }); 

Attachment at = new Attachment(); 
at.Title = "Choose One:"; 
at.Actions = actions; 

reply.Attachments.Add(at); 
+0

申し訳ありませんが、urlとcontentTypeは、私が望む出力をどの部分が与えるかを実験したものです。とにかく私はあなたの答えを試し、あなたにフィードバックを与えます。 – agentpx

+0

こんにちは、私は、私が期待しているボタンがウェブのFacebookのメッセージに取り組んでいて、モバイルのFacebookのメッセンジャーで働いていないことを知りました。私が掲示したコードを使用して。私は本当にあなたの助けに感謝しますが、答えとしてそれを受け入れることはできません。私はあなたの答えを投票することができますようにここでコメントを返信してください、ありがとう、 – agentpx

1

ボタンはすべてのFacebookメッセンジャークライアント、kik、テレグラムにわたって普遍的に機能するはずです。私はあなたがボタンとカルーセルのサポートを持っていないFacebookメッセンジャーアプリの古いバージョンを使用していると思います。アクションを使用してボット内のボタンを生成し、ボタンをサポートしていないチャンネルのテキストオプションにコネクタを使用してダウングレードします。 facebookで動作するa bot with attachmentsの例を次に示します。

0

最新バージョンのbotbuilder(v1.2.3)では、デフォルトでは、サポートされているチャットプラットフォーム(例:電文、Facebook)の選択可能なボタンとしてプロンプトが生成されます。

リファレンス:https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Library/FormFlow/FormDialog.cs

関連コード:厳格にテストした後

if (prompt != null) 
{ 
    var msg = context.MakeMessage(); 
    msg.Text = prompt.Prompt; 
    msg.Attachments = prompt.Buttons.GenerateAttachments(); 
    await context.PostAsync(msg); 
} 
return prompt; 
関連する問題