2016-06-24 11 views
9

C'è un modo per inviare la mia posizione a facebook-messenger da un client mobile, ma come posso inviare qualche posizione da un bot? (Piattaforma api messaggero)Come inviare la posizione dalla piattaforma di messaggistica di Facebook?

Quando provo a trasmettere una struttura simile da bot, ottengo un errore: (#100) Unsupported attachment type

C'è un modo per inviare la mia posizione da bot?

Esempio di messaggio ricevuto al 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}} 
       }] 
      } 
     }] 
    }] 
} 

provo inviare il messaggio con allegato in questo modo:

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

ci mostri un [MCVE] che rappresenta il modo in cui si sta inviando il messaggio con i dati di localizzazione intatti? – gravity

+1

Sì. Ho modificato la domanda. – Dmitry

+0

'" attachment "' è una matrice all'interno di JSON. Si noti che '[' e ']' incapsulano tutti i dati ('type' e' payload')? Prova ad aggiungere le parentesi "[]" per indicare l'inizio e la fine di 'attachment' e facci sapere se è stato risolto? – gravity

risposta

19

c'è soluzione. Possiamo inviare un modello generico con immagine della mappa statica e url dinamico. Per l'app della mappa nativa iOS è possibile utilizzare l'indirizzo http://maps.apple.com/maps (che reindirizza tutti gli utenti non iOS a Google Maps con gli stessi parametri). Su Android apre l'app 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, grazie per l'hack! FB API è leggermente cambiata, ecco cosa ha funzionato per me nella sezione di payload:

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

grazie .. per chi è alla ricerca di esempi Java, c'è un sdk java open source per le API di facebook, che è chiamato come restfb. E all'interno di restfb, puoi usare l'oggetto GenericItemPayload, che può contenere Bubbles. E ogni Bubble può contenere- image_url, item_url e title. –

Problemi correlati