0

我已将 LUIS 与我的聊天机器人集成在一起,并且几乎所有的对话都是使用 dialog.matches() 定义的。问题是某些对话框需要被重定向到其他对话框,但replaceDialog或者beginDialog似乎不适用于使用 dialog.matches 定义的对话框。示例:考虑以下对话框

options.dialog.matches('startActivity', [
        function(session) {
})

我如何从其他对话框手动调用它?session.replaceDialog('startActivity')引发错误。

Error: Dialog[*:startActivity] not found.
    at Session.replaceDialog (D:\insight\ms-bot\src\api\node_modules\botbuilder\
lib\Session.js:146:19)
    at Array.options.dialog.matches.regEx (D:\insight\ms-bot\src\api\dialogs\mor
tgage\mortgage-check-account-balance.dialog.js:7:26)
    at Object.waterfallAction [as mortgageCheckBalance] (D:\insight\ms-bot\src\a
pi\node_modules\botbuilder\lib\dialogs\DialogAction.js:130:25)
    at IntentDialog.invokeIntent (D:\insight\ms-bot\src\api\node_modules\botbuil
der\lib\dialogs\IntentDialog.js:264:44)

在 githib 上参考这个问题

4

1 回答 1

1

您传递给matches() 的字符串是不匹配对话框名称的意图。您需要将您的瀑布作为一个单独的对话框进行拆分,以便:

options.dialog.matches('startActivity', [
     function (session) {
           session.beginDialog('/startActivity');
     }
]);

bot.dialog('/startActivity', [
     function (session) { },
     function (session, results) {
          session.replaceDialog('/startActivity');
     }
]);
于 2016-09-30T17:22:21.307 回答