facebook messenger - 关闭webview并通知webhook

时间:2017-04-07 13:45:57

标签: facebook messenger

我将用户从信使聊天发送到我的应用程序中的付款页面。 Messenger在Webview中打开页面。 现在我想关闭webview并将用户发送回Messenger,同时还向webhook发送内容以通知用户已完成付款页面。

实现这一目标的最佳方法是什么?

1 个答案:

答案 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

引用

url button

messenger extension