发送消息

如要在 Messenger 或 Instagram 上向用户发送消息,必须由该用户发起对话。Messenger 开放平台支持多种不同的消息类型,可供您发送。每种消息类型都需遵循不同的政策和守则,这些政策和守则规定了可以发送的内容类型以及发送这些内容的条件。

2024 年 7 月 23 日,我们发布了包含 Instagram 登录的全新 Instagram API。Instagram 专业账户(即业务账户或创作者账户)将不再需要与 Facebook 公共主页绑定,即可与客户、粉丝或对该 Instagram 账户或其企业感兴趣的 Instagram 用户对话、管理评论或发布影音内容。请参阅我们的博文,详细了解此新版本。

有关详情,请参阅我们的“包含 Instagram 登录的 Instagram API”一文

告知用户关于自动化体验的相关信息

根据适用法律规定,在出现以下情况时,自动化聊天体验需向用户告知是在与自动化服务互动:

  • 开始任意对话或消息对话时;
  • 互动暂停很长一段时间后;
  • 当聊天由真人互动转换至自动化体验时。

为以下群体服务的自动聊天体验应特别注意此要求:

  • 加州市场或加州用户
  • 德国市场或德国用户

披露内容可能包括但不限于:“我是 [公共主页名称] 智能助手”、“您正在与自动体验互动”、“您正在与智能助手交流”或者“我是自动智能聊天助手”。

即使没有法律要求,我们也建议遵循最佳实践,在用户与自动聊天体验互动时告知实情,这样有助于管理用户在与消息体验互动时抱有的期望。

浏览我们的开发者政策,了解更多信息。

消息组件

从您应用发出的用于发送消息的所有 Send API 请求须包含以下各项:

  • 用于发送消息的公共主页编号,该公共主页可为 Facebook 公共主页或与 Instagram 专业账户绑定的 Facebook 公共主页
  • 接收消息的用户的编号
  • 由发送消息的公共主页请求的公共主页访问口令
  • 接收消息的用户授予的权限

如要详细了解消息组件,请浏览 Send API 参考文档。

标准消息时间范围

标准消息时间范围指的是 24 小时的时段,在此期间,您可向用户发送消息。如果用户向您的公共主页或 Instagram 专业账户发送消息,或者通过网页插件发起对话,您的应用需要在 24 小时内发送消息。

在 24 小时时间范围内发送的消息可以包含推广性内容。

开启标准消息时间范围的用户操作

以下用户操作会开启 24 小时标准消息时间范围:

  • 用户向您的公共主页或 Instagram 专业账户发送消息
  • 用户点击对话内的“立即开始”等行动号召按钮
  • 用户点击 Messenger 直达广告,然后向您的公共主页或 Instagram 专业账户发送消息
  • 用户通过插件(如发送至 Messenger 插件或复选框插件等)向公共主页发送消息
  • 用户点击 m.me 链接,前往用户与公共主页间的已有对话
  • 用户点击 ig.me 链接,前往用户与 Instagram 专业账户间的已有对话
  • 用户对消息(如营销消息)留下心情
  • 用户评论您公共主页或 Instagram 专业账户上的帖子
  • 用户在您的公共主页上发布访客帖子

我们深知用户期望得到快速回复,所以我们十分鼓励您在此 24 小时时间范围内尽快回复。用户随时都可以选择屏蔽或关闭对话。

收信人编号

recipient 对象参数中设置接收消息的用户的编号,该编号可为以下其中一种编号类型:

  • 公共主页范围编号 (PSID) — 在用户首次向您的公共主页发送消息时,系统会将此编号分配给该用户。此编号是唯一编号,代表公共主页与用户间的互动。

  • 用户引用 — 此编号分配给使用插件或回传按钮向您的公共主页发送消息的用户。

  • 帖子或评论编号 — 此编号分配给在您的公共主页上发布帖子或评论帖子的用户。此编号用于向用户发送私信回复。

请注意,Facebook 登录集成中的用户编号是应用范围编号,不受 Messenger 开放平台支持。

消息类型

messaging_type 参数中设置您要发送的消息的类型。此参数可更明确地确保消息发送符合发消息政策和收信人的偏好设置。

支持以下消息类型:

  • 回复 — 您发送的消息是对已接收消息的回复。消息可以包含推广性内容和非推广性内容,必须在标准消息时间范围内发出。

  • 更新 — 您发送的消息是主动发出,且并非用于回复已收到的消息。消息可以包含推广性内容和非推广性内容,必须在标准消息时间范围内发出。

  • 带标签的消息 — 您发送的消息是在标准消息时间范围过后发出。此消息须包含与标签合理用途相符的消息标签,且包含非推广性内容。

消息标签

通过消息标签,您可以在标准消息时间范围过后发送消息。这些消息是与用户个人相关的更新。例如,您可能会发送与发货和配送、近期预订或航班相关的更新消息,或是与客户账户相关的提醒。对于需要使用上报路径的消息流,业务代表可以使用人工客服标签手动回复用户在 7 天之内发出的消息。

消息标签不可用于发送推广性内容,包括但不限于促销、优惠、优惠券和折扣。如果在获准的用例之外使用消息标签,这可能会导致公共主页或 Instagram 账户的发消息功能受限。详情请参阅 Messenger 开放平台和 Instagram 消息 API 政策

如果使用 Messenger 开放平台的企业要在 24 小时标准消息时间范围过后发送推广性消息,应使用赞助消息一次性通知

内容类型

您发送的消息可以包含以下类型的内容:

  • 音频
  • 按钮
  • 文件
  • 菜单
  • 动图
  • 图片
  • 模板
  • 文本
  • 视频

发送基础文本

如要向已向您公共主页发送消息的用户发送基础文本消息,请向 /PAGE-ID/messages 端点发送 POST 请求,将 recipient 对象字面量键 id 设为用户的公共主页范围编号 (PSID),将 message_type 参数设为 RESPONSE,并将 message 参数对象 text 设为消息文本。

请求示例

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient":{
    "id":"{PSID}"
  },
  "messaging_type": "RESPONSE",
  "message":{
    "text":"Hello, world!"
  }
}' "https://graph.facebook.com/v24.0/{PAGE-ID}/messages?access_token={PAGE-ACCESS-TOKEN}"
    

若请求成功,您的应用会收到附有收信人编号和消息编号的以下 JSON 响应。

{
  "recipient_id": "PAGE-SCOPED-ID",
  "message_id": "AG5Hz2U..."
} 

发送媒体附件

如要发送带有动图、图像或模板等媒体的消息,您需要在 JSON 消息附件对象中向 API 请求添加内容。

如要向已向您公共主页发送消息的用户发送带图像的消息,请向 /PAGE-ID/messages 端点发送 POST 请求,将 recipient 对象字面量键 id 设为用户的公共主页范围编号 (PSID),将 message_type 参数设为 RESPONSE,并将 message 参数的 attachment 对象的 type 键设为 image,然后将 payload 对象的 url 键设为图像的网址。

请求示例

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient":{
    "id":"1254459154682919"
  },
  "message":{
    "attachment":{
      "type":"image", 
      "payload":{
        "url":"http://www.messenger-rocks.com/image.jpg", 
        "is_reusable":true
      }
    }
  }
}' "https://graph.facebook.com/v24.0/me/messages?access_token={PAGE_ACCESS_TOKEN}"
  

若请求成功,您的应用会收到附有收信人编号和消息编号的以下 JSON 响应。

{
  "recipient_id": "PAGE-SCOPED-ID",
  "message_id": "AG5Hz2U..."
} 

如要发送网址中的音频、视频或文件,所使用的格式与此相同。

您还可以发送您服务器中的媒体,或者您之前已上传到 Meta 服务器的内容中的媒体。详细了解如何使用附件上传 API 上传文件。

发送多个媒体附件

如要发送带有多张图片的消息,您需要在 JSON 消息附件数组中向 API 请求添加内容。您只能添加图片媒体类型,且一次最多添加 30 张图片。

如要向已向您公共主页发送消息的用户发送带有多张图片的消息,请向 /PAGE-ID/messages 端点发送 POST 请求,将 recipient 对象字面量键 id 设为用户的公共主页范围编号 (PSID),将 message_type 参数设为 RESPONSE,并将 message 参数的 attachments 数组的每个附件对象的 type 键设为 image,然后将 payload 对象的 url 键设为图像的网址。

请求示例

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient": {
    "id": "1254459154682919"
  },
  "message": {
    "attachments": [
      {
        "type": "image",
        "payload": {
          "url": "http://www.messenger-rocks.com/image.jpg"
        }
      },
      {
        "type": "image",
        "payload": {
          "url": "http://www.messenger-rocks.com/image.jpg"
        }
      }
    ]
  }
}' "https://graph.facebook.com/v24.0/me/messages?access_token={PAGE_ACCESS_TOKEN}"
  

若请求成功,您的应用会收到附有收信人编号和消息编号的以下 JSON 响应。

{
  "recipient_id": "PAGE-SCOPED-ID",
  "message_id": "AG5Hz2U..."
} 

针对消息发送回复

如要针对聊天中一条特定的过去消息发送回复,请向 /PAGE-ID/messages 发送 POST 请求,在请求中加入以下参数:

  • recipient 对象文字键 id,设为用户的公共主页范围编号 (PSID)
  • message_type,设为 RESPONSE
  • 消息参数对象中的消息详情
  • reply_to 对象文字键 mid,设置为您想要回复的聊天中特定消息的消息 ID

该消息可以是您公共主页或用户发送的消息。

请求示例

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient": {
    "id": "{PSID}",
  }
  "messaging_type": "RESPONSE"
  "message": {
    "text": "Hello, world!"      
  },
  "reply_to": {
    "mid": "{MESSAGE_ID}"
  }
}' "https://graph.facebook.com/v23.0/{PAGE-ID}/messages?access_token={PAGE_ACCESS_TOKEN}" 

若请求成功,您的应用会收到附有收信人编号和消息编号的以下 JSON 响应。

{
  "recipient_id": "PAGE-SCOPED-ID",
  "message_id": "AG5Hz2U…"
} 

最佳实践

文本消息

力求简短。考虑屏幕尺寸以及滚动行为;简洁的消息更容易吸引用户的眼球。尝试将消息分成几条发送,而不是发送一段长文。

不要使用文本来替代图像、表格和图表。结构化消息(甚至是网页视图)可能更为符合您的需求。

不要写长篇沟通消息。如果您需要就多项事务进行沟通,请尝试将消息分成几条发送,而不是发送一段长文。

附件

注重质量。使用高像素的彩色图像,让您的消息引人注目。

考虑宽高比。查看图像在消息气泡中显示时,会被裁剪成什么样。

不要在图像中添加大量文本,转为使用文本消息,或者通过常规模板将图像和文本结合起来。

更多消息类型

营销消息

通过营销消息,您可以向用户请求权限,在标准消息时间范围结束后发送多条营销消息。如果用户同意接收这些通知,您可以向用户发送自动生成的定期优惠消息,其中会包含近期促销或产品发布和动态等信息。

新闻消息(开发中)

新闻消息只适用于使用 Facebook 新闻公共主页索引 (NPI) 注册的认证的新闻公共主页 。通过新闻消息,新闻发行商可以向订阅这些消息的用户发送非推广性新闻消息。

Instagram 消息 API 不支持新闻消息。

一次性通知

通过一次性通知,您可以向用户请求权限,在标准消息时间范围结束后发送一条跟进消息。如果用户同意接收一次性通知,您即可发送一条与个人相关的时效性消息,如约会提醒或商品补货提醒。

Instagram 消息 API 不支持一次性通知。

私信回复

如果用户对您的任意帖子或广告发表评论,或在您的公共主页或 Instagram 专业账户上发布访客帖子,您可以通过私信回复向该用户发送消息。私信回复只能是单条消息,将自动包含帖子或评论的链接,且必须在用户发布帖子或评论的 7 天内发送。

赞助消息

在标准消息时间范围结束后,您可借助赞助消息,向之前向您的公共主页或 Instagram 专业账户发送过消息的用户发送推广性或非推广性内容。赞助消息在对话中的显示形式与正常消息类似,但会附有“赞助”字样,位置就在消息的上方。赞助消息内容须符合广告发布政策。

Instagram 消息 API 不支持赞助消息。

交易相关消息

通过交易相关消息,您可以发送一条预批准的模板消息,其中包括订单、账户更新和预约。这些消息包含账户编号、订单编号、运单号、预约日期和时间,个性化程度较高,可具有一些行动号召,以便用户取消订单、重新安排预约时间,以及执行简化与企业互动的其他操作。

详细了解

详细了解使用 Messenger 开放平台发送消息。

开发者支持