Search code examples
javascriptfacebookfacebook-messenger-bot

Messenger sharing causes "Messenger Extensions unexpected error"


I'm trying to perform a share with the beginShareFlow()function of the facebook MessengerExtensions. However, when performing the call, I get following error message:

Messenger Extensions unexpected error.

The code for this error is 2018154.

I'm using following code to start a share:

ajax.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log(this.responseText);
        var message = JSON.parse(this.responseText);
        MessengerExtensions.beginShareFlow(function(share_response) {
            if(share_response.is_sent){
                // close the window w/ requestCloseBrowser().
            }
        }, 
        function(errorCode, errorMessage) {      
            console.log(errorCode+"-"+errorMessage);
        },
        message,
        "current_thread");
    }
}

You'll see that I'm using the response of an ajax call to fill up the actual message. This is generated by some backend php code, an example:

{"attachment":{"type":"template","payload":{"template_type":"generic","sharable":"true","elements":[{"title":"Kerk Poederlee","image_url":"https:\/\/www.wouterh.be\/pogo\/static\/images\/raid.jpg","subtitle":"joining at 1535629500","default_action":{"type":"web_url","url":"https:\/\/www.wouterh.be\/pogo"},"buttons":[{"type":"web_url","url":"https:\/\/www.wouterh.be\/pogo","title":"join raid"}]}]}}}

Messenger extension themselves have been loaded correctly, since I'm able to retrieve the PSID with following code:

window.extAsyncInit = function() {
    MessengerExtensions.getContext('APPID', 
        function success(thread_context){
            fb_user_id = thread_context.psid;
        },
        function error(err){}
    );   
};

This error occurs on a web client and on the most recent iOS messenger. When I send the exact same message through the Send API instead of the sharing messenger extensions, it works perfectly. Could somebody help me figure out what's causing the error?


Solution

  • I found the mistake, in the message you can pass a 'sharable' property. I passed the string value "true" to it, but this should be a boolean value.

    This is the corrected content:

    {
        "attachment": {
            "type": "template",
            "payload": {
                "template_type": "generic",
                "sharable": true,
                "elements": [{
                    "title": "Kerk Poederlee",
                    "image_url": "https:\/\/www.wouterh.be\/pogo\/static\/images\/raid.jpg",
                    "subtitle": "joining at 1535629500",
                    "default_action": {
                        "type": "web_url",
                        "url": "https:\/\/www.wouterh.be\/pogo"
                    },
                    "buttons": [{
                        "type": "web_url",
                        "url": "https:\/\/www.wouterh.be\/pogo",
                        "title": "join raid"
                    }]
                }]
            }
        }
    }