在 bot 框架中调用 CancelAllDialogsAsync 时如何传递结果?

How to pass a result when calling CancelAllDialogsAsync in bot framework?

我们使用机器人框架已经有一段时间了,对它非常满意。我们使用 stepContext.Parent.CancelAllDialogsAsync() 方法。这工作正常,但我们想在机器人代码中传递结果或触发某种动作。我们想传递一个值。

我注意到可选的 eventNameeventValue 参数,但我找不到任何方法来使用它们。我找到了该方法的文档,但根本没有解释 eventNameeventValuehttps://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.builder.dialogs.dialogcontext.cancelalldialogsasync?view=botbuilder-dotnet-stable.

我认为它会触发 DialogBot 的 OnEventActivityAsync 方法,但它不会。

我们的用例如下:在对话的某个时刻,我们的机器人会向用户提问。当用户没有多次回答问题,而是不断问自己的问题时,我们称之为 CancelAllDialogsAsync。机器人将返回 MainDialog 并等待用户输入,因此用户将不得不再次提出他们的问题。我们不希望用户不得不再次询问,所以我们想取消所有对话框并返回到 MainDialog 传递用户问题,以便 MainDialog 可以选择一种方式来回答它。

感谢任何帮助。

我们的解决方案是将话语存储在用户状态中。 MainDialog 检查用户状态是否存储了话语。如果是这样,它会回答它。没有话语存储在用户状态主对话框中,它将询问用户 'What can I do for you?'.