我将用户从信使聊天发送到我的应用程序中的付款页面。 Messenger在Webview中打开页面。 现在我想关闭webview并将用户发送回Messenger,同时还向webhook发送内容以通知用户已完成付款页面。
实现这一目标的最佳方法是什么?
答案 0 :(得分:-1)
如果付款页面受到控制(由您开发),您只能实现此目的,如果它是第三方付款网关,您无能为力。如果付款页面由您控制,您可以通过web_url将发件人ID作为参数传递或通过
获取发件人ID<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
MessengerExtensions.getUserID(function success(uids) {
var psid = uids.psid;//This is your page scoped sender_id
alert(psid);
}, function error(err) {
alert("Messenger Extension Error: " + err);
});
};
</script>
使用发件人ID,您可以将消息文本发送回机器人。 在发送完毕后包含此脚本之后关闭webview 文本到机器人
<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
//close the webview
MessengerExtensions.requestCloseBrowser(function success() {
}, function error(err) {
});
};
</script>
就像在您的Bot中一样,您必须确保在发送文本之前页面访问令牌可用,同时确保您将webview中使用的域列入白名单并设置&#34; messenger_extensions&#34;:true ,在您的web_url按钮中,或者您无法使用信使扩展程序获取发件人ID
引用