2016-06-24 8 views
9

Есть способ отправить мое местоположение в facebook-messenger от мобильного клиента, но как я могу отправить какое-то местоположение от бота? (Мессенджер платформа апи)Как отправить местоположение на платформе Facebook Messenger?

Когда я пытаюсь послать подобную структуру от бота, я получаю сообщение об ошибке: (#100) Unsupported attachment type

Есть ли способ, чтобы отправить свое местоположение от бота?

Пример полученного сообщения для бота:

{ 
    "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}} 
       }] 
      } 
     }] 
    }] 
} 

Я пытаюсь отправить сообщение с вложением, как это:

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

Можете ли вы показать нам [mcve], который представляет собой путь вы посылаете сообщение с данные о местоположении нетронутыми? – gravity

+1

Да. Я редактировал вопрос. – Dmitry

+0

'" attachment "' - массив в JSON. Обратите внимание на '[' и ']' инкапсуляцию всех данных ('type' и' payload')? Попробуйте добавить «[]» скобки, чтобы указать начало и конец «привязанности», и сообщите нам, если это разрешило это? – gravity

ответ

19

Существует обходной путь. Мы можем отправить общий шаблон со статическим изображением карты и URL-адресом для динамического. Для iOS родной карты мы можем использовать адрес http://maps.apple.com/maps (который перенаправляет всех пользователей без iOS на Карты Google с теми же параметрами). На Android открывается приложение 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

Дмитрий, спасибо за взлома! FB API немного изменился, вот что работает для меня в разделе полезной нагрузки:

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

спасибо .. для тех, кто ищет примеры Java, есть java sdk с открытым исходным кодом для facebook api, который называется restfb. И в restfb вы можете использовать объект GenericItemPayload, который может содержать Bubbles. И каждый Bubble может содержать-image_url, item_url и заголовок. –