【问题标题】:how to call MessengerExtensions.requestCloseBrowser from .js file instead of an ejs file?如何从 .js 文件而不是 ejs 文件调用 MessengerExtensions.requestCloseBrowser?
【发布时间】:2017-11-08 10:43:33
【问题描述】:

我正在开发一个 chatbot,我在 node.js

中使用了 webview

我有一个用户要提交的反馈表。

我在 feeback.ejs 文件中添加了 messenger 扩展 sdk。通过以下方式:

<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。在 post action 的反馈表中,我在 js 文件中调用了一个函数。

例如:

<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 文件中调用提交函数:

在函数中,我将表单数据保存给用户,我应该能够在成功保存数据后关闭 webview。

我怎样才能实现它?

我使用了以下方法,但我得到 MessengerExtensions is npt defined 错误:

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

感谢帮助...!

【问题讨论】:

    标签: javascript node.js dialogflow-es messenger facebook-messenger-bot


    【解决方案1】:

    Messenger Extensions 是一个客户端 SDK。您不能从服务器端代码调用它。

    在客户端,您可以在提交事件被触发时调用它,或者使用 XHR 而不是表单提交来实现您的表单,然后在收到来自 /feeback/submit 的响应时调用它。

    【讨论】:

    • 谢谢,会试试的。
    猜你喜欢
    • 2018-08-20
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 2018-03-24
    相关资源
    最近更新 更多