不更新 .onDefault 中的会话属性
Not updating session properties in .onDefault
我有一个代码显示在下面,问题是 userFailedC 道具没有增加。我可以设置 属性 但每次用户的意图不匹配时它的值都会重置,即每次执行 .onDefault 时。
难道我做错了什么?
另外,我尝试使用 userData 和 privateConversationData,所以我敢打赌我误解了一些东西。
谢谢!
bot.dialog('/', new builder.IntentDialog()
.matches(/(hi|hello|hey)/i, function(session, args, next) {
session.send(rm.get('Hi!');
session.beginDialog('/showMainMenu');
})
.onDefault(function(session, args, next) {
if ( session.dialogData.userFailedC === undefined ) {
session.dialogData.userFailedC = 1;
} else {
session.dialogData.userFailedC++;
}
if (session.dialogData.userFailedC % 2 == 0) {
session.send('Please say hi to me!');
}
})
.onBegin(function(session, args, next) {
next();
})
);
会话数据未保存,因为代码缺少 next()
或 session.endDialog()
。还有另一种方法也可以保存会话数据,但这些是您在通过瀑布步骤或 switching/ending 对话框时最有可能使用的方法。
.onDefault(function(session, args, next) {
if ( session.dialogData.userFailedC === undefined ) {
session.dialogData.userFailedC = 1;
} else {
session.dialogData.userFailedC++;
}
if (session.dialogData.userFailedC % 2 == 0) {
session.send('Please say hi to me!');
// next() or session.endDialog()
}
// next() or session.endDialog()
})
关于存储 session.dialogData.userFailedC
,您需要使用 session.userData.userFailedC
或 session.conversationData.userFailedC
等,因为这将在对话结束后保留数据。
我有一个代码显示在下面,问题是 userFailedC 道具没有增加。我可以设置 属性 但每次用户的意图不匹配时它的值都会重置,即每次执行 .onDefault 时。 难道我做错了什么? 另外,我尝试使用 userData 和 privateConversationData,所以我敢打赌我误解了一些东西。 谢谢!
bot.dialog('/', new builder.IntentDialog()
.matches(/(hi|hello|hey)/i, function(session, args, next) {
session.send(rm.get('Hi!');
session.beginDialog('/showMainMenu');
})
.onDefault(function(session, args, next) {
if ( session.dialogData.userFailedC === undefined ) {
session.dialogData.userFailedC = 1;
} else {
session.dialogData.userFailedC++;
}
if (session.dialogData.userFailedC % 2 == 0) {
session.send('Please say hi to me!');
}
})
.onBegin(function(session, args, next) {
next();
})
);
会话数据未保存,因为代码缺少 next()
或 session.endDialog()
。还有另一种方法也可以保存会话数据,但这些是您在通过瀑布步骤或 switching/ending 对话框时最有可能使用的方法。
.onDefault(function(session, args, next) {
if ( session.dialogData.userFailedC === undefined ) {
session.dialogData.userFailedC = 1;
} else {
session.dialogData.userFailedC++;
}
if (session.dialogData.userFailedC % 2 == 0) {
session.send('Please say hi to me!');
// next() or session.endDialog()
}
// next() or session.endDialog()
})
关于存储 session.dialogData.userFailedC
,您需要使用 session.userData.userFailedC
或 session.conversationData.userFailedC
等,因为这将在对话结束后保留数据。