首页 > 解决方案 > 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 无法识别,我可以做些什么来在对话结束后从内存中清除用户和对话。

标签: botframework

解决方案


endOfConversation机器人也与技能耦合时,活动处理程序在内部使用。当用户结束对话时,机器人会将此活动类型发送给技能,通知它与用户的对话已结束。

有不同的方法可以攻击它。我使用的方法是组件对话框。以cancelAndHelpDialog设计为模型,当用户键入“取消”或“退出”时,用户将被带到一个退出对话框,在该对话框中收集反馈等。

作为退出过程的一部分,您可以conversationState.delete()在对话框中调用,后跟cancelAllDialogs(true).

希望有帮助!


推荐阅读