Node.js 当用户与机器人聊天时,是否有方法识别已连接的用户?
所以我是IBM Watson assistant的新手,我想知道,当我为发送消息的当前用户n初始化会话时,我应该将其存储在哪里,例如,如何告诉Watson区分用户1和用户2的会话id 现在我尝试在nodejs中使用一个全局变量,但正如我所说的那样,我无法区分多个用户的会话Node.js 当用户与机器人聊天时,是否有方法识别已连接的用户?,node.js,chatbot,ibm-watson,watson-assistant,Node.js,Chatbot,Ibm Watson,Watson Assistant,所以我是IBM Watson assistant的新手,我想知道,当我为发送消息的当前用户n初始化会话时,我应该将其存储在哪里,例如,如何告诉Watson区分用户1和用户2的会话id 现在我尝试在nodejs中使用一个全局变量,但正如我所说的那样,我无法区分多个用户的会话 const assistant = new WatsonAssistant({ username: process.env.WATSON_USERNAME, password: process.env.WATSON_
const assistant = new WatsonAssistant({
username: process.env.WATSON_USERNAME,
password: process.env.WATSON_PASSWORD,
url: process.env.WATSON_URL,
version: process.env.WATSON_VERSION
});
exports.getMessage = body => new Promise(async (resolve, reject) => {
// Initializing session for current user
if(!global.session_id){
const createdSessionId = await assistant.createSession({
assistant_id: process.env.WATSON_ASSISTANT_ID
});
global.session_id = createdSessionId.session_id;
}
assistant.message(
{
workspace_id: process.env.WATSON_WORKSPACE_ID,
input: { text: body.input },
session_id: global.session_id,
assistant_id: process.env.WATSON_ASSISTANT_ID
},
function(err, response) {
if (err) {
console.log(err);
reject(err);
} else {
resolve(response);
}
}
);
});```
I would like to have session_id's of multiple users who have used my chatbot.
我建议使用NodeJS Express作为web服务器,然后使用一些Express会话中间件来管理用户会话(在web浏览器和服务器之间)。我使用的中间件是“express session” 例如,我会这样做:
const session = require('express-session');
// use unique value for secret, here using the bot workspace ID
app.use(session({secret: process.env.WORKSPACE_ID}));
然后您就有了一个“req.session”对象,您可以在该对象上存储数据,并在同一用户的后续调用中检索数据。您可以将助手会话ID存储在此req.session对象上,以使其可用。不同的用户将获得不同的express会话,从而获得不同的Assistant会话
“express session”的默认实现使用内存,因此根据其自述文件,您将希望使用磁盘或数据库等用于生产目的。这可能会有所帮助,但我希望用户选择基于间隔发送响应的选项。每个用户的工作区ID是否也不同?如果不是,则工作区ID不是唯一的值。例如,bot应该每8小时或每天发送一条消息