Facebook обмен сообщениями current_thread не возвращает PSID - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь отправить запрос через Facebook MessengerExtensions.beginShareFlow ().Я попытался отправить этот API, чтобы он перенаправлял на новую страницу, называемую расписаниями.

var messageToShare = {
  "attachment":{
    "type":"template",
    "payload":{
      "template_type":"generic",
      "elements": [{
        "title":"Garfield is going to the cinema",
        "image_url": "https://webhookboi.herokuapp.com/schedule",
        "subtitle": "You have been invited to join them, let them know when you are free",
        "default_action": {
              "type": "web_url",
              "url": "https://webhookboi.herokuapp.com/schedule",
              "messenger_extensions": "true",
              "webview_height_ratio": "full",
              "fallback_url": "https://webhookboi.herokuapp.com/schedule"
            },
        "buttons":[{
          "type":"web_url",
          "url":"https://webhookboi.herokuapp.com/schedule",
          "title":"Select Times",
          "messenger_extensions": "true"
        }]
      }]
    }
  }
};

, и это beginShareFlow (), заключенный в слушателе кнопки отправки

document.getElementById('submitButton').addEventListener('click', () => {

            MessengerExtensions.beginShareFlow(function success(response) {
              if(response.is_sent === true){
                // User shared. We're done here!
                MessengerExtensions.requestCloseBrowser();
              }
              else{
                // User canceled their share!
                MessengerExtensions.requestCloseBrowser();
              }
            },
            function error(errorCode, errorMessage) {
            // An error occurred trying to share!
            },
            messageToShare,
            "current_thread");


        });

Запрос будетзатем перехватите их в основном javascript

app.get('/schedule', (req, res, next) => {
    let referer = req.get('Referer');
    if (referer) {
        if (referer.indexOf('www.messenger.com') >= 0) {
            res.setHeader('X-Frame-Options', 'ALLOW-FROM https://www.messenger.com/');
        } else if (referer.indexOf('www.facebook.com') >= 0) {
            res.setHeader('X-Frame-Options', 'ALLOW-FROM https://www.facebook.com/');
        }
        res.sendFile('public/schedule.html', {root: __dirname});
    }
});

app.get('/schedulepostback', (req, res) => {
    let body = req.query;
    let response = {
        "text": `Great, you have agreed to watch on ${body.dates} in the ${body.times} at ${body.locations} `
    };


    res.status(200).send('Please close this window to return to the conversation thread.');
    callSendAPI(body.psid, response);
});

Вот основная проблема, во фрагменте ниже я попытался снова вызвать поток psid, но он так и не появился.

<html>
<head>
    <title>Set your Schedule</title>
</head>
<body>
<script>
    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {
            return;
        }
        js = d.createElement(s);
        js.id = id;
        js.src = "//connect.facebook.com/en_US/messenger.Extensions.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'Messenger'));
    window.extAsyncInit = () => {
        // TODO: How to parse env file from here?
        MessengerExtensions.getSupportedFeatures(function success(result) {
            let features = result.supported_features;
            if (features.includes("context")) {
                MessengerExtensions.getContext(INPUTED_APP_ID_HERE,
                    function success(thread_context) {
                        // success
                        document.getElementById("psid").value = thread_context.psid;
                        document.getElementById("tid").value = thread_context.tid;
                        
                    },
                    function error(err) {
                        // error
                        console.log(err);
                    }
                );
            }
        },
         function error(err) {
            // error retrieving supported features
            console.log(err);
        });



        var messageToShare = {
            "text": `Your friend requested to watch on`.document.querySelector('input[name="dates"]:checked').value.'in the'.document.querySelector('input[name="times"]:checked').value.'at'.document.querySelector('input[name="locations"]:checked').value
};



        document.getElementById('submitButton').addEventListener('click', () => {

            MessengerExtensions.beginShareFlow(function success(response) {
              if(response.is_sent === true){
              	// User shared. We're done here!
              	MessengerExtensions.requestCloseBrowser();
              }
              else{
              	// User canceled their share!
                MessengerExtensions.requestCloseBrowser();
              }
            },
            function error(errorCode, errorMessage) {
          	// An error occurred trying to share!
            },
            messageToShare,
            "current_thread");


        });
    };
</script>
<form action="/schedulepostback" method="get">
    <input type="text" name="psid" id="psid">
    <input type="text" name="tid" id="tid">
    <h3>Date</h3>
    <input type="radio" name="dates" value="3 April" checked>3 April<br>
    <input type="radio" name="dates" value="4 April">4 April<br>
    <input type="radio" name="dates" value="5 April">5 April<br>
    <input type="radio" name="dates" value="6 April">6 April<br>
    <input type="radio" name="dates" value="7 April">7 April<br>
    <h3>Time</h3>
    <input type="radio" name="times" value="Daytime" checked>Daytime<br>
    <input type="radio" name="times" value="Evening">Evening<br>
    <h3>Location</h3>
    <input type="radio" name="locations" value="Munich" checked>Munich<br>
    <input type="radio" name="locations" value="Berlin">Berlin<br>
    <input type="radio" name="locations" value="Dusseldorf">Dusseldorf<br>
    <input type="submit" value="Submit" id="submitButton">
</form>
</body>
</html>

Это из-за моего типа шаблона?или что-то другое?Любая помощь будет оценена.

РЕДАКТИРОВАТЬ

Если я нажму на расширение чата, все будет работать нормально, и расширение мессенджера будет работать, что приводит к обратной передаче чата.

result of the chat extension postback

Однако, когда я нажимаю кнопку «Выбрать время» на обратной передаче, появляется psid doest.Три верхних бара должны были отображать psid, tid и object.Это также появилось не в X-Frame, а в новой вкладке.Любая помощь здесь?

the result of the select times button

...