2016-08-14 6 views
2

私は別のダイアログから呼び出されるサブダイアログを作成しています。最初のメッセージとして、イメージと2つのボタンを含むメッセージを投稿する必要があります。MSボットフレームワークのIDialog.StartAsync()内からリッチコンテンツを投稿する方法

public async Task StartAsync(IDialogContext context) 
    { 
     //??? convert context to Activity? 
     //then it is trivial to add buttons, images or a HeroCard 
     await context.PostAsync(activity); 

     context.Done<TestDialog_Start>(this); 
    } 

ただし、context.PostAsync()は文字列またはIMessageActivityオブジェクトのいずれかをとります。これは問題です。ダイアログの最初のメソッドはパラメータとしてIMessageActivityオブジェクトを受け取らないためです(次のメソッドとそれ以降のメソッドが行います)。

したがって、私はactivity.CreateReply()のようなものを使用できません。また、From、Recipient、Conversation、ServiceUrlなどのデータがないため、新しいActivityオブジェクトを作成できません。

ここからアクティビティオブジェクトを取得する方法や、IDialogの最初のメソッドでリッチコンテキストを投稿する方法があります。

答えて

3

OK、それはそれは、Microsoftのドキュメントに記載されていないことを奇妙だが、あなたがIDialogContextから完全に動作IMessageActivityオブジェクトを作成することができそうです。

IMessageActivity activity = context.MakeMessage(); 
//TODO add text, rich content here 
context.PostAsync(activity); 

をIMessageActivityがfully-と同じではありませんが、機能的なアクティビティであっても、正常に機能し、添付ファイルを使用できます。

誤ってクラス定義を参照して見つけました。その前に、いくつかのパラメータからActivityオブジェクトを作成する独自のカスタム関数を作成するのに数時間を費やしました。

+1

ありがとうございました! –

関連する問題