在 bot 框架中调用 CancelAllDialogsAsync 时如何传递结果?
How to pass a result when calling CancelAllDialogsAsync in bot framework?
我们使用机器人框架已经有一段时间了,对它非常满意。我们使用 stepContext.Parent.CancelAllDialogsAsync()
方法。这工作正常,但我们想在机器人代码中传递结果或触发某种动作。我们想传递一个值。
我注意到可选的 eventName
和 eventValue
参数,但我找不到任何方法来使用它们。我找到了该方法的文档,但根本没有解释 eventName
和 eventValue
。 https://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?'.
我们使用机器人框架已经有一段时间了,对它非常满意。我们使用 stepContext.Parent.CancelAllDialogsAsync()
方法。这工作正常,但我们想在机器人代码中传递结果或触发某种动作。我们想传递一个值。
我注意到可选的 eventName
和 eventValue
参数,但我找不到任何方法来使用它们。我找到了该方法的文档,但根本没有解释 eventName
和 eventValue
。 https://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?'.