We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.
使用 /PHONE_NUMBER_ID/messages
端点向您的客户发送文本消息、媒体消息、联系人消息、位置消息、互动消息和消息模板。进一步了解您能够发送的消息。
端点 | 身份验证 |
---|---|
(请参阅获取电话号码编号) | Developers can authenticate their API calls with the access token generated in the App Dashboard > WhatsApp > API Setup.
Solution Partners must authenticate themselves with an access token with the |
消息均有唯一的编号 (WAMID) 以作识别。您可以通过消息的 WAMID 使用 Webhooks 追踪消息状态。您还可以通过 messages 端点,将收到的消息标记为已读。此 WAMID 的长度上限可达 128 个字符。
如要发送消息,您必须首先以您要发送的内容整合 message 对象。以下是 message
对象中使用的参数:
名称 | 描述(点击左列中的箭头以获取支持的选项。) |
---|---|
|
包含音频的 |
| 可选。 有助于追踪的任意字符串。 例如,您可以在此字段中传递消息模板编号,以从您发送的第一条消息开始追踪客户体验历程。然后,您可以追踪不同消息模板类型的投资回报 (ROI),以找出最有效的类型。 此字符串包含在 Webhooks 负载的 云端 API 不会处理此字段,只会将其作为已发送/已送达/已读消息 Webhooks 的一部分返回。 不超过 512 个字符。 |
|
|
| 回复对话中任何消息时,此为必要项。 此对象包含您所回复的之前的消息的编号。例如:
|
|
包含文档的 |
| 包含 仅限 On-Premises API。 |
|
包含图像的 |
|
|
|
|
| 必要 请求所用的消息服务。使用 |
|
允许在文字消息中显示网址预览。请参阅在文字消息中发送网址。如果未在消息中加入网址,则此为可选字段。值: 仅限 On-Premises API。云端 API 用户可通过文字对象中的 |
| 可选。 您目前仅可向个人发送消息。请将此设为 默认: |
| 消息状态。您可使用此字段将消息标为 |
|
包含贴图的 云端 API:除了所有传入消息的贴图类型外,还支持传出消息的第三方静态和动态贴图。静态贴图须为 512x512 像素,不得超过 100 KB。动态贴图须为 512x512 像素,不得超过 500 KB。 On-Premises API:除了所有传入消息的贴图类型外,仅支持传出消息的第三方静态贴图。静态贴图须为 512x512 像素,不得超过 100 KB。不支持动态贴图。 |
|
|
| 此为文字消息的必要项。 |
| 必要。 要接收消息的客户的 WhatsApp 编号或电话号码。请参阅电话号码格式。 如有需要,On-Premises API 用户可调用 |
| 可选。 要发送的消息类型。如略过,则默认为 |
以下对象已嵌套至 message 对象:
Name | Description |
---|---|
| Optional. Full contact address(es) formatted as an
|
| Optional.
|
| Optional. Contact email address(es) formatted as an
|
| Required. Full contact name formatted as a
*At least one of the optional parameters needs to be included along with the |
| Optional. Contact organization information formatted as an
|
| Optional. Contact phone number(s) formatted as a
|
| Optional. Contact URL(s) formatted as a
|
名称 | 描述 |
---|---|
| 必要。 您希望用户阅读消息后执行的操作。 |
| 对于 含有消息正文的对象。
|
| 非必要。含有消息页尾的对象。
|
| 对于 显示在消息上方的页眉内容。如果您的 interactive 对象类型为 |
| 必要。 您要发送的互动消息类型。支持的值:
|
以下对象已嵌套至 interactive
对象:
名称 | 描述 |
---|---|
| 对于清单消息为必要项。 按钮内容。不能为空字符串,而且在消息中不得重复。支持表情,但不支持 Markdown。 长度上限:20 个字符。 |
| 对于回复按钮为必要项。 button 对象可包含以下参数:
最多可有 3 个按钮。设置编号时,头尾不可留有空格。 |
| 对于单件商品消息和多件商品消息为必要项。 与 WhatsApp Business 商业帐号相关联的 Facebook 目录中的唯一标识符。可通过 Meta 电商管理工具检索此编号。 |
| 对于单件商品消息和多件商品消息为必要项。 目录中商品的唯一标识符。 如要获取此编号,请前往 Meta 电商管理工具,然后选择您的 Meta 业务账户。您会看到与您账户关联的店铺清单。点击您想使用的店铺。在左侧面板中,点击目录 > 商品,然后找到您想提及的商品。该商品的编号显示在商品名称下方。 |
| 对于清单消息和多件商品消息为必要项。
|
| 对于 Flows 消息为可选项。 流程的现有模式,为 默认: |
| 对于 Flows 消息为必要项。 必须为 |
| 对于 Flows 消息为必要项。 由商家生成的口令,用作标识符。 |
| 对于 Flows 消息为必要项。 WhatsApp 提供的流程的唯一标识符。 |
| 对于 Flows 消息为必要项。 行动号召 (CTA) 按钮上的文本,例如“注册”。 长度上限:20 个字符(不含表情)。 |
| 对于 Flows 消息为可选项。
默认: |
| 对于 Flows 消息为可选项。 仅当
|
名称 | 描述 |
---|---|
| 当 含有这个文档的 media 对象。 |
| 当 含有这张图片的 media 对象。 |
| 当 页眉的文本。设置格式支持表情,但不支持 Markdown。 长度上限:60 个字符。 |
| 非必要。 页眉的文本。设置格式支持表情,但不支持 Markdown。 长度上限:60 个字符。 |
| 必要。 您可能会用到的页眉类型。支持的值:
|
| 当 含有这段视频的 media 对象。 |
名称 | 描述 |
---|---|
| 对于多件商品消息为必要项。
每个
|
| 对于清单消息为必要项。 包含一个行列表。所有部分总共可以有 10 行。 每行都必须有标题(长度上限:24 个字符)和编号(长度上限:200 个字符)。您可选择加入说明(长度上限:72 个字符)。 示例: "rows": [ { "id":"unique-row-identifier-here", "title": "row-title-content-here", "description": "row-description-content-here", } ] |
| 如果消息包含的部分数量超过一个,此字符串为必要项。 部分的标题。 长度上限:24 个字符。 |
Name | Description |
---|---|
| Required. Location latitude in decimal degrees. |
| Required. Location longitude in decimal degrees. |
| Required. Name of the location. |
| Required. Address of the location. |
如要了解如何获取 media 对象的编号,请查看获取媒体编号。如要了解云端 API 支持的媒体类型,请查看支持的媒体类型。
Name | Description |
---|---|
| Required when The media object ID. Do not use this field when message |
| Required when The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Do not use this field when message Cloud API users only:
|
| Optional. Media asset caption. Do not use with On-Premises API users:
|
| Optional. Describes the filename for the specific document. Use only with The extension of the filename will specify what format the document is displayed as in WhatsApp. |
| Optional. On-Premises API only. This path is optionally used with a |
名称 | 说明 |
---|---|
| 必需。 模板的命名空间。 从 |
| 必需。 模板名称。 |
| 必需。 指定模板可使用的显示语言。多媒体素材模板消息仅支持 |
| 可选。 包含消息参数的数组。 |
以下对象已嵌套至 template
对象:
名称 | 描述(点击左边栏中的箭头以获取支持的选项。) |
---|---|
| 必要。 表示按钮的参数类型。 |
| 对于 当用户点击按钮后,系统除了返回按钮上显示的文本外,还会返回开发者定义的负载。 请参阅点击快速回复按钮所触发的回调,了解相关示例。 |
| 对于网址按钮为必要项。 由开发者提供的后缀,附加到模板中预定义的前缀网址之后。 |
名称 | 描述 |
---|---|
| 必需。 用于描述 |
| 可选。 包含消息内容的数组。 |
名称 | 描述 |
---|---|
| 必要。 本地化失败时显示的默认文本。 |
| 必要。
|
| 必要。 数量乘以 1000。 |
名称 | 描述 |
---|---|
| 必要。 默认文本。在云端 API 中,我们一律使用回退值,而不会尝试以其他可选字段进行本地化。 |
名称 | 描述 |
---|---|
| 必要。 说明参数类型。支持的值:
基于文本的模板支持的参数类型仅限 |
|
消息的文本。字符数上限取决于以下包含的组件类型。
|
|
|
|
|
|
|
|
|
|
|
名称 | 描述 |
---|---|
| 对于文本消息为必要项。 文本消息的文本,可包含以 http:// 或 https:// 开头的网址,并可包含格式。在此查看可用的格式选项。 如您在文本中加入网址,并想在文本消息中加入预览框 ( 长度上限:4096 个字符 |
| 非必要。仅适用于云端 API。 设置为 如果省略 而如果用户使用的是 On-Premises API,可以在最高级别的消息负载中使用 |
名称 | 描述 |
---|---|
| 必要。 应要显示心情的消息的 WhatsApp 消息编号 (WAMID)。如果出现以下情况,系统不会发送心情:
如果编号属于已删除的消息,相关消息不会送达。 |
| 必要。 显示在消息上的表情。
|
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "text",
"text": { // the text object
"preview_url": false,
"body": "MESSAGE_CONTENT"
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "reaction",
"reaction": {
"message_id": "wamid.HBgLM...",
"emoji": "\uD83D\uDE00"
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM-PHONE-NUMBER-ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE-NUMBER",
"type": "image",
"image": {
"id" : "MEDIA-OBJECT-ID"
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"to": "PHONE_NUMBER",
"type": "location",
"location": {
"longitude": LONG_NUMBER,
"latitude": LAT_NUMBER,
"name": LOCATION_NAME,
"address": LOCATION_ADDRESS
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"to": "PHONE_NUMBER",
"type": "contacts",
"contacts": [{
"addresses": [{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "HOME"
},
{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "WORK"
}],
"birthday": "YEAR_MONTH_DAY",
"emails": [{
"email": "EMAIL",
"type": "WORK"
},
{
"email": "EMAIL",
"type": "HOME"
}],
"name": {
"formatted_name": "NAME",
"first_name": "FIRST_NAME",
"last_name": "LAST_NAME",
"middle_name": "MIDDLE_NAME",
"suffix": "SUFFIX",
"prefix": "PREFIX"
},
"org": {
"company": "COMPANY",
"department": "DEPARTMENT",
"title": "TITLE"
},
"phones": [{
"phone": "PHONE_NUMBER",
"type": "HOME"
},
{
"phone": "PHONE_NUMBER",
"type": "WORK",
"wa_id": "PHONE_OR_WA_ID"
}],
"urls": [{
"url": "URL",
"type": "WORK"
},
{
"url": "URL",
"type": "HOME"
}]
}]
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "product",
"body": {
"text": "optional body text"
},
"footer": {
"text": "optional footer text"
},
"action": {
"catalog_id": "CATALOG_ID",
"product_retailer_id": "ID_TEST_ITEM_1"
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "product_list",
"header":{
"type": "text",
"text": "header-content"
},
"body": {
"text": "body-content"
},
"footer": {
"text": "footer-content"
},
"action": {
"catalog_id": "CATALOG_ID",
"sections": [
{
"title": "section-title",
"product_items": [
{ "product_retailer_id": "product-SKU-in-catalog" },
{ "product_retailer_id": "product-SKU-in-catalog" },
...
]
},
{
"title": "section-title",
"product_items": [
{ "product_retailer_id": "product-SKU-in-catalog" },
{ "product_retailer_id": "product-SKU-in-catalog" },
...
]
}
]
}
}
}
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive" : {
"type" : "catalog_message",
"body" : {
"text": "Thanks for your order! Tell us what address you’d like this order delivered to."
},
"action": {
"name": "catalog_message",
"parameters": {
"thumbnail_product_retailer_id": "<Product-retailer-id>"
}
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive" : {
"type": "flow",
"header": {
"type": "text",
"text": "Flow message header"
},
"body": {
"text": "Flow message body"
},
"footer": {
"text": "Flow message footer"
},
"action": {
"name": "flow",
"parameters": {
"flow_message_version": "3",
"flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s",
"flow_id": "<FLOW_ID>",
"flow_cta": "Book!",
"flow_action": "navigate",
"flow_action_payload": {
"screen": "<SCREEN_ID>",
"data": {
"user_name": "name",
"user_age": 25
}
}
}
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "list",
"header": {
"type": "text",
"text": "HEADER_TEXT"
},
"body": {
"text": "BODY_TEXT"
},
"footer": {
"text": "FOOTER_TEXT"
},
"action": {
"button": "BUTTON_TEXT",
"sections": [
{
"title": "SECTION_1_TITLE",
"rows": [
{
"id": "SECTION_1_ROW_1_ID",
"title": "SECTION_1_ROW_1_TITLE",
"description": "SECTION_1_ROW_1_DESCRIPTION"
},
{
"id": "SECTION_1_ROW_2_ID",
"title": "SECTION_1_ROW_2_TITLE",
"description": "SECTION_1_ROW_2_DESCRIPTION"
}
]
},
{
"title": "SECTION_2_TITLE",
"rows": [
{
"id": "SECTION_2_ROW_1_ID",
"title": "SECTION_2_ROW_1_TITLE",
"description": "SECTION_2_ROW_1_DESCRIPTION"
},
{
"id": "SECTION_2_ROW_2_ID",
"title": "SECTION_2_ROW_2_TITLE",
"description": "SECTION_2_ROW_2_DESCRIPTION"
}
]
}
]
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "button",
"body": {
"text": "BUTTON_TEXT"
},
"action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "UNIQUE_BUTTON_ID_1",
"title": "BUTTON_TITLE_1"
}
},
{
"type": "reply",
"reply": {
"id": "UNIQUE_BUTTON_ID_2",
"title": "BUTTON_TITLE_2"
}
}
]
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "template",
"template": {
"name": "TEMPLATE_NAME",
"language": {
"code": "LANGUAGE_AND_LOCALE_CODE"
},
"components": [
{
"type": "header",
"parameters": [
{
"type": "image",
"image": {
"link": "http(s)://URL"
}
}
]
},
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "TEXT_STRING"
},
{
"type": "currency",
"currency": {
"fallback_value": "VALUE",
"code": "USD",
"amount_1000": NUMBER
}
},
{
"type": "date_time",
"date_time": {
"fallback_value": "MONTH DAY, YEAR"
}
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": "0",
"parameters": [
{
"type": "payload",
"payload": "PAYLOAD"
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": "1",
"parameters": [
{
"type": "payload",
"payload": "PAYLOAD"
}
]
}
]
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"context": {
"message_id": "MESSAGE_ID"
},
"to": "PHONE_NUMBER",
"type": "text",
"text": {
"preview_url": false,
"body": "your-text-message-content"
}
}’
{ "messaging_product": "whatsapp", "contacts": [ { "input": "16505555555", "wa_id": "16505555555" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA" } ] }
Applies to businesses in Brazil, Colombia, and Singapore, starting September 12, 2023. Applies to all businesses starting October 12, 2023.
Messages will have one of the following statuses which will be returned in each of the messages
objects
"message_status":"accepted"
: means the message was sent to the intended recipient"message_status":"held_for_quality_assessment"
: means the message send was delayed until quality can be validated and it will either be sent or dropped at this point{ "messaging_product": "whatsapp", "contacts": [ { "input": "16505555555", "wa_id": "16505555555" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA", "message_status": "accepted", } ] }