Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何在continueDialog中引用当前对话框范围?_Typescript_Botframework - Fatal编程技术网

Typescript 如何在continueDialog中引用当前对话框范围?

Typescript 如何在continueDialog中引用当前对话框范围?,typescript,botframework,Typescript,Botframework,我将botframework与botbuilder解决方案一起使用,但我不明白为什么深嵌套对话框上方法continueDialog中的DialogContext不引用当前对话框 事实上,continueDialog方法中的第一个参数在最深的嵌套对话框(它扩展了类ComponentDialog)中总是指main对话框的DialogContext(参见下面的流程) 例如,我们有这样的对话框流: - MainDialog (RouterDialog)

我将botframework与botbuilder解决方案一起使用,但我不明白为什么深嵌套对话框上方法
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的询问文档很有用:是的,我认为这是一个不受影响的信息,因为我的问题与对话框和嵌套对话框严格相关,再次表示抱歉。我刚刚更新了这个问题,我的答案可以接受吗?