如何从Botframework中的迅速选择中访问当前的messageactitive



我正在通过提示方法向用户提供4个选择。在我的简历方法中,我想将用户转发到对话框中以处理他们的选择。我不再可以访问当前的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)
    {
    }
}

您可以在调用PromptDialog.Choice之前先将消息存储在变量中,然后在简历方法中使用它。

由于对话框我正在转发控件,只需要从原始消息中的一些属性,我刚刚创建了一个类,将它们存储在那里和转发之前,doc context.makemessage()并用存储的属性填充了。似乎应该有更好的方法。

最新更新