gpt4 book ai didi

javascript - Node 嵌套函数回调丢失 - Lex bot sessionAttributes

转载 作者:行者123 更新时间:2023-12-03 02:31:08 27 4
gpt4 key购买 nike

我是 Node 和异步编程的新手,为了更好地理解回调,我在学习过程中尝试了所有能找到的方法。
这是 Lex 机器人与 Facebook 的集成,但我想我只是迷失在回调 hell 中。我的日志显示所有功能都正常工作,并且响应已建立并且及时,Facebook 不会超时,但它确实超时了。所以 Facebook 永远不会收到响应,所以我相信回调永远不会真正到达原始函数。

exports.handler = (event, context, callback) => {
...
// get user info from Facebook
var req = https.get('https://graph.facebook.com/v2.6/'+PSID+'?fields=first_name,last_name,gender&access_token='+pageAccessToken, (res) => {
res.setEncoding('utf8');

res.on('data', function (body) {
console.log("BODY= "+body);

body = JSON.parse(body);
event.sessionAttributes['userInfo'] = {
"first_name": body['first_name'],
"last_name": body['last_name'],
"gender": body['gender'],
"id": body['id']
};

try {
intentProcessor (event, (response) => {
console.log("RESPONSE= "+ JSON.stringify(response));
callback(null, response);
});
} catch (err) {
callback(err);
}
});
});
...

try 放置在 res.on 之外时,回调将起作用并发送响应,但它是在获取所需的用户数据之前发送的。

try 放置在 res.on 中时(如上面的代码所示),响应日志将与用户信息完美地结合在一起。但它根本就没有回到 Facebook。

有人可以解释一下我在处理回调时出了什么问题吗?

最佳答案

请尝试使用下面的代码,

exports.handler = (event, context, callback) => {
let url = `https://graph.facebook.com/v2.6/${PSID}fields=first_name,last_name,gender&access_token=${pageAccessToken}`;
// get user info from Facebook
var req = https.get(url, (res) => {
res.setEncoding('utf8');

res.on('data', function (body) {
body = JSON.parse(body);
event.sessionAttributes['userInfo'] = {
"first_name": body['first_name'],
"last_name": body['last_name'],
"gender": body['gender'],
"id": body['id']
};
intentProcessor(event, (err, response) => {
if (err) {
return callback(err);
}
return callback(null, response);
});
});
});

}

关于javascript - Node 嵌套函数回调丢失 - Lex bot sessionAttributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48730414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com