Facebook Messenger Chatbot 如何收集用户发送的地理位置信息?

Facebook Messenger Chatbot how do I collect the users geo location that they send?

在 Facebook Messenger 中有一个图标允许用户发送他们的地理坐标。

这在 Facebook Messenger 平台上是否可用,即如果用户向我发送他们的位置,我的聊天机器人是否可以访问它?如果是这样,它是如何完成的,因为我在我的 webhook 的响应中看不到它。

您在邮件中以附件形式获取位置。请参阅下面的示例:

{ mid: 'mid.1463464074086:96b149e1a047e47842',
  seq: 2076,
  attachments: 
    [ { title: 'Anupam\'s Location',
   url: 'https://www.facebook.com/l.php?u=https%3A%2F%2Fwww.bing.com%2Fmaps%2Fdefault.aspx%3Fv%3D2%26pc%3DFACEBK%26mid%3D8100%26where1%3D19.120002%252C%2B72.863715%26FORM%3DFBKPL1%26mkt%3Den-US&h=AAQH523sr&s=1&enc=AZNmEBjv3zHHm0_dYnEIC6j7EDsJNt8PZRZZyaXbIZ6VzjPsQUOOaMIPGtXFH17CevUiNK0_K594CgDQHAMQSru7uS_jjbkxojBWNwBnncqzaw',
   type: 'location',
   payload: [Object] } ] }

从负载中,您可以使用以下方法访问纬度和经度:

lat = event.message.attachments[0].payload.coordinates.lat
lng = event.message.attachments[0].payload.coordinates.long

是的,该位置将作为邮件中的附件发送。如果您指的是 facebook messenger 平台文档中给出的示例代码,可以按如下方式进行修复....(请在此处参考完整代码 https://developers.facebook.com/docs/messenger-platform/quickstart

在其他部分

else if (messageAttachments) {

              console.log(messageAttachments[0].payload.coordinates.lat); //gives you lat

              console.log(messageAttachments[0].payload.coordinates.long); // gives you long
           }

目前在获取某些用户的位置时存在错误。

当我的用户在 facebook-messenger-bot 中分享他们的位置时;

虽然我可以获得用户的位置 如下响应;

    { mid: 'mid.1463464074086:96b149e1a047e47842',
      seq: 2076,
      attachments: 
        [ { title: 'Fatih\'s Location',
       url: 'https://www.facebook.com/l.php?u=https%3A%2F%2Fwww.bing.com%2Fmaps%..',
       type: 'location',
       payload: [Object] 
    } ] }

但无法获取其他一些用户的位置喜欢下面的回复;

   { 
    { mid: 'mid.$cAAD53Ka90kBmfY23q1gTEdy6rrmW', seq: 19104}
   }

Facebook 团队仍在处理此错误,如果您想浏览,请点击 link: https://developers.facebook.com/bugs/160926314660178/