私は4つの選択肢をPromptDialog.choiceメソッドで提示しています。私の再開メソッドでは、ユーザーを選択肢に対処するためのダイアログに転送したいと考えています。私はもはや現在のMessageActivityオブジェクト にアクセスすることができず、私のオプションは何か?可能であれば、元のメッセージを渡したいと思います。空のものを渡すことはハックのようです。ダイアログPrintGraphicDialogはグラフィックイメージを表示し、4つの選択肢に戻ります。 Context.Callを使用すると、PrintGraphicDialogのStartAsyncメソッドがヒットし、ユーザーが何かを入力する必要があるcontext.wait()呼び出しが発生します。次に、グラフィックスを印刷します。まったく必要なものではありません。BotFrameworkのPromptDialogから現在のMessageActivityにアクセスする方法
private void ShowOptions(IDialogContext context)
{
PromptDialog.Choice(context, this.OnOptionSelected, new List<string>() { OptionOne, OptionTwo, OptionThree, OptionFour }, "Please select from the following options:", "Not a valid option", 3);
}
private async Task OnOptionSelected(IDialogContext context, IAwaitable<string> result)
{
try
{
string optionSelected = await result;
switch (optionSelected)
{
case OptionOne:
await context.Forward(new PrintGraphicDialog(), this.ResumeAfterOptionDialog, context.MakeMessage(), CancellationToken.None);
break;
case OptionTwo:
break;
case OptionThree:
break;
case OptionFour:
break;
}
}
catch (TooManyAttemptsException ex)
{
}
}
プライベートIAwaitable _activity;を追加します。 PromptDialogを呼び出す前にそれを割り当てます。しかし、それを新しいダイアログに渡すことを私が待っているときは、常にnullです。 varメッセージは_activityを待つ。メッセージはnullです。新しいダイアログで、それを呼び出す前に。 –
DCrites
IAwaitableという意味ではなく、IMessageActivityを格納してみてください。格納する前に待ってください。 –