我在Messenger设置中有一个裸骨聊天机器人,并希望扩展其潜在的功能。我想要做的第一件事是访问用户信息,主要是用户的名字。我知道这是可能的,但由于我是NodeJS的新手,我不知道如何实现这一目标。在介绍阶段之后,我无法在chatbots上找到很多教程。任何帮助是极大的赞赏!
以下是我的chatbot缩写版本的链接
这是我认为需要改进的代码的主要部分(在下面的机器人的其余部分中看到它)
function getName(event){
request({
url: "https://graph.facebook.com/v2.6/" + sender,
qs: {
access_token : token,
fields: "first_name"
},
method: "GET",
}, function(error, response, body) {
if(error){
console.log("error getting username")
} else{
var bodyObj = JSON.parse(body)
name = bodyObj.first_name
sendText(sender, "Hi, ")
sendText(sender, name)
sendText(sender, " whatsup?")
}
})
}
答案 0 :(得分:1)
您可以通过以下代码获取Facebook用户信息:
request({
url: "https://graph.facebook.com/v2.6/" + senderId + "?",
qs: {
access_token: config.FB_PAGE_ACCESS_TOKEN
},
headers: {
'Accept': 'application/json',
'Accept-Charset': 'utf-8',
'User-Agent': 'test-bot'
},
method: "GET",
json: true,
time: true
},
function(error, res, faceUserInfo) {
console.log("faceUserInfo", faceUserInfo)
}
);
答案 1 :(得分:0)
仔细检查您的访问令牌是否正确。
我还建议您检查错误消息是什么
console.log("error getting username", error);
答案 2 :(得分:0)
您的函数中未定义发件人。
它将被传递到您的其他函数中,或者在您的post请求处理程序的范围内进行delcared。
确保已定义发件人,您的代码应该可以正常工作。
将以下行添加到getName函数:
var sender = event.sender.id
答案 3 :(得分:-1)
你的变量名没有定义,应该添加let name = ...并且它可以正常工作