Typescript 如何在continueDialog中引用当前对话框范围?
我将botframework与botbuilder解决方案一起使用,但我不明白为什么深嵌套对话框上方法Typescript 如何在continueDialog中引用当前对话框范围?,typescript,botframework,Typescript,Botframework,我将botframework与botbuilder解决方案一起使用,但我不明白为什么深嵌套对话框上方法continueDialog中的DialogContext不引用当前对话框 事实上,continueDialog方法中的第一个参数在最深的嵌套对话框(它扩展了类ComponentDialog)中总是指main对话框的DialogContext(参见下面的流程) 例如,我们有这样的对话框流: - MainDialog (RouterDialog)
continueDialog
中的DialogContext
不引用当前对话框
事实上,continueDialog
方法中的第一个参数在最深的嵌套对话框(它扩展了类ComponentDialog
)中总是指main对话框的DialogContext
(参见下面的流程)
例如,我们有这样的对话框流:
- MainDialog (RouterDialog)
|--ChildDialog (ComponentDialog)
|-- ChildChildDialog (ComponentDialog)
从作为route对话框的main对话框
我添加了一些对话框,比如ChildDialog
,从route
方法我根据意图开始对话框。
在这里之前,它工作得很好,因为我像预期的那样在ChildDialog中。
但是,如果在ChildDialog中添加一个新的对话框ChildDialog,该对话框从方法continueDialog
中的ComponentDialog
扩展而来,则DialogContext
不会引用到当前对话框,而是引用到MainDialog的dialogset
因此,如果我想创建嵌套对话框,我必须将每个对话框添加到主对话框中,以便让botframework了解我所指的对话框ID,否则,它将无法找到任何具有该ID的对话框
这条路对吗?我应该继续将每个对话框注册到主对话框中,还是有一些好的实用方法?您可以通过以下方式访问组件对话框的内部对话框集:
onBeginDialog
、onContinueDialog
、onEndDialog
或onRepromptDialog
由于您发现
continueDialog
通过了外部对话框上下文,我怀疑您可能希望替代onContinueDialog
。您可以通过以下方式访问组件对话框的内部对话框集:
onBeginDialog
、onContinueDialog
、onEndDialog
或onRepromptDialog
由于您发现
continueDialog
通过了外部对话框上下文,因此我怀疑您可能希望替代onContinueDialog
。不清楚您在问什么和尝试做什么。我猜您使用的是示例中的DialogBot
类,“主对话框”扩展了ComponentDialog
。请确保您了解组件对话框有自己的对话框集,但您也可以自己创建对话框集。读这个:我很抱歉。。。我已经更新了这个问题,我们可以假定您使用的是来自“botframework”标签的Microsoft Bot框架,但您只提供了很少的上下文。什么是路由对话框?如果您使用的是虚拟助手模板,那么这是一条非常重要的信息,您选择将其排除在问题之外。如果你向人们提供帮助你所需的所有信息,你会得到更好的帮助。您可能会发现Stack Overflow的询问文档很有用:是的,我认为这是一个不受影响的信息,因为我的问题与对话框和嵌套对话框严格相关,再次表示抱歉。我刚刚更新了这个问题,我的回答可以接受吗?不清楚你在问什么,你想做什么。我猜您使用的是示例中的DialogBot
类,“主对话框”扩展了ComponentDialog
。请确保您了解组件对话框有自己的对话框集,但您也可以自己创建对话框集。读这个:我很抱歉。。。我已经更新了这个问题,我们可以假定您使用的是来自“botframework”标签的Microsoft Bot框架,但您只提供了很少的上下文。什么是路由对话框?如果您使用的是虚拟助手模板,那么这是一条非常重要的信息,您选择将其排除在问题之外。如果你向人们提供帮助你所需的所有信息,你会得到更好的帮助。您可能会发现Stack Overflow的询问文档很有用:是的,我认为这是一个不受影响的信息,因为我的问题与对话框和嵌套对话框严格相关,再次表示抱歉。我刚刚更新了这个问题,我的答案可以接受吗?