2016-06-24 18 views
9

Istnieje sposób na wysłanie mojej lokalizacji do facebook-messenger od klienta mobilnego, ale jak mogę wysłać lokalizację z bota? (Messenger platforma API)Jak wysłać lokalizację z platformy Facebook messenger?

Gdy próbuję wysłać podobną strukturę z bota, otrzymuję błąd: (#100) Unsupported attachment type

Czy istnieje sposób, aby wysłać moją lokalizację z bota?

Przykład odebranej wiadomości do bota:

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

próbuję wysłać wiadomość z załącznikiem tak:

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

można pokazać nam [mcve], który stanowi sposób wysyłasz wiadomość z danymi lokalizacji nienaruszone? – gravity

+1

Tak. Edytowałem pytanie. – Dmitry

+0

'" załącznik "' jest tablicą wewnątrz JSON. Zwróć uwagę na '[' i ']' enkapsulacji wszystkich danych ('type' i' payload')? Spróbuj dodać nawiasy '[]', aby wskazać początek i koniec 'załącznika' i daj nam znać, czy to rozwiązało? – gravity

Odpowiedz

19

Istnieje obejście. Możemy wysłać ogólny szablon ze statycznym obrazem mapy i adresem URL do dynamicznego. W przypadku natywnej aplikacji mapy iOS możemy użyć adresu http://maps.apple.com/maps (który przekierowuje wszystkich użytkowników non-iOS do serwisu Mapy Google z tymi samymi parametrami). Na Androidzie otwiera aplikację Mapy Google.

{ 
    "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, dzięki za hack! FB API nieznacznie zmienione, oto co pracował dla mnie w sekcji ładunku:

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

dzięki .. dla tych, którzy szukają przykładów Java, istnieje open source java sdk dla facebook api, który jest nazwany jako restfb. W ramach reszty można użyć obiektu GenericItemPayload, który może zawierać Bubbles. A każda Bańka może zawierać image_url, item_url i title. –

Powiązane problemy