我正在使用node.js和Microsoft bot框架创建一个多对话框聊天机器人
bot与LUIS for NLP连接。当意图匹配时,对话框触发而没有任何问题。但是当出现不匹配对话框时,我想触发此Sorry, I don't know. :( this is the default dialog
消息。我的代码如下,对于没有匹配的意图,它无法按预期工作。
我注意到,每次输入与任何意图都不匹配的词组时,都会触发先前匹配的意图对话框。
我不知道这段代码有什么问题。 我遵循以下解决方案,但对我没有帮助
const bot = new builder.UniversalBot(new builder.ChatConnector({
appId: process.env.MicrosoftAppId,
appPassword: process.env.MicrosoftAppPassword
}));
bot.dialog(vacanciesDialog1.id, vacanciesDialog1.waterfall).triggerAction({ matches: vacanciesDialog1.name });
bot.dialog(gratuityDialog.id, gratuityDialog.waterfall).triggerAction({ matches: gratuityDialog.name });
bot.dialog(slipsDialog.id, slipsDialog.waterfall).triggerAction({ matches: slipsDialog.name });
默认对话框,如果任何对话框都不匹配
bot.dialog('/', [
(session, args, next) => {
session.send(`Sorry, I don't know. :( this is the default dialog`);
}
])
答案 0 :(得分:0)
您可能需要训练“无”意图。
我创建了一个简单的LUIS应用,以尝试解决您的问题。当我第一次部署我的机器人时,我的大部分意图是“取消”,而不是“无”。在我添加了一些“无”字之后,这个问题对我来说消失了。
请查看this related StackOverflow question。
[EDIT]我想进一步阐述。我无意通过这样格式化我的代码来工作:
bot.dialog('/', function (session, args) {
session.send(`Sorry, I don't know. :( this is the default dialog.`, session.message.text);
}).triggerAction({
matches: 'None'
});
然后,一旦我在LUIS上添加了一些None语句,我便进行了另一次发布以确保更改得以通过。希望这会有所帮助。