如何在Nuxt、Vue中实现Facebook Messenger客户聊天SDK?

How to implement Facebook Messenger customer chat SDK in Nuxt, Vue?

我在我的 Nuxt 应用程序中使用 Facebook Messenger 客户聊天 SDK 进行此实施。

解决方案 1(有效 0%):
我尝试了 https://www.npmjs.com/package/vue-fb-customer-chat 包,但没有用,包的站点本身已关闭 -.-!我将其导入并将其用作插件等,我完全按照指示,我什至尝试使用<VueFbCustomerChat /><vue-fb-customer-chat />作为额外的,但似乎没有任何效果!

解决方案 2(有效 50%):
此外,我尝试通过创建一个名为 fb-sdk.js 的静态文件将其用作静态文件并成功部署它:

window.fbAsyncInit = function() {
  FB.init({
    xfbml: true,
    version: "v6.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/xfbml.customerchat.js"
  fjs.parentNode.insertBefore(js, fjs)
})(document, "script", "facebook-jssdk")

但是我开始使用它聊天时遇到了这个错误:

ErrorUtils caught an error:

a.substr is not a function. [Caught in: React reported an error]

Subsequent errors won't be logged; see https://fburl.com/debugjs.

聊天框出现然后消失,然后就不能点击了@@

所以请帮我把Facebook Messenger客户聊天SDK添加到NuxtJS中,有包吗?分步教程?

https://www.npmjs.com/package/vue-fb-customer-chat 有效,但 URL 页面必须是 https,因此它只能在生产模式下工作。

您可能还需要在页面消息设置中将您的网站域列入白名单。

要做到这一点,请遵循此 link https://developers.facebook.com/docs/messenger-platform/discovery/facebook-chat-plugin/

FWIW,这是我在 Nuxt 中实现它而没有安装 3rd 方包的方法,它正在工作。

您的 default.vue 布局:

...

<div id="fb-root"></div>
<div id="fb-customer-chat" class="fb-customerchat"></div>

...

您的 nuxt.config.js(这是 Facebook 要求您插入的脚本,因此请根据您自己的说明进行复制):

...

script: [
  {
    type: 'text/javascript',
    hid: 'fb-customer-chat',
    body: true,
    innerHTML: `
      var chatbox = document.getElementById('fb-customer-chat');
      chatbox.setAttribute("page_id", YOUR_PAGE_ID);
      chatbox.setAttribute("attribution", "biz_inbox");

      window.fbAsyncInit = function() {
        FB.init({
          xfbml            : true,
          version          : 'v11.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/xfbml.customerchat.js';
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));`
  },
],
__dangerouslyDisableSanitizersByTagID: { 'fb-customer-chat': ['innerHTML'] },

...

__dangerouslyDisableSanitizersByTagID 设置可确保 innerHTML 中带有 hid fb-customer-chat 的代码不会被清除。