包括对话框或来自不同文件的重用对话框

时间:2019-04-11 14:49:42

标签: node.js botframework

我正在尝试从另一个对话框js文件进行begindialog。我出错了。

<b>[onTurnError]: Error: DialogContext.beginDialog(): A dialog with an id of 'FollowUpDialog' wasn't found. </b>

这是对话框结构-

  • 对话
    1. 订单状态
      • orderstatus.js
      • index.js
    2. 跟进
      • followUp.js
      • index.js

我正在尝试在OrderStatus对话框中包括FollowUp对话框,类似地,我还有其他要在其中开始跟进或Orderstatus对话框的对话框。尝试重用对话框。

一种使用我们如何将文件包含在botjs amd中的方法来做adddialog,就像我可以将其包含在otherfile中一样。但这是多余的工作。我正在努力避免这种情况。有人可以告诉我一种更好的方法来将对话框包含在不同的对话框中。

代码:

下面的代码来自greeting.js 如果您看到我正在执行begindialog的行。

返回等待步骤。beginDialog(ORDER_STATUS_DIALOG); 返回等待步骤。beginDialog(ENTITLEMENT_CHECK_DIALOG);

是错误。我试图包括该对话框,该对话框是不同JS文件的一部分。

        async step => {

                    if (step.context.activity.channelId == 'directline') {
                        const buttons = [{
                            type: ActionTypes.ImBack,
                            title: 'Repair Order Status',
                            value: symbolicString.ZEB_GR_STR_013
                        }, {
                            type: ActionTypes.ImBack,
                            title: 'Entitlement Check',
                            value: symbolicString.ZEB_GR_STR_014
                        }];
                        const card = CardFactory.heroCard('', undefined, buttons, {
                            text: symbolicString.ZEB_GR_STR_015
                        });
                        const reply = {type: ActivityTypes.Message};
                        reply.attachments = [card];
                        return await step.context.sendActivity(reply);
                    } else {
                        return await step.prompt(MENU_PROMPT, symbolicString.ZEB_GR_STR_028);
                    }
                },
                async step => {

                    if (step.context.activity.channelId != 'directline'){
                        console.log("step greeting dialog next step");
                        console.log(step);
                        console.log(step.context.activity);
                        if (step.context.activity.text == '1'){
                            return await step.beginDialog(ORDER_STATUS_DIALOG);
                        }else if (step.context.activity.text == '2'){
                            return await step.beginDialog(ENTITLEMENT_CHECK_DIALOG);
                        }
                    }

                    return await step.endDialog();
                }
        ]));

0 个答案:

没有答案