在 NodeJS 中跨事件回调共享变量
Sharing variables across event callbacks in NodeJS
我正在尝试使用 messenger-bot 模块构建一个 FB Messenger 机器人。这是我的示例代码
bot.on('message', (payload, reply) => {
let userData = payload.message.text;
bot.getProfile(payload.sender.id, (err, profile) => {
if (err) {
console.log(err);
// throw err
}
else {
text = {
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"Pick an option?",
"buttons":[
{
"type":"postback",
"title":"Option 1",
"payload":"first_option"
},
{
"type":"postback",
"title":"Option 2",
"payload":"second_option"
}
]
}
}
};
postBack(text, payload.sender.id, profile);
}
});
});
bot.on('postback', (payload, reply) => {
let text = payload.postback.payload;
bot.getProfile(payload.sender.id, (err, profile) => {
//Do something with the userData and the selected option
});
})
现在如何在 "postback"
的事件回调中访问 userData
?我只能想到以下解决方案
将 userData
作为选项有效负载的一部分传递,例如
"buttons":[
{
"type":"postback",
"title":"Option 1",
"payload":"first_option||"+userData
}
并在 "postback"
回调中再次解析它。
有更好的方法吗?
换句话说,如何在 NodeJS/ JavaScript?
中跨回调共享变量
假设这需要为多个用户提供服务,因此无法将您的 userData 范围扩大,您需要将其保存在 database/cache 中并从您的 'postback' 中查询,或者使用您的想法来制作它有效载荷的一部分。
我正在尝试使用 messenger-bot 模块构建一个 FB Messenger 机器人。这是我的示例代码
bot.on('message', (payload, reply) => {
let userData = payload.message.text;
bot.getProfile(payload.sender.id, (err, profile) => {
if (err) {
console.log(err);
// throw err
}
else {
text = {
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"Pick an option?",
"buttons":[
{
"type":"postback",
"title":"Option 1",
"payload":"first_option"
},
{
"type":"postback",
"title":"Option 2",
"payload":"second_option"
}
]
}
}
};
postBack(text, payload.sender.id, profile);
}
});
});
bot.on('postback', (payload, reply) => {
let text = payload.postback.payload;
bot.getProfile(payload.sender.id, (err, profile) => {
//Do something with the userData and the selected option
});
})
现在如何在 "postback"
的事件回调中访问 userData
?我只能想到以下解决方案
将 userData
作为选项有效负载的一部分传递,例如
"buttons":[
{
"type":"postback",
"title":"Option 1",
"payload":"first_option||"+userData
}
并在 "postback"
回调中再次解析它。
有更好的方法吗? 换句话说,如何在 NodeJS/ JavaScript?
中跨回调共享变量假设这需要为多个用户提供服务,因此无法将您的 userData 范围扩大,您需要将其保存在 database/cache 中并从您的 'postback' 中查询,或者使用您的想法来制作它有效载荷的一部分。