首页 > 解决方案 > 如何在 Microsoft Teams Bot - NodeJS 中调用父对话框?

问题描述

我有三个对话框DialogADialogBDialogCDialogA并且DialogB都可以调用DialogC。现在如果DialogC是从调用的DialogA,在结束时DialogC,我如何确定DialogC是从调用的DialogA,我需要回调它。如果我使用return await context.endDialog();,它会移动到下一步DialogA。对话调用基于以下条件发生

DialogA {
    async step1(context) {
        if(some condition) {
            return await context.beginDialog(DialogC);
        }
        //some other code
    }
    async step2(context) {
        //step2 processing code
    }
}

所有的对话框都是WATERFALLDIALOG。所以我需要找到的是如何返回到我DialogC从任一对话框中调用DialogADialogB或重新启动DialogAor的同一点DialogB

标签: node.jsbotframeworkchatbotteams-toolkit

解决方案


如果我了解您的要求,我认为 ReplaceDialog 类可能是您正在寻找的。此外,您也可以使用 options 属性将值传递到对话框中。

DialogA
var options = ‘FromDialogA’
return await context.beginDialog(DialogC, options)

DialogC
if (context.options == ‘FromDialogA’) {
// back to the parent dialog
return await context.replaceDialog(DialogA)
}

推荐阅读