Send-to-messenger插件没有显示

时间:2018-05-18 16:29:41

标签: facebook facebook-javascript-sdk facebook-messenger messenger facebook-messenger-bot

我的Send-to-messenger插件未出现在我的网站上。 这是我的配置:

<script>
window.fbAsyncInit = function() {
FB.init({
  appId            : 'xxxxx',
  autoLogAppEvents : true,
  xfbml            : true,
  version          : 'v3.0'
});
};

(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 = "https://connect.facebook.net/en_US/sdk.js";
 fjs.parentNode.insertBefore(js, fjs);
 }(document, 'script', 'facebook-jssdk'));
</script>

<div class="fb-send-to-messenger"
  messenger_app_id="xxxxx"
  page_id="vvvvv"
  color="blue"
  size="large">
</div>

此代码在此页面上生成的html:https://www.weekendr.eu/bonsplans似乎没问题,但按钮仍然无法显示。

可能会有所帮助的一些因素:

  • 我在prod env
  • 我的网站有https:https://www.weekendr.eu
  • 我的应用已发布并在线
  • 我管理员并连接到FB
  • 我允许第三方Cookie

谢谢!

3 个答案:

答案 0 :(得分:2)

我可以看到您的代码,发现您缺少订阅事件。

FB.Event.subscribe('send_to_messenger', function(e) {
      // callback for events triggered by the plugin
});

请在下面找到完整的代码:

  <script>
  window.fbAsyncInit = function() {
    FB.init({
      xfbml            : true,
      version          : 'v3.2'
    });

      FB.Event.subscribe('send_to_messenger', function(e) {
      // callback for events triggered by the plugin
            console.log(e);
      });
  };

  (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 = 'https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js';
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>


<div class="fb-send-to-messenger" 
  messenger_app_id="<Your App ID>" 
  page_id="<Your Page ID>" 
  data-ref="1" 
  color="blue" 
  size="large">
</div>

此外,在编写上述代码之前,您需要按照以下步骤操作:

1)将您的域添加到白名单(转到您的Facebook页面->设置) 2)在服务器中创建webhook并编写以下代码(代码为PHP。可以使用任何语言) 对于节点js:https://developers.facebook.com/docs/messenger-platform/getting-started/webhook-setup

<?php


    if($_SERVER["REQUEST_METHOD"] == "POST") {
        //Write code to listen webhook request

    } else {
        $VERIFY_TOKEN = '1234';
        $mode = $_REQUEST['hub_mode'];
        $token = $_REQUEST['hub_verify_token'];
        $challenge = $_REQUEST['hub_challenge'];

        if ($mode && $token) {

            // Checks the mode and token sent is correct
            if ($mode === 'subscribe' && $token === $VERIFY_TOKEN) {

                // Responds with the challenge token from the request
                console.log('WEBHOOK_VERIFIED');
                echo $challenge;
                http_response_code(200); 

            } else {
                // Responds with '403 Forbidden' if verify tokens do not match
                http_response_code(403); 
            }
        } else {
            http_response_code(403); 
        }
    }
?>

3)转到应用程序设置并验证您的网络挂钩 设置网址:

https://developers.facebook.com/apps/<Your App ID>/messenger/settings/

现在您应该可以查看“发送到Messenger”按钮

注意:如果应用正在开发中,则管理员,开发人员和测试人员只能看到此按钮。

答案 1 :(得分:0)

您需要在您网页的Messenger个人资料中将您的域(https://www.weekendr.eu)列入白名单:

https://developers.facebook.com/docs/messenger-platform/reference/messenger-profile-api/domain-whitelisting

我假设您正在用您的实际应用ID和网页ID替换所有xxx和vvv。

答案 2 :(得分:0)

就我而言,问题是因为我的广告拦截器(uBlock)阻止了对Facebook的呼叫。禁用uBlock可以解决问题。