botframework - endOfConversation 不是函数
问题描述
我的机器人现在正在使用本地内存,目标是每当对话结束时。我想从本地内存中删除有关此用户的所有内容。所以我尝试了这个onEndOfConversation。
显然这个错误表明 onEndOfConversation 不是一个函数。
这是我的代码:
const { CardFactory } = require('botbuilder');
const { DialogBot } = require('./dialogBot');
const WelcomeCard = require('./resources/welcomeCard.json');
class DialogAndWelcomeBot extends DialogBot {
constructor(conversationState, userState, dialog) {
super(conversationState, userState, dialog);
this.onMembersAdded(async (context, next) => {
const membersAdded = context.activity.membersAdded;
for (let cnt = 0; cnt < membersAdded.length; cnt++) {
if (membersAdded[cnt].id !== context.activity.recipient.id) {
//const welcomeCard = CardFactory.adaptiveCard(WelcomeCard);
//await context.sendActivity({ attachments: [welcomeCard] });
await dialog.run(context, conversationState.createProperty('DialogState'));
}
}
// By calling next() you ensure that the next BotHandler is run.
await next();
});
this.onEndOfConversation(async (context, next) => {
console.log("END!");
await conversationState.delete(context);
await userState.delete(context);
});
}
}
module.exports.DialogAndWelcomeBot = DialogAndWelcomeBot;
那么我该怎么做呢?如果 onEndOfConversation 无法识别,我可以做些什么来在对话结束后从内存中清除用户和对话。
解决方案
当endOfConversation
机器人也与技能耦合时,活动处理程序在内部使用。当用户结束对话时,机器人会将此活动类型发送给技能,通知它与用户的对话已结束。
有不同的方法可以攻击它。我使用的方法是组件对话框。以cancelAndHelpDialog
设计为模型,当用户键入“取消”或“退出”时,用户将被带到一个退出对话框,在该对话框中收集反馈等。
作为退出过程的一部分,您可以conversationState.delete()
在对话框中调用,后跟cancelAllDialogs(true)
.
希望有帮助!