我通过PromptDialog.choice方法向用户提供了4个选项。在我的Resume方法中,我想将用户转发到一个对话框来处理他们的选择。我无法再访问当前的MessageActivity对象 并想知道我的选择是什么?如果可能的话,我想传递原始的消息。传递一个空的似乎是一个黑客。 PrintGraphicDialog对话框只显示一个图形图像并返回4个选项。使用Context.Call命中PrintGraphicDialog的StartAsync方法并进行context.wait()调用,该调用要求用户键入内容。然后它打印图形。不完全是想要的。
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)
{
}
}
答案 0 :(得分:0)
您可以在调用PromptDialog.Choice
之前将消息存储在变量中,然后在Resume方法中使用它。
答案 1 :(得分:0)
由于我转发控件的对话框实际上只需要原始消息中的一些属性,我只是创建了一个类,将它们存储在那里并在转发之前,执行context.MakeMessage()并使用存储的off属性填充它。似乎应该有更好的方法。