web-dev-qa-db-ja.com

Facebookメッセンジャープラットフォームから場所を送信する方法は?

モバイルクライアントから自分の場所をfacebook-messengerに送信する方法はありますが、ボットから場所を送信するにはどうすればよいですか? (メッセンジャープラットフォームAPI)

ボットから同様の構造を送信しようとすると、エラーが発生します:(#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}}
               }
11
Dmitry

回避策があります。静的マップ画像とURLを含む汎用テンプレートを動的に送信できます。 iOSネイティブマップアプリの場合、アドレス http://maps.Apple.com/maps (iOS以外のすべてのユーザーを同じパラメーターでGoogleマップにリダイレクトします)を使用できます。 Androidで、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"
                    }
                }
            }
        }
    }
}
24
Dmitry

ドミトリー、ハックしてくれてありがとう! 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=[])
        ]
    )
4