Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
Botframework 如何从单独的瀑布式对话框中取消所有对话框_Botframework - Fatal编程技术网

Botframework 如何从单独的瀑布式对话框中取消所有对话框

Botframework 如何从单独的瀑布式对话框中取消所有对话框,botframework,Botframework,我有查看订单和加快订单的对话框。用户可能希望在VIEWORDER对话框的中间加速,然后返回查找更多的行项目。我正在检查作为中断的加速意图,并将对话框推到堆栈上 在对话框的末尾,我会提示用户是否要返回到上一个对话。如果是,我调用endDialog,它将对话框从堆栈中弹出并返回到上一个对话框。这是有效的。如果没有,我调用cancelAllDialogs。我希望这样可以清除对话框堆栈,但它似乎只取消了当前(加速)对话框,并且仍然返回到上一个viewOrder对话框 我的目标是,如果用户在加速对话框结束

我有查看订单和加快订单的对话框。用户可能希望在VIEWORDER对话框的中间加速,然后返回查找更多的行项目。我正在检查作为中断的加速意图,并将对话框推到堆栈上

在对话框的末尾,我会提示用户是否要返回到上一个对话。如果是,我调用endDialog,它将对话框从堆栈中弹出并返回到上一个对话框。这是有效的。如果没有,我调用cancelAllDialogs。我希望这样可以清除对话框堆栈,但它似乎只取消了当前(加速)对话框,并且仍然返回到上一个viewOrder对话框

我的目标是,如果用户在加速对话框结束时说他们不想继续,那么如何清除对话框堆栈

首先,我尝试让对话框返回一个continueDialog布尔值,然后从中断函数中取消。但是wait只在对话框开始时等待,而不是结果,因此中断函数在用户通过加速对话框之前完成

我改为只将新对话框推送到堆栈上,并处理从加速函数取消的操作,但cancelAllDialogs在这个单独的对话框中似乎不取消清除堆栈

async continueAction(步骤){
如果(步骤结果){
返回等待步骤。endDialog();
}否则{
wait step.context.sendActivity(`好的,如果我还可以为您做什么,请告诉我。`);
返回等待步骤。取消所有对话框();
}
}
请注意,“step”只是我的对话框上下文的名称,您可以将其命名为“context”、“stepContext”、“dc”、“innerDc”等


step.result.value是ConfirmPrompt的结果,当选择“否”时,我正确到达else块。我希望CancelAllDialogs清除堆栈,但它似乎只取消活动对话框。

启动新的瀑布式对话框时,原始对话框堆栈将成为对话框上下文中的父对话框,因此在取消所有对话框时,您需要引用它,即

返回等待步骤.parent.cancelAllDialogs();

这将清除整个堆栈。我检查并确认,即使我有多个级别的对话框(例如,我调用了3次未回答提示的加速中断),这一行也会清除整个堆栈。

如果这回答了您的问题,请接受它,因为您的回答需要2天才能接受您自己的答案。我会尽快去做的。