如何从 .js 文件而不是 ejs 文件调用 MessengerExtensions.requestCloseBrowser?
how to call MessengerExtensions.requestCloseBrowser from .js file instead of an ejs file?
我正在开发一个 chatbot,其中我在 node.js[= 中使用了 webview 42=]
我有一份反馈表要由用户提交。
我在 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 操作的反馈表中,我正在调用 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
});
感谢帮助...!
Messenger Extensions 是一个客户端 SDK。您不能从服务器端代码调用它。
在客户端,您可以在触发提交事件时调用它,或者使用 XHR 而不是表单提交来实现您的表单,然后在您从 /feeback/submit
收到响应时调用它。
我正在开发一个 chatbot,其中我在 node.js[= 中使用了 webview 42=]
我有一份反馈表要由用户提交。
我在 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 操作的反馈表中,我正在调用 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
});
感谢帮助...!
Messenger Extensions 是一个客户端 SDK。您不能从服务器端代码调用它。
在客户端,您可以在触发提交事件时调用它,或者使用 XHR 而不是表单提交来实现您的表单,然后在您从 /feeback/submit
收到响应时调用它。