Facebook的信使,如何处理发送的位置

根据本指南 ,它描述了我们如何发送消息和处理button文本等。

但是,当用户发送到geolocation机器人,我的webhook接收它是这样的:

 { sender: { id: 99999999999999}, recipient: { id: 99999999999999 }, timestamp: 99999999999, message: { mid: 'mid.9999999:999999999', seq: 231, attachments: [ [Object] ] } } 

位置作为attachments数组中的某种对象发送到webhook。

当我在我的代码中,我试图让他们这样的:

 event.message.attachments[0].longitude event.message.attachments[0].latitude 

我弄undefined明白

如何获取用户发送的位置的经纬度? 文档中没有对此的描述。

UPDATE

经过一番尝试,我能够得到它的所有属性。 当用户发送他们的位置我得到这个结构:

 {url: https://www.facebook.com/l.php?u=https%3A%2F%2Fwww.bing.com%2Fmaps%2Fdefault.aspx%3Fv%3D2%26pc%3DFACEBK%26mid%3D8100%26where1%3D43.230507%252C%2B76.945031%26FORM%3DFBKPL1%26mkt%3Den-US&h=vAQHe08Kz&s=1&enc=AZPRe3VQFnThq3_jdPFg8R4WWUZxWJA1XjbVvVua4fD0PNpt2u26hvS-noUEU55qQNC6Wm9hNGwpGntrUgu1nx7KsSIKRbGQyKEXueAImV3Kyg} 

这是巨大的URL 。 如果您通过浏览器打开此链接,则会打开Bing地图并显示此位置。

这些数据很难处理。 它强制用户编写自己的parsing器。

纬度和经度在url:

… where1%3D 43.230507252C %2B 76.945031 %26FORM …

所以有一种方法是将URL转换为文本,然后parsing这个文本来获得Lat和Long。

UPDATE现在lat和lng可以直接从附件中访问JSON:

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