Facebook Messenger Bot - 如何使用NodeJS获取用户信息?

时间:2017-06-20 20:11:57

标签: node.js facebook facebook-messenger chatbot facebook-messenger-bot

我在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?")
        }
    })
}

Chatbot Code

4 个答案:

答案 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 = ...并且它可以正常工作