【发布时间】:2020-02-01 19:49:04
【问题描述】:
我想集成一个聊天机器人,它应该连接到任何等待连接到真实人类用户的用户。聊天机器人将通过响应人类用户消息来娱乐用户。
这里已经实现了一个类似的聊天机器人,名为“Didianer.com”,如果你去这里开始输入,你会看到他回复。
我也想在我的应用程序中使用完全相同的机器人,但我完全不知道从哪里开始。
这是我的服务器端代码
//Server receives a new message (in data var) from the client.
socket.on('message', function (data) {
var room = rooms[socket.id];
//Server sends the message to the user in room
socket.broadcast.to(room).emit('new message', {
username: socket.username,
message: data
});
});
// when the client emits 'add user', this listens and executes (When user enters ENTER)
socket.on('add user', function (username) {
if (addedUser) return;
//Own
names[socket.id] = username;//save username in array
allUsers[socket.id] = socket; // add current user to all users array
// we store the username in the socket session for this client
socket.username = username;
++numUsers;
addedUser = true;
socket.emit('login', {
numUsers: numUsers
});
// echo globally (all clients) that a person has connected
socket.broadcast.emit('user joined', {
username: socket.username,
numUsers: numUsers
});
// now check if sb is in queue
findPeerForLoneSocket(socket);
});
FindPeerforLoneSocket 在新用户连接并想与其他人交谈时调用。在这里,我假设机器人的逻辑应该去。例如,如果用户正在等待(排队)5 秒,并且没有人在线通话,则将用户(添加用户和聊天机器人)连接到一个房间,以便他们都可以开始通话。我不确定如何回复聊天事件以及聊天机器人将如何回复...
var findPeerForLoneSocket = function(socket) {
console.log("i am in finding a peer");
// this is place for possibly some extensive logic
// which can involve preventing two people pairing multiple times
if (queue.length>0) {
console.log("people are online" + queue.length);
// somebody is in queue, pair them!
var peer = queue.pop();
var room = socket.id + '#' + peer.id;
var str = socket.id;
// join them both
peer.join(room);
socket.join(room);
// register rooms to their names
rooms[peer.id] = room;
rooms[socket.id] = room;
// exchange names between the two of them and start the chat
peer.emit('chat start', {'name': names[socket.id], 'room':room});
socket.emit('chat start', {'name': names[peer.id], 'room':room});
//Remove backslash from socketid
// str = socket.id.replace('/#', '-');
} else {
// queue is empty, add our lone socket
queue.push(socket);
console.log("nobody is online, add me in queue" + queue.length);
}
}
我想要一个非常简单的基本聊天机器人来响应基本消息。就像我应该检查用户是否发送消息“Hello”然后我可以检查用户消息是否包含单词“Hello”然后我可以用对“Hello”的适当响应回复聊天机器人就像在线用户的“Hi {username}” .
【问题讨论】:
标签: javascript node.js socket.io chat chatbot