我想实现一种管理用户在一个时间间隔(例如3秒)内发送许多消息的方法,这样聊天机器人只响应最后一个消息。
输入示例(间隔为3秒):
嗨 嗨 嗨 -救命 结果:聊天机器人仅响应帮助消息。
提前致谢。
答案 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版本。
希望它有所帮助。