0

LUIS をチャットボットに統合しました。ほとんどすべてのダイアログは、dialog.matches() を使用して定義されています。問題は、一部のダイアログを他のダイアログにリダイレクトする必要があるが、replaceDialogdialog.matchesbeginDialogを使用して定義されたダイアログでは機能していないように見えることです。例: 次のダイアログを検討してください

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)

github でこの問題を参照してください

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 に答える