如何在短时间内管理用户输入?

时间:2017-11-14 14:39:34

标签: botframework

我想实现一种管理用户在一个时间间隔(例如3秒)内发送许多消息的方法,这样聊天机器人只响应最后一个消息。

输入示例(间隔为3秒):

嗨 嗨 嗨 -救命 结果:聊天机器人仅响应帮助消息。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以利用中间件功能拦截每条消息,您可以使用该功能将每个用户的每条消息存储在缓存中,当您的机器人收到新消息时,您可以在缓存中与这些信息进行比较,然后无论流量是否需要自杀前进。

用于快速测试的Npde.js代码段:

const moment = require('moment');
let lastMessage = null;
let lastMessageTime = null;
bot.use({
    receive: (session, next) => {
        let currentMessage = session
        if (currentMessage.text !== lastMessage) {
            lastMessage = currentMessage.text;
            lastMessageTime = currentMessage.timestamp;
            next();
        } else {
            if (moment(currentMessage.timestamp) - moment(lastMessageTime) >= 3000) {
                lastMessageTime = currentMessage.timestamp;
                next();
            } 
        }
    }
})

您需要注意的是,在生产环境中,您需要使用会话/用户ID存储消息。例如。使用session / user id作为消息的前缀和缓存中的timesamp键。

有关如何拦截C#中的邮件,请参阅https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-middleware, 并参考https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-intercept-messages获取Node.js版本。

希望它有所帮助。