フォームを開始しているダイアログがあり、ユーザーがフォームを完成した後にヒーローカードを表示したいと思います。私は以下のコードでフォームを開始していますし、フォームの後のメソッドも割り当てています。ボットフレームワークのヒストリカルフォームのヒーローカードで返信するC#
var startFormDialog = Chain.From(() => FormDialog.FromForm(StartForm.BuildForm, FormOptions.PromptInStart));
context.Call<StartForm>(startFormDialog,AfterMenuForm);
//AfterMenuForm method implementation
private async Task AfterMenuForm(IDialogContext context, IAwaitable<StartForm> result)
{
message = (Activity)context.MakeMessage();
Activity replyToConversation = message.CreateReply("Should go to conversation, with a hero card");
replyToConversation.Recipient = message.From;
replyToConversation.Type = "message";
replyToConversation.Attachments = new List<Attachment>();
//List<CardImage> cardImages = new List<CardImage>();
replyToConversation.AttachmentLayout = "carousel";
List<CardAction> cardButtons = new List<CardAction>();
CardAction plButton = new CardAction()
{
Value = "https://en.wikipedia.org/wiki/Pig_Latin",
Type = "openUrl",
Title = "WikiPedia Page"
};
cardButtons.Add(plButton);
HeroCard plCard = new HeroCard()
{
Title = "I'm a hero card",
Subtitle = "Pig Latin Wikipedia Page",
//Images = cardImages,
Buttons = cardButtons
};
Attachment plAttachment = plCard.ToAttachment();
replyToConversation.Attachments.Add(plAttachment);
await context.PostAsync(replyToConversation);
}
問題は、私は活動オブジェクトを必要とする、ためにユーザにヒーローカードの解答を送信できるようにすること、であり、これはAfterMenuForm方法では使用できません。このメソッド内でアクティビティオブジェクトをサーフェスする方法はありますか?
こんにちは@EzequielJadib、私はすでにMakeMessage()メソッドを試してみました、しかし、私は{「『のActivityIDは』 nullにすることはできません。」}:この例外を得ました。コールバックAfterMenuFormメソッドが呼び出されたときに、アクティビティがコンテキスト内に存在しないようです。さらに、context.ActivityプロパティはIDialogContext内に存在しません。これを解決する他の方法はありますか? AfterMenuFormメソッドの実装をオリジナルの投稿に追加しました。またChain.Formのアドバイスにも感謝します。 –
あなたはどのバージョンのBotBuilderナゲットを使用していますか?あなたはCreateReplyを行う必要はありません。 MakeMessageで作成したメッセージを使用してください。受取人に記入する必要はありません –
Ezequielありがとうございます。私はv 3.0を使用しています。 CreateReplyを使わずにMakeMessageから取得したメッセージを使用したときに機能しました。このコメントをあなたの答えに加えてください。私はそれを正しいものとしてマークします。 –