返回到Task <dialogturnresult>中的对话框

时间:2019-03-26 16:29:14

标签: c# botframework

我在“任务”功能内有特定的对话框。有没有一种方法可以在不退出瀑布步骤的情况下返回任务中的特定对话框。

谢谢

我已经尝试过cs.ActiveDialog.State [“ stepIndex”] =(int)cs.ActiveDialog.State [“ stepIndex”] -1;返回上一个对话框状态,但执行下一个瀑布对话框

1 个答案:

答案 0 :(得分:1)

在这种情况下,最常见的方法是用其自身替换当前对话框,向每个瀑布步骤添加逻辑,以决定是否应执行或跳至下一步。例如,您应该在对话框选项中设置要从中执行的步骤索引,然后检查在执行每个步骤时是否设置了该值。

例如因为这里的瀑布步骤的简化版本可能如下所示;

如果要返回上一步,可以使用;

            return await sc.ReplaceDialogAsync(YourCurrentDialogID, new YourCurrentDialog(stepIndexToGoBackTo));

然后,在每个瀑布步骤中,您可以检查是否已指定要跳回的特定步骤,如果没有指定,则它会顺序执行每个步骤。


        public async Task<DialogTurnResult> PromptUser(WaterfallStepContext sc, CancellationToken cancellationToken)
        {
            var stepToExecute = sc.Options as int?;

            if(!stepToExecute.HasValue || (stepToExecute.HasValue && stepToExecute.Value == sc.Index)
{
    // either we haven't set a specific step to run, so we will execute anyway
    // or we have specified a step to run and the index matches, so we conditionally execute
}

// a step index has been passed into the options, but it doesn't match the current step
// so drop through until we hit the right step.
return await sc.NextAsync();
}

请原谅上面的代码,它可能不完全正确,但应该正确。我正在手机上写这个:)