Facebook Messenger,如何处理发送的位置
Facebook Messsenger, how to handle sent location
根据this guide,它描述了我们如何发送消息和处理按钮文本等
但是,当用户将其 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
。
如何获取用户发送的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%3D43.230507%252C%2B76.945031%26FORM%3DFBKPL1%26mkt%3Den-US&h=vAQHe08Kz&s=1&enc=AZPRe3VQFnThq3_jdPFg8R4WWUZxWJA1XjbVvVua4fD0PNpt2u26hvS-noUEU55qQNC6Wm9hNGwpGntrUgu1nx7KsSIKRbGQyKEXueAImV3Kyg}
它是 GIANT URL。如果您通过浏览器打开此 link,它将打开 Bing 地图并显示此位置。
很难处理这些数据。它强制用户编写自己的解析器。
纬度和经度在 URL:
...where1%3D43.230507%252C%2B76.945031%26FORM...
因此,一种方法是将 URL 转换为文本,然后解析该文本以获得纬度和经度。
更新
现在可以直接从附件JSON:
访问lat和lng
lat = event.message.attachments[0].payload.coordinates.lat
lng = event.message.attachments[0].payload.coordinates.long
根据this guide,它描述了我们如何发送消息和处理按钮文本等
但是,当用户将其 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
。
如何获取用户发送的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%3D43.230507%252C%2B76.945031%26FORM%3DFBKPL1%26mkt%3Den-US&h=vAQHe08Kz&s=1&enc=AZPRe3VQFnThq3_jdPFg8R4WWUZxWJA1XjbVvVua4fD0PNpt2u26hvS-noUEU55qQNC6Wm9hNGwpGntrUgu1nx7KsSIKRbGQyKEXueAImV3Kyg}
它是 GIANT URL。如果您通过浏览器打开此 link,它将打开 Bing 地图并显示此位置。
很难处理这些数据。它强制用户编写自己的解析器。
纬度和经度在 URL:
...where1%3D43.230507%252C%2B76.945031%26FORM...
因此,一种方法是将 URL 转换为文本,然后解析该文本以获得纬度和经度。
更新 现在可以直接从附件JSON:
访问lat和lnglat = event.message.attachments[0].payload.coordinates.lat
lng = event.message.attachments[0].payload.coordinates.long