在子对话框上调用 EndDialogAsync 时,不会在父对话框上调用 ResumeDialogAsync

问题描述 投票:0回答:1

我有两个对话框ParentDialogChildDialog,它们都派生于ComponentDialog,父级重写OnBeginDialogAsync,并在其中调用子级:

protected override async Task<DialogTurnResult> OnBeginDialogAsync(DialogContext innerDc, object options, CancellationToken cancellationToken = default) {
   return await innerDc.BeginDialogAsync(nameof(ChildDialog), options, cancellationToken);
}

在孩子身上,我提出一些要求,完成后,我打电话给

innerDc.EndDialogAsync(result,cancellationToken);
。在父级中,我重写了 ResumeDialogAsync:

public override Task<DialogTurnResult> ResumeDialogAsync(DialogContext outerDc, DialogReason reason, object result = null, CancellationToken cancellationToken = default) {
    return base.ResumeDialogAsync(outerDc, reason, result, cancellationToken);
}

文档指出 ResumeDialogAsync 是:

当对话框的实例从当前实例使用 BeginDialogAsync() 启动的另一个对话框返回时调用的方法。如果未实现此方法,则对话框将通过调用 EndDialogAsync() 自动结束。从被调用对话框传递的任何结果都将传递给当前对话框的父级。

我的问题是,为什么这个方法根本没有被调用,我错过了什么吗?

感谢您花时间阅读。我希望我说得足够清楚并感谢任何帮助。

c# .net-core botframework
1个回答
0
投票

我也遇到过同样的问题。请参阅我的堆栈溢出答案此处,了解问题的原因和修复方法。

© www.soinside.com 2019 - 2024. All rights reserved.