2016-06-24 20 views
9

Có một cách để gửi vị trí của tôi đến facebook-messenger từ một khách hàng điện thoại di động, nhưng làm thế nào tôi có thể gửi một số vị trí từ một bot? (Nền tảng api Messenger)Cách gửi vị trí từ nền tảng tin nhắn Facebook?

Khi tôi cố gắng để gửi một cấu trúc tương tự từ bot, tôi nhận được một lỗi: (#100) Unsupported attachment type

Có cách nào để gửi vị trí của tôi từ bot?

Ví dụ về nhận được tin nhắn để bot:

{ 
    "object": "page", 
    "entry": [{ 
     "id": "1719442148306048", 
     "time": 1466780344978, 
     "messaging": [{ 
      "sender": {"id": "123456789"}, 
      "recipient": {"id": "987654321"}, 
      "timestamp": 1466780344847, 
      "message": { 
       "mid": "mid.12345698875:c80066d69b6cee1779", 
       "seq": 65, 
       "attachments": [{ 
        "title": "Dmitry's Location", 
        "url": "Link to bing.com through facebook redirect" 
        "type": "location", 
        "payload": {"coordinates": {"lat": 55, "long": 37}} 
       }] 
      } 
     }] 
    }] 
} 

tôi cố gắng gửi tin nhắn với file đính kèm như thế này:

   "attachment": { 
        "type": "location", 
        "payload": {"coordinates": {"lat": 55, "long": 37}} 
       } 
+1

Bạn có thể cho chúng tôi thấy [mcve] đại diện cho cách bạn gửi thư với dữ liệu vị trí còn nguyên vẹn không? – gravity

+1

Có. Tôi đã chỉnh sửa câu hỏi. – Dmitry

+0

'" tệp đính kèm "' là một mảng trong JSON. Lưu ý '[' và ']' đóng gói tất cả dữ liệu ('loại' và' tải trọng')? Hãy thử thêm các dấu ngoặc '[]' để chỉ ra sự bắt đầu và kết thúc của 'phần đính kèm' và cho chúng tôi biết nếu điều đó giải quyết được không? – gravity

Trả lời

19

Có workaround. Chúng tôi có thể gửi mẫu chung với hình ảnh bản đồ tĩnh và url đến động. Đối với ứng dụng bản đồ iOS, chúng tôi có thể sử dụng địa chỉ http://maps.apple.com/maps (chuyển hướng tất cả người dùng iOS không đến Google Maps có cùng thông số). Trên Android, ứng dụng này sẽ mở ứng dụng Google Maps.

{ 
    "recipient": {"id": "132456"}, 
    "message": { 
     "attachment": { 
      "type": "template", 
      "payload": { 
       "template_type": "generic", 
       "elements": { 
        "element": { 
         "title": "Your current location", 
         "image_url": "https:\/\/maps.googleapis.com\/maps\/api\/staticmap?size=764x400&center="+lat+","+long+"&zoom=25&markers="+lat+","+long, 
         "item_url": "http:\/\/maps.apple.com\/maps?q="+lat+","+long+"&z=16" 
        } 
       } 
      } 
     } 
    } 
} 
2

Dmitry, cảm ơn vì đã hack! FB API đã thay đổi một chút, dưới đây là những gì đã làm việc cho tôi trong phần tải trọng:

payload = dict() 
    payload['type'] = 'template' 
    payload['text'] = dict(
     template_type="generic", 
     elements=[ 
      dict(
       title='{venue} location', 
       # subtitle='Test', 
       image_url="https://maps.googleapis.com/maps/api/staticmap?size=764x400&center=" + lat + "," + long + 
          "&zoom=15&markers=" + lat + "," + long, 
       default_action=dict(
        type="web_url", 
        url="http://maps.apple.com/maps?q=" + venue + "&ll=" + lat + "," + long + 
         "&z=15" 
       ) 
      ) # buttons=[]) 
     ] 
    ) 
+0

cảm ơn .. cho những người đang tìm kiếm các ví dụ Java, có một mã nguồn mở java sdk cho facebook api, được đặt tên là restfb. Và trong restfb, bạn có thể sử dụng đối tượng GenericItemPayload, có thể chứa Bubbles. Và mỗi Bubble có thể chứa - image_url, item_url và title. –

Các vấn đề liên quan