как вызвать MessengerExtensions.requestCloseBrowser из файла .js вместо файла ejs?

Я работаю над чат-ботом, в котором использовал webview в node.js.

У меня есть форма обратной связи, которую должен отправить пользователь.

Я добавил расширения мессенджера SDK в файл feeback.ejs. Следующим образом:

<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 = function() {
            // the Messenger Extensions JS SDK is done loading 
            var isSupported = MessengerExtensions.isInExtension(); 

            MessengerExtensions.getContext('************', 
                function success(result){

                document.getElementById("psidid").value = result.psid;
                },
                function error(result){
                //alert("json str "+JSON.stringify(result));
                }
            )

        };


    </script>

Я также могу получить psid. В форме обратной связи в почтовом действии я вызываю функцию в файле js.

eg :

<form method="post" action="/feeback/submit">

    <table cellpadding="11">

        <tr>
        <td class="label">First Name</td><td>: <input type="text" name="fname" required></td>
        </tr>
        <tr>
        <td class="label">Last Name</td><td>: <input type="text" name="lname" required></td>
        </tr>
    </table>
    </form>

В файле app.js:

app.post('/feeback/submit', feedback.submit);

Я вызываю функцию отправки в файле feedback.js:

В функции я сохраняю данные формы для пользователя, и я должен иметь возможность закрыть веб-просмотр также при успешном сохранении данных.

Как я могу этого добиться?

Я использовал метод ниже, но получаю сообщение об ошибке MessengerExtensions is npt:

MessengerExtensions.requestCloseBrowser(function success() {
    // webview closed
    user.doDataResponse(psid, message);
}, function error(err) {
  // an error occurred
});

Благодарю за помощь...!


person FMBot Dev    schedule 08.11.2017    source источник


Ответы (1)


Messenger Extensions — это SDK на стороне клиента. Вы не можете вызвать его из кода на стороне сервера.

На стороне клиента вы можете вызвать его, когда запускается событие отправки, или реализовать свою форму с помощью XHR вместо отправки формы, а затем вызвать ее, когда вы получите ответ от /feeback/submit.

person amuramoto    schedule 10.11.2017
comment
Спасибо, попробую. - person FMBot Dev; 17.11.2017