botman / internals

Issues board used for BotMan internals discussions.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for Facebook Messenger `element_share`

johntiror opened this issue · comments

Botman should support the share_contents field for the button of type element_share.
Here's the facebook documentation: https://developers.facebook.com/docs/messenger-platform/reference/buttons/login#example_body
and here an example of the payload:

"buttons": [
    {
      "type": "element_share",
      "share_contents": { 
        "attachment": {
          "type": "template",
          "payload": {
            "template_type": "generic",
            "elements": [
              {
                "title": "I took Peter's 'Which Hat Are You?' Quiz",
                "subtitle": "My result: Fez",
                "image_url": "https://bot.peters-hats.com/img/hats/fez.jpg",
                "default_action": {
                  "type": "web_url",
                  "url": "http://m.me/petershats?ref=invited_by_24601"
                },
                "buttons": [
                  {
                    "type": "web_url",
                    "url": "http://m.me/petershats?ref=invited_by_24601", 
                    "title": "Take Quiz"
                  }
                ]
              }
            ]
          }
        }
      }
    }
  ]

I noticed a weird thing, this payload:

"message":{  
      "attachment":{  
         "type":"template",
         "payload":{  
            "template_type":"generic",
            "image_aspect_ratio":"square",
            "elements":[  
               {  
                  "title":"BotMan Documentation",
                  "image_url":"http:\/\/botman.io\/img\/botman-body.png",
                  "item_url":null,
                  "subtitle":"All about BotMan",
                  "buttons":[  
                     {  
                        "type":"web_url",
                        "title":"visit",
                        "url":"http:\/\/botman.io",
                        "webview_height_ratio":"full",
                        "webview_share_button":"SHOW"
                     },
                     {  
                        "type":"element_share",
                        "share_contents":{  
                           "attachment":{  
                              "type":"template",
                              "payload":{  
                                 "template_type":"generic",
                                 "image_aspect_ratio":"horizontal",
                                 "elements":[  
                                    {  
                                       "title":"prova",
                                       "image_url":null,
                                       "item_url":null,
                                       "subtitle":null,
                                       "buttons":[  
                                          {  
                                             "type":"web_url",
                                             "title":"lol",
                                             "url":"http:\/\/www.pixide.org",
                                             "webview_height_ratio":"full",
                                             "webview_share_button":"SHOW"
                                          }
                                       ]
                                    }
                                 ]
                              }
                           }
                        }
                     }
                  ]
               }
            ]
         }
      }
   }

will fail with error from Facebook:

{
    "error": {
        "message": "(#-1) Unexpected internal error",
        "type": "OAuthException",
        "code": -1,
        "error_subcode": 2018012,
        "fbtrace_id": "GK8i7G5+KhA"
    }
}

while this payload will work:


{  
   "message":{  
      "attachment":{  
         "type":"template",
         "payload":{  
            "template_type":"generic",
            "image_aspect_ratio":"square",
            "elements":[  
               {  
                  "title":"BotMan Documentation",
                  "image_url":"http:\/\/botman.io\/img\/botman-body.png",
                  "item_url":null,
                  "subtitle":"All about BotMan",
                  "buttons":[  
                     {  
                        "type":"web_url",
                        "title":"visit",
                        "url":"http:\/\/botman.io",
                        "webview_height_ratio":"full",
                        "webview_share_button":"SHOW"
                     },
                     {  
                        "type":"element_share",
                        "share_contents":{  
                           "attachment":{  
                              "type":"template",
                              "payload":{  
                                 "template_type":"generic",
                                 "image_aspect_ratio":"horizontal",
                                 "elements":[  
                                    {  
                                       "title":"prova",
                                       "image_url":null,
                                       "item_url":null,
                                       "subtitle":null,
                                       "buttons":[  
                                          {  
                                             "type":"web_url",
                                             "title":"lol",
                                             "url":"http:\/\/www.pixide.org",
                                             "webview_height_ratio":"full"
                                          }
                                       ]
                                    }
                                 ]
                              }
                           }
                        }
                     }
                  ]
               }
            ]
         }
      }
   }
}

where the difference is in the presence of webview_share_button field.