聊天插件

从 2024 年 5 月 9 日起,您将无法再使用聊天插件的任何功能。即刻起,聊天插件访客模式将不再可用。您仍然可以使用 m.me 链接等其他功能。

本文档展示如何通过编程方式将聊天插件添加到您的网站版 Messenger 体验中。

如果您想使用 Meta Business Suite 将聊天插件添加到您的网页(推荐做法),请访问 Meta Business 帮助中心,了解更多信息。

运作方式

在您的网页上安装 JavaScript 版 Facebook SDK 后,该网页便会显示聊天插件。桌面端和移动端将默认显示问候对话框,用户可点击关闭按钮将此框最小化。您可以自定义此插件的问候语、外观(如颜色)和消息体验(如菜单和快速回复)。无论问候对话框的状态是最大化还是最小化,系统都会予以缓存,即使切换会话,该状态也会保持不变。

登录

如果用户已登录 Facebook,则聊天插件会显示“以 [姓名] 的身份继续”和“以访客身份继续”按钮。如果用户未登录 Facebook,则该插件将显示“登录 Messenger”和“以访客身份继续”按钮。

Webhooks 通知

用户点击聊天插件发起或继续与您商家的聊天时,系统会向您的服务器发送 Webhooks 通知,其中包含以下内容:

  • 与此用户相关的信息,如公共主页范围编号 (PSID) 或用户参考编号
  • 将消息来源标记为聊天插件
  • 已包含在通知中的推荐信息

如果您在聊天插件中实现了欢迎画面 ,当用户点击“开始”按钮发起与您商家的对话,系统会向您的服务器发送 messaging_postbacks Webhooks 通知。之后,您的商家便可以使用用户参考编号在 24 小时标准消息时间范围内向该用户发送消息。

已有对话

如果此用户与您的商家间已有对话,则聊天插件会自动加载相关聊天记录。当用户通过发送消息、点击按钮或采取您已在对话中实现的某个其他操作来继续对话时,系统会向您的服务器发送 messaging Webhooks 通知;如果您在通知中加入了推荐信息,则在此情况下系统会发送 messaging_referral Webhooks 通知。之后,您的商家便可使用 PSID 在 24 小时标准消息时间范围内向此用户发送消息。

聊天插件支持以下消息类型:

  • 音频、视频、图片和动图
  • “通话”按钮
  • 固定菜单
  • “回传”按钮
  • 发件人操作
  • 文本消息
  • 文本快速回复
  • “网址”按钮
  • 用户邮箱快速回复
  • 用户手机号快速回复

聊天插件不支持以下消息类型:

  • “购买”按钮
  • “玩游戏”按钮
  • 清单、媒体或开放图谱模板
  • 位置快速回复
  • “登录”按钮
  • “退出”按钮
  • Messenger 应用内浏览器
  • “分享”按钮

准备工作

本指南假设您已经查看 Messenger 开放平台概览,并且已经实现发送和接收消息和通知所需的组件。

您将需要:

  • pages_messaging 权限
  • 由可以在您的 Facebook 公共主页上执行 MODERATE 任务的用户请求的公共主页访问口令
  • 与您的 Facebook 公共主页关联的应用需要订阅 messagingmessaging_postbacksmessaging_referrals Webhooks 字段
  • 使用 Messenger 个人主页 API 或 Meta Business Suite 将您网站的网域加入白名单

使用聊天插件也需遵守 Meta 业务工具条款

限制

  • 您必须先发布网站或将其加入白名单,才能成功实现聊天插件
  • 如果您在公共主页设置中为公司的 Facebook 公共主页设置了年龄或国家/地区限制,未登录 Facebook 账户的用户访问您的网站时,系统不会显示聊天插件。
  • Safari 12 及更高版本和 Firefox 浏览器不会缓存问候对话框

添加聊天插件

第 1 步:添加 SDK

为要显示插件的每个网页添加 JavaScript 版 Facebook SDK。

<!-- Messenger Chat Plugin Code --> <div id="fb-root"></div> <div id="fb-customer-chat" class="fb-customerchat"></div> <script> var chatbox = document.getElementById('fb-customer-chat'); chatbox.setAttribute("page_id", "PAGE-ID"); chatbox.setAttribute("attribution", "biz_inbox"); </script> <script> window.fbAsyncInit = function() { FB.init({ xfbml : true, version : 'API-VERSION' }); }; (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> 

第 2 步:自定义插件

使用 API

/PAGE-ID/chat_plugin 端点发送 POST 请求,以定制插件的问候语、颜色和图标等。

请求示例

为方便阅读,示例格式已经过调整。
curl -i -X POST "https://graph.facebook.com/v19.0/PAGE-ID/chat_plugin
    ?welcome_screen_greeting:YOUR-WELCOME-TEXT
    &theme_color:553399
    &entry_point_icon:MESSENGER-ICON
    &entry_point_label:CHAT
    &access_token=PAGE-ACCESS-TOKEN"

请参阅聊天插件参考文档 ,进一步了解可用于自定义插件的字段。

使用 HTML 属性

我们建议,开发者仅在无法通过公共主页设置中的设置工具或 API 完成自定义操作时,才使用此方法。

属性描述

theme_color

可选。插件使用的主题颜色,包括聊天插件图标和用户发送的任何消息的背景颜色。支持任何带前导数字符号的十六进制颜色代码(如 #0084FF),白色除外。强烈建议您选择与白色形成鲜明对比的颜色。

logged_in_greeting

可选。要对当前已登录 Facebook 的用户显示的问候语。不超过 80 个字符。

logged_out_greeting

可选。要对当前未登录 Facebook 的用户显示的问候语。不超过 80 个字符。

greeting_dialog_display

可选。设置插件与问候对话框的显示方式。支持下列值:


  • show:经过 greeting_dialog_delay 属性中设置的秒数后,欢迎对话框将在桌面端和移动端显示,并保持开启状态。
  • fade:经过 greeting_dialog_delay 属性中设置的秒数后,欢迎对话框将在桌面端短暂显示,之后便会淡出并隐藏。
  • hide:欢迎对话框将处于隐藏状态,当用户在桌面端和移动端点击插件时才会显示。欢迎语将显示在图标旁。
  • icon:欢迎对话框将处于隐藏状态,当用户在桌面端和移动端点击插件时才会显示。不会显示欢迎语。

桌面端和移动端的插件设置默认为 show。详情请参阅下方的缓存行为部分。

greeting_dialog_delay

可选。设置插件加载后延迟多少秒才显示问候对话框。您可使用此属性自定义欢迎对话框的显示时机。如果设置了 greeting_dialog_delay,但未设置 greeting_dialog_display,我们仍会在桌面端延迟显示欢迎对话框,但不会在移动端延迟显示。

ref

可选。如果想要在 Webhooks 事件中添加要传回的其他上下文,您可以传递一个可选的 ref 参数。此参数有许多用途,例如追踪用户发起对话时所在的页面、将用户导向智能助手中的特定内容或功能,或将 Messenger 用户与网站上的会话或账户进行连接。

Webhooks 通知

当用户向您的商家发送消息时,系统便会向您的服务器发送 Webhooks 通知。

已有对话

如果用户与您的商家间已有对话,当该用户在此类对话中发送消息时,系统便会发送 messaging Webhooks 通知。通知内容将包括该用户的公共主页范围编号和 tags 对象的 source 参数(设为 customer_chat_plugin)。

消息通知

{
    "object": "page",
    "entry": [
        {
            "id": "PAGE-ID",
            "time": 1559598624359,
            "messaging": [
                {
                    "sender": {
                        "id": "PSID"
                    },
                    "recipient": {
                        "id": "PAGE-ID"
                    },
                    "timestamp": 1559598623749,
                    "message": {
                        "tags": {
                            "source": "customer_chat_plugin"
                        },
                        "mid": "nhEqs_THGoYyAhpK93uNCrIfLZD...",
                        "text": "hello, from customer chat!"
                    }
                }
            ]
        }
    ]
}

消息推荐通知

如果您为聊天插件设置了 ref 属性,系统会向您的服务器发送 messaging_referrals Webhooks 通知。

{
    "object": "page",
    "entry": [
        {
            "id": "PAGE-ID",
            "time": 1559598385735,
            "messaging": [
                {
                    "recipient": {
                        "id": "PAGE-ID"
                    },
                    "timestamp": 1559598385735,
                    "sender": {
                        "user_ref":"USER-REFERENCE-ID"
                    },
                    "referral": {
                        "ref": "REF-PARAMETER-INFORMATION",
                        "source": "CUSTOMER_CHAT_PLUGIN",
                        "type": "OPEN_THREAD",
                        "referer_uri": "REFERRAL-URI"
                    }
                }
            ]
        }
    ]
}

新对话

如果用户在聊天插件的欢迎画面点击“开始”按钮发起对话,系统会发送 messaging_postbacks Webhooks 通知。

消息回传通知

{
    "object": "page",
    "entry": [
        {
            "id": "PAGE-ID",
            "time": 1559598624359,
            "messaging": [
                {
                    "sender": {
                        "user_ref": "USER-REFERENCE-ID"
                    },
                    "recipient": {
                        "id": "PAGE-ID"
                    },
                    "timestamp": 1559598623749,
                    "postback":{
                        "title": "TITLE-FOR-THE-CTA",  
                        "payload": "PAYLOAD-DEFINED-BY-CTA",
                        "referral": {
                            "ref": "ADDITIONAL-INFORMATION",
                            "source": "CUSTOMER_CHAT_PLUGIN",
                            "type": "OPEN_THREAD",
                    }
                }
            ]
        }
    ]
}

营销消息订阅请求

有关如何创建营销消息订阅请求,请访问我们的营销消息指南

限制

设置聊天插件的营销消息时,仅支持更新和优惠主题。

消息订阅通知

当用户订阅您商家的营销消息时,系统会向您的服务器发送 messaging_optins Webhooks 通知。

"object": "page",
    "entry": [
        {
            "id": "PAGE-ID",
            "time": TIMESTAMP,
            "messaging": [
                {
                    "recipient": {
                        "id": "PAGE-ID"
                    },
                    "timestamp": TIMESTAMP,
                    "optin": {
                        "type": "notification_messages",
                        "payload": "empty_payload",
                        "notification_messages_token": "NOTIFICATION-MESSAGE-TOKEN",
                        "notification_messages_frequency": "MESSAGE-FREQUENCY",
                        "topic": "NOTIFICATION-MESSAGE-TOPIC",
                        "token_expiry_timestamp": EXPIRATION-DATE-TIMESTAMP,
                        "ref": "ADDITIONAL-INFORMATION",
                        "user_token_status": "NOT_REFRESHED",
                        "notification_messages_status": "RESUME_NOTIFICATIONS"
                    }
                }
            ]
        }
    ]
}

您可以将 notification_messages_token 值设为 recipient 对象中的编号值,以向用户发送营销消息。

疑难问题解决方法

  • 无法显示...
    • 确保已将您的网域加入白名单
    • 确保已设置 Referrer-Policy 标头,以便发送来源网址
  • 聊天插件无法在 Firefox 上显示
    • 移除 Firefox Facebook 容器附加组件。
    • 只需关闭内容拦截功能(点击搜索栏中的灰色盾牌图标),此插件便会出现。

另请参阅