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

问题描述:

我有一个光秃秃的骨头聊天机构设置,并希望扩大其潜在的功能。我想要做的第一件事就是访问用户信息,主要是用户的名字。我知道这是可能的,但由于我是NodeJS的新手,我不确定如何实现这一点。在介绍阶段,我一直无法在聊天机器上找到很多教程。任何帮助是极大的赞赏!Facebook Messenger Bot - 如何使用NodeJS获取用户信息?

下面是我的聊天机器人的缩写版本的链接

这是代码的主要位,我认为需要改进(看到下面的机器人的其余部分的上下文中)

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

+0

欢迎SO!你的输入是什么,你的预期输出是什么?哪些工作不正确? –

+0

你有没有看过https://developers.facebook.com/docs/graph-api/reference/user(好像你有bodyObj.first_name)... –

+0

谢谢!是的,我看了很多他们的文档。我只是不知道它应该是什么样子(GET请求以及如何将它们的名称保存为变量等)。我拥有的大部分内容都来自教程。使用上面的代码我没有收到机器人的回应。实际上,奇怪的是,机器人不止一次地对每个请求做出回应,但我不确定那可能如何。 – Jowens

仔细检查您的访问令牌是否正确。

我也建议你检查错误消息是什么

console.log("error getting username", error); 

发件人不在您的函数定义。

它被传递到你的其他函数中,或者在你的post请求处理函数的作用域中被挖掘。

确保发件人已定义,并且您的代码应该正常工作。

下面的行添加到您的getName功能:不定义

var sender = event.sender.id

你的变量名,应该增加让名字= ...,它工作正常