(也称为“定期通知”)
本文档将向你介绍向用户请求营销消息(也称为“定期通知”)发送权限的方法、有关发送请求的具体要求和限制以及创建和发送营销消息权限请求的方法。
Messenger 营销消息(也称为“定期通知”)将于 2026 年 2 月 10 日停用。
从 2025 年 9 月 1 日起,营销消息(也称为“定期通知”)将受到以下限制:
从 2025 年 7 月 1 日起,全球合作伙伴可以集成新的 Messenger 营销消息 API。合作伙伴和最终客户应在 2025 年迁移到新 Messenger 营销消息 API。
通过营销消息,Facebook 公共主页或 Instagram 专业账户可以在标准消息时间范围过后,在用户授权下向该用户发送消息。你可以通过营销消息,与对你或你的业务感兴趣的用户建立关系。
营销消息是一项新的可选高级功能,我们计划未来对此进行收费。我们目前向使用 WhatsApp Business API 发送消息的企业收费,并且正在收集客户反馈,据此制定适当的定价模式。如果免费试用有任何变更,我们将预留充足的时间,提前通知客户和合作伙伴。
使用营销消息或 Messenger 开放平台的其他功能时,你必须遵守所有适用的开发者政策
在标准消息时间范围内,你只能向每位用户发送 1 条营销消息订阅请求。用户订阅营销消息的操作不会开启标准消息时间范围
你的应用和/或消息体验不得收到过多的用户负面反馈。如果我们确定你的应用消息体验收到的用户负面反馈比例过高,消息功能可能受到限制或移除
不得使用订阅请求等营销消息向用户发送垃圾信息,其中包括非常频繁地向相同用户发送重复的订阅请求,以及发送开发者政策定义的其他类型垃圾信息
为了维持我们为你提供的服务范围,你必须遵守我们针对 Messenger 开放平台和营销消息功能制定的限制
title,或从 Instagram 专业账户发送的多个通知具有相同的 title 和 image_url我们一直致力于打造最佳的用户和企业体验,因此这些要求和限制可能会时有变更。
为了打造高质量用户体验,你应通过执行以下操作来向用户发送与其相关且有价值的营销消息:
你的订阅请求(包括标题和图像)涵盖用户预期接收的营销消息类型,例如订单更新、商品推荐或特定优惠
向用户发送多个订阅请求时,每个订阅请求应清楚表明用户可预期接收的不同营销消息的具体类型
营销消息应与用户可能认为有价值的用例相关,并且应量身定制。
用户可针对消息体验提供反馈,比如屏蔽你的消息,这可能会导致你在使用营销消息时受限。你应该定期检查你的订阅请求和营销消息,以了解它们是否符合上述最佳实践。
发送 subscription_token 消息的冷却期为 24 小时。这意味着使用相同 subscription_token 发送营销消息时的间隔不得短于 24 小时。
从 2025 年 9 月 1 日起,发送 subscription_token 消息的冷却期将从允许每个订户每 24 小时发送一次改为每 48 小时发送一次。
适用于 2023 年 2 月 2 日之前创建的通知消息口令。
用户必须授予订阅权限,才能接收从你 Facebook 公共主页或 Instagram 专业账户发送的营销消息。Messenger 开放平台可提供多种方法助你启用该权限。你可以在以下消息体验中构建订阅请求:
– 用户点击你的广告
– 用户在表单中点击复选框并提交表单
m.me 链接
– 用户点击你的网站、电子邮件、社交媒体帖子等内容中的 m.me 链接
– 用户向你公司的 Facebook 公共主页发布访客帖或评论
– 用户扫描数字表面和印刷表面上的二维码(采用 m.me 链接)
– 用户使用预定义的行动号召 (CTA) 按钮或文本列表发起对话
如要发送营销消息订阅请求,请向 /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 请求中加入 messageattachment JSON 对象,以便执行营销消息订阅请求。
| 属性 | 描述 |
|---|---|
template } | 必要。值必须为 |
| 在此营销消息订阅请求中,营销消息的内容包括模板类型、标题、消息频率、消息选项等 |
elements数组 | 轮播的必要项。包含描述订阅的元素对象的数组。每个元素对象必须包含 |
image_aspect_ratioenum { HORIZONTAL, SQUARE } | 图像的宽高比。
|
image_url字符串 | 要在模板中显示的图像的网址 |
notification_messages_frequencyenum { DAILY, WEEKLY, MONTHLY } | 对于 2023 年 2 月 2 日之后创建的口令,此属性已停用。默认值为“DAILY”。此营销消息订阅请求的消息频率。
|
notification_messages_cta_textenum { ALLOW, GET, GET_UPDATES, OPT_IN, SIGN_UP } | 行动号召按钮上显示的文本
|
notification_messages_timezone字符串 | 接收消息的用户所处的时区 |
payload字符串 | 必要。此营销消息订阅请求中的营销消息类型,例如推广消息或产品发布消息 |
template_typeenum { notification_messages } | 必要。值必须为 |
title字符串 | 显示在模板中的标题,字符数不得超过 65 个。如果未指定值,则默认值为“更新和优惠” |
用户订阅后,你的公司将收到一条 messaging_optin Webhook 通知,其中包含通知消息口令以及有关消息标题、订阅用户所在时区等信息。你可借助通知消息口令向用户发送营销消息。
{
"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 Webhook 来收集营销消息信息,但你可以向口令端点发送 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 Webhook 订阅如要发送营销消息,请向 /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。
,了解你可以发送的不同消息类型。
,了解有关定期消息可用字段的更多信息。