本文档将向您介绍如何向用户请求权限以发送营销消息、有关发送请求的具体要求和限制,以及如何创建并发送营销消息权限请求。
消息频率
自 2023 年 1 月 31 日起,notification_messages_frequency
已停用,在发送订阅营销消息的请求时,将不再要求提供消息频率。
notification_messages_frequency
。口令过期与重新订阅
2023 年 8 月 10 日起,通知口令将不再过期。系统也将不再发送重新订阅请求和退订提醒。
通过营销消息,Facebook 公共主页或 Instagram 专业账户可以在标准消息时间范围过后,在用户授权下向该用户发送消息。您可以通过营销消息,与对您或您的业务感兴趣的用户建立关系。
营销消息是一项新的可选高级功能,我们计划未来对此进行收费。我们目前向使用 WhatsApp Business API 发送消息的企业收费,并且正在收集客户反馈,据此制定适当的定价模式。如果免费试用有任何变更,我们将预留充足的时间,提前通知客户和合作伙伴。
使用营销消息或 Messenger 开放平台的其他功能时,您必须遵守所有适用的开发者政策
在标准消息时间范围内,您只能向每位用户发送 1 条营销消息订阅请求。用户订阅营销消息的操作不会开启标准消息时间范围
您的应用和/或消息体验不得收到过多的用户负面反馈。如果我们确定您的应用消息体验收到的用户负面反馈比例过高,消息功能可能受到限制或移除
不得使用订阅请求等营销消息向用户发送垃圾信息,其中包括非常频繁地向相同用户发送重复的订阅请求,以及发送开发者政策定义的其他类型垃圾信息
为了维持我们为您提供的服务范围,您必须遵守我们针对 Messenger 开放平台和营销消息功能制定的限制
title
,或从 Instagram 专业账户发送的多个通知具有相同的 title
和 image_url
我们一直致力于打造最佳的用户和企业体验,因此这些要求和限制可能会时有变更。
为了打造高质量用户体验,您应通过执行以下操作来向用户发送与其相关且有价值的营销消息:
您的订阅请求(包括标题和图像)涵盖用户预期接收的营销消息类型,例如订单更新、商品推荐或特定优惠
向用户发送多个订阅请求时,每个订阅请求应清楚表明用户可预期接收的不同营销消息的具体类型
营销消息应与用户可能认为有价值的用例相关,并且应量身定制。
用户可针对消息体验提供反馈,比如屏蔽您的消息,这可能会导致您在使用营销消息时受限。您应该定期检查您的订阅请求和营销消息,以了解它们是否符合上述最佳实践。
适用于 2023 年 2 月 2 日之前创建的通知消息口令。
用户必须授予订阅权限,才能接收从您 Facebook 公共主页或 Instagram 专业账户发送的营销消息。Messenger 开放平台可提供多种方法助您启用该权限。您可以在以下消息体验中构建订阅请求:
m.me
链接 – 用户点击您的网站、电子邮件、社交媒体帖子等内容中的 m.me
链接
m.me
链接)
如要发送营销消息订阅请求,请向 /PAGE-ID/messages
端点发送 POST
请求,将消息模板类型设置为 notification_messages
。公共主页编号为您的 Facebook 公共主页编号,或与您 Instagram 专业账户绑定的 Facebook 公共主页编号。
注意:如果营销消息中包含来自 Facebook 公共主页 或 Instagram 专业账户 的轮播广告,则请求中必须包含 title
参数。
curl -X POST -H "Content-Type: application/json" -d '{ "recipient":{ "id":"PSID-OR-IGSID" }, "message":{ "attachment":{ "type":"template", "payload":{ "template_type":"notification_messages", "notification_messages_timezone": "UTC", "title":"TITLE", "image_url":"IMAGE-URL", "payload": "ADDITIONAL-WEBHOOK-INFORMATION", } } } }' "https://graph.facebook.com/LATEST-API-VERSION/PAGE-ID/messages?access_token=PAGE-ACCESS-TOKEN"
若请求成功,您的应用会收到附有收信人编号和消息编号的以下 JSON 响应。
{ "recipient": { "id":"PSID-OR-IGSID", "message_id":"MESSAGE-ID", }
必须在要向 /PAGE-ID/messages
端点发送的 POST
请求中加入 message
attachment
JSON 对象,以便执行营销消息订阅请求。
属性 | 描述 |
---|---|
template } | 必要。值必须为 |
| 在此营销消息订阅请求中,营销消息的内容包括模板类型、标题、消息频率、消息选项等 |
elements 数组 | 轮播的必要项。包含描述订阅的元素对象的数组。每个元素对象必须包含 |
image_aspect_ratio enum { HORIZONTAL , SQUARE } | 图像的宽高比。
|
image_url 字符串 | 要在模板中显示的图像的网址 |
notification_messages_frequency enum { DAILY, WEEKLY, MONTHLY } | 对于 2023 年 2 月 2 日之后创建的口令,此属性已停用。默认值为“DAILY”。此营销消息订阅请求的消息频率。
|
notification_messages_cta_text enum { ALLOW, GET, GET_UPDATES, OPT_IN, SIGN_UP } | 行动号召按钮上显示的文本
|
notification_messages_timezone 字符串 | 接收消息的用户所处的时区 |
payload 字符串 | 必要。此营销消息订阅请求中的营销消息类型,例如推广消息或产品发布消息 |
template_type enum { notification_messages } | 必要。值必须为 |
title 字符串 | 显示在模板中的标题,字符数不得超过 65 个。如果未指定值,则默认值为“更新和优惠” |
用户订阅后,您的公司将收到一条 messaging_optin
Webhooks 通知,其中包含通知消息口令以及有关消息标题、订阅用户所在时区等信息。您可借助通知消息口令向用户发送营销消息。
{ "sender": { "id": "PSID", }, "recipient": { "id": "PAGE-ID", }, "timestamp": "TIMESTAMP", "optin": { "type": "notification_messages", "payload": "ADDITIONAL-WEBHOOK-INFORMATION", "notification_messages_token": "NOTIFICATION-MESSAGES-TOKEN", "notification_messages_timezone": "TIMEZONE-ID", "token_expiry_timestamp": "TIMESTAMP", "user_token_status": "TOKEN-STATUS" "notification_messages_status": "MESSAGE-STATUS", "title": "TITLE-FOR-THE-NOTIFICATION" } }
以下内容只适用于 2023 年 2 月 2 日之前创建且发送频率为每周或每月的通知消息口令。
我们会根据用户所选的定期频率生成通知消息口令。例如,如果用户同时订阅了每日和每周营销消息,则会生成 2 个单独的通知消息口令。如果用户订阅了每天、每周和每月营销消息,则会生成 3 个单独的通知消息口令。
营销消息频率 | 描述 |
---|---|
每周 | 您每次只能发送 1 条消息,每日历周 1 次。每个日历周是指在公共主页设定的时区中,从周一上午 12:00 开始至周日晚上 11:59 结束。 |
每月 | 您每次只能发送 1 条消息,每日历月 1 次。每个日历月是指在公共主页设定的时区中,从每月第一天上午 12:00 开始至当月最后一天晚上 11:59 结束的时段。 |
对于选择继续订阅营销消息的用户,系统会将其口令过期日期延长。用户可随时退订。
用户订阅营销消息后,您可发送最多 3 条跟进消息。这些消息必须在发送第 1 条跟进消息后的 2 分钟内发送。第 2 和第 3 条跟进消息的长度不得超过 250 个字符。这些跟进消息可以在 24 小时标准消息时间范围过后发送。
如要发送跟进消息,请向 /PAGE-ID/messages
端点发出 POST
请求,在请求中加入包含通知消息口令的 recipient
对象和包含跟进消息文本的 message
对象。所有 3 条跟进消息的 API 请求都使用相同语法。
curl -X POST -H "Content-Type: application/json" -d '{ "recipient":{ "notification_messages_token":"NOTIFICATION-MESSAGE-TOKEN" }, "message":{ "text":FOLLOWUP-MESSAGE-TEXT-HERE, } }' "https://graph.facebook.com/LATEST-API-VERSION/PAGE-ID/messages?access_token=TOKEN"
您现在可以向 /PAGE-ID/notification_message_tokens
端点发送 GET
请求以获取所有有效通知消息口令清单。
curl -i -X GET "https://graph.facebook.com/API-VERSION-NUMBER/PAGE-ID/notification_message_tokens ?access_token=PAGE-ACCESS-TOKEN"
默认情况下,系统将返回最多 25 个口令的清单,并按更新时间对这些口令排序。如需了解更多内容,您可以添加 limit
参数。目前,系统最多可以返回 100 个口令。无论 before
参数是否可用,您都可以将 after
参数用于分页。
若请求成功,您的应用将收到以下 JSON 响应,其中包含口令、收信人编号(Instagram 范围编号或公共主页范围编号)、口令创建时间、通知标题以及您可以向该收信人发送下一条营销消息的时间。
{ "data":[ { "notification_messages_token":"NOTIFICATION-MESSAGE-TOKEN-ID-1", "recipient_id":"PAGE-OR-INSTAGRAM-SCOPED-ID-1", "notification_messages_reoptin":"RE-OPT-IN-STATUS", "creation_timestamp":TIMESTAMP, "token_expiry_timestamp":UNIX-TIMESTAMP-EXPIRATION-DATE, "user_token_status":"TOKEN-STATUS", "topic_title":"NOTIFICATION-TITLE", "notification_messages_timezone":"TIMEZONE-ID", "next_eligible_time": TIMESTAMP }, ... { "notification_messages_token":"NOTIFICATION-MESSAGE-TOKEN-ID-25", "recipient_id":"PAGE-OR-INSTAGRAM-SCOPED-ID-25", "notification_messages_reoptin":"RE-OPT-IN-STATUS", "creation_timestamp":TIMESTAMP, "token_expiry_timestamp":UNIX-TIMESTAMP-EXPIRATION-DATE, "user_token_status":"TOKEN-STATUS", "topic_title":"NOTIFICATION-TITLE", "notification_messages_timezone":"TIMEZONE-ID", "next_eligible_time": TIMESTAMP } ], "paging":{"cursors":{"before":"QVFIU...","after":"QVFIU..."},"next":"https:\/\/graph.facebook.com\/LATEST-API-VERSION\/PAGE-ID\/notification_message_tokens?access_token=PAGE-ACCESS-TOKEN"} }
虽然我们推荐您使用 messaging_optin
Webhooks 来收集营销消息信息,但您可以向口令端点发送 GET
请求,并在请求中将口令附加至 notification_messages_
之后,以 notification_messages_NOTIFICATION-MESSAGES-TOKEN
的形式获取口令信息。
curl -i -X GET "https://graph.facebook.com/LATEST-API-VERSION/notification_messages_NOTIFICATION-MESSAGES-TOKEN ?access_token=PAGE-ACCESS-TOKEN"
若请求成功,您的应用将收到以下 JSON 响应,其中包含通知消息口令、收信人编号和其他口令信息。您将使用通知消息口令和收信人编号发送营销消息。
{ "notification_messages_token": "NOTIFICATION-MESSAGES-TOKEN", "recipient_id": "PAGE-OR-INSTAGRAM-SCOPED-ID", "creation_timestamp": "TIMESTAMP", "token_expiry_timestamp": "TIMESTAMP", "user_token_status": "REFRESHED", "notification_messages_reoptin": "ENABLED", "notification_messages_timezone": "TIMEZONE-ID" "next_eligible_time": TIMESTAMP }
这些 API 调用会记入应用的流量限制。
您需要提供:
MESSAGING
任务的用户处请求获取的公共主页访问口令pages_messaging
权限messaging_referrals
Webhooks 订阅如要发送营销消息,请向 /PAGE-ID/messages
端点发送 POST
请求,并在消息附件中设置收件人 NOTIFICATION-MESSAGES-TOKEN
值和消息信息。
curl -X POST -H "Content-Type: application/json" -d '{ "recipient":{ "notification_messages_token": "NOTIFICATION-MESSAGES-TOKEN" }, "message":{ "attachment":{ "type":"template", "payload":{ "template_type":"generic", "elements":[ { "title":"Welcome!", "image_url":"https://raw.githubusercontent.com/fbsamples/original-coast-clothing/main/public/styles/male-work.jpg", "subtitle":"We have the right hat for everyone.", "default_action": { "type": "web_url", "url": "https://www.originalcoastclothing.com/", "webview_height_ratio": "tall" }, "buttons":[ { "type":"web_url", "url":"https://www.originalcoastclothing.com/", "title":"View Website" },{ "type":"postback", "title":"Start Chatting", "payload":"ADDITIONAL-WEBHOOK-INFORMATION" } ] } ] } } } }' "https://graph.facebook.com/LATEST-API-VERSION/PAGE-ID/messages?access_token=PAGE-ACCESS-TOKEN"
若请求成功,应用会收到以下响应:
{ "recipient": "PAGE-OR-INSTAGRAM-SCOPED-ID", "message_id": "MESSAGE-ID" }
您可以随时测试您的营销消息。
您需要提供:
您可以按照以下步骤随时测试您的营销消息。
developer_action
参数设置为 ENABLE_FOLLOWUP_MESSAGE
。curl -X POST "https://graph.facebook.com/LATEST-API-VERSION/PAGE-ID/notification_messages_dev_support ?recipient={ "notification_messages_token": "NOTIFICATION-MESSAGES-TOKEN" } &developer_action=ENABLE_FOLLOWUP_MESSAGE &access_token=PAGE-ACCESS-TOKEN"
若请求成功,您的应用将收到以下 JSON 响应,其中包含 success
(值设为 true
)。
{ "success": true }
如要测试重新订阅情况,请重复执行上述步骤,并将第 4 步中的 developer_action
参数设置为 SEND_RE_OPTIN
。