Используйте конечную точку /PHONE_NUMBER_ID/messages
, чтобы отправлять своим клиентам текстовые сообщения, медиафайлы, контакты, геоданные, интерактивные сообщения и шаблоны сообщений. Подробную информацию о сообщениях, которые можно отправлять, см. в этой статье.
Конечная точка | Аутентификация |
---|---|
(См. раздел Получение ID номера телефона) | 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 |
Сообщения идентифицируются по уникальному ID (WAMID). Вы можете отслеживать статус сообщения в Webhooks, используя его WAMID. Вы также можете помечать сообщения как прочитанные с помощью конечной точки messages. Максимальная длина WAMID не должна превышать 128 символов.
При использовании облачного API больше нет способа четко проверить, имеет ли тот или иной номер телефона ID WhatsApp. Чтобы отправить сообщение с использованием облачного API, просто отправьте его напрямую на номер телефона клиента — после того, как он согласился их принимать. Примеры см. в статье Справка, Сообщения.
Чтобы отправить сообщение, сначала необходимо скомпоновать объект message, используя контент, который нужно отправить. В объекте message
используются следующие параметры:
Имя | Описание (нажмите стрелку в столбце слева, чтобы открыть список поддерживаемых вариантов) |
---|---|
| Обязательный параметр, если Объект |
| Необязательный параметр. Необязательная строка, используемая для отслеживания. Например, в этом поле можно указать ID для отслеживания истории переписки клиента начиная с первого отправленного вами сообщения. После этого вы сможете отслеживать рентабельность инвестиций для различных типов шаблонов и определить, какой из них наиболее эффективен. Любое приложение, подписанное на поле Webhooks Облачный API не обрабатывает это поле, а просто возвращает его как часть Webhooks сообщения с информацией об отправке, доставке или прочтении. Максимальное количество символов: 512. Только для облачного API. |
| Обязательный параметр, если |
| Обязательный параметр при ответе на любое сообщение в переписке. Объект, содержащий ID предыдущего сообщения, на которое вы отвечаете. Пример:
Только для облачного API. |
| Обязательный параметр, если Объект |
| Содержит объект Только для локального API. |
| Обязательный параметр, если Объект |
| Обязательный параметр, если Объект |
| Обязательный параметр, если |
| Обязательный параметр. Служба обмена сообщениями, используемая для отправки запроса. Используйте Только для облачного API. |
| Обязательный параметр, если Используется для предварительного просмотра URL в текстовых сообщениях (см. раздел Отправка URL в текстовых сообщениях). Если ваше сообщение не содержит URL, это поле необязательно. Значения: Только для локального API. Пользователи облачного API могут использовать эту функцию с полем |
| Необязательный параметр. В настоящий момент вы можете отправлять сообщения только отдельным лицам. Установите значение Значение по умолчанию: |
| Статус сообщения. Это поле можно использовать, чтобы пометить сообщение как
|
| Обязательный параметр, если Объект Облачный API: поддерживаются входящие стикеры всех типов, а также статические и анимированные исходящие стикеры сторонних разработчиков. Статический стикер должен иметь размер 512 x 512 пикселей, размер файла не должен превышать 100 КБ. Анимированный стикер должен иметь размер 512 x 512 пикселей, размер файла не должен превышать 500 КБ. Локальный API: поддерживаются входящие стикеры всех типов и только статические исходящие стикеры сторонних разработчиков. Статический стикер должен иметь размер 512 x 512 пикселей, размер файла не должен превышать 100 КБ. Анимированные стикеры не поддерживаются. |
| Обязательный параметр, если |
| Обязательный параметр для текстовых сообщений. |
| Обязательный параметр. ID WhatsApp или номер телефона клиента, которому вы хотите отправить сообщение. См. раздел Форматы номеров телефонов. При необходимости пользователи локального 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
вложены следующие объекты:
Имя | Описание |
---|---|
| Обязательный параметр для сообщений со списком. Содержимое кнопки. Это значение не может быть пустой строкой и должно быть уникальным в пределах сообщения. Смайлики поддерживаются, а теги разметки — нет. Максимальная длина — 20 символов. |
| Обязательный параметр для кнопок ответа. Объект button может содержать следующие параметры:
Можно задать до 3 кнопок. В начале и в конце ID нельзя использовать пробелы. |
| Обязательный параметр для сообщений об одном или нескольких товарах. Уникальный идентификатор каталога Facebook, связанного с аккаунтом WhatsApp Business. Этот ID можно получить с помощью Meta Commerce Manager. |
| Обязательный параметр для сообщений об одном или нескольких товарах. Уникальный идентификатор товара в каталоге. Чтобы получить этот ID, перейдите в Meta Commerce Manager и выберите свой бизнес-аккаунт Meta. Откроется список магазинов, подключенных к вашему аккаунту. Выберите нужный магазин. На панели слева выберите Каталог > Товары и найдите товар, который хотите упомянуть. ID этого товара будет показан под его названием. |
| Обязательный параметр для сообщений со списком и сообщений о нескольких товарах. Массив объектов |
| Необязательный параметр для сообщений в рамках потоков. Текущий режим потока: Значение по умолчанию: |
| Обязательный параметр для сообщений в рамках потоков. Должен иметь значение |
| Обязательный параметр для сообщений в рамках потоков. Маркер, который генерирует компания для использования в качестве идентификатора. |
| Обязательный параметр для сообщений в рамках потоков. Уникальный идентификатор потока, предоставляемый WhatsApp. |
| Обязательный параметр для сообщений в рамках потоков. Текст на кнопке призыва к действию, например "Регистрация". Максимальная длина: 20 символов (смайлики не поддерживаются). |
| Необязательный параметр для сообщений в рамках потоков.
Значение по умолчанию: |
| Необязательный параметр для сообщений в рамках потоков. Обязательный параметр, только если для параметра
|
Имя | Описание |
---|---|
| Обязательный параметр, если для параметра Содержит объект media для этого документа. |
| Обязательный параметр, если для параметра Содержит объект media для этого изображения. |
| Обязательный параметр, если для параметра Текст заголовка. Смайлики разрешены, теги разметки запрещены. Максимальная длина: 60 символов. |
| Обязательный параметр. Тип заголовка, который вы хотите использовать. Поддерживаемые значения:
|
| Обязательный параметр, если для параметра Содержит объект media для этого видео. |
Имя | Описание |
---|---|
| Обязательный параметр для сообщений о нескольких товарах. Массив объектов Каждый объект
|
| Обязательный параметр для сообщений со списком. Содержит список строк. Общее количество строк во всех разделах не должно превышать 10. У каждой строки должны быть заголовок (максимальная длина: 24 символа) и ID (максимальная длина: 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. |
Чтобы узнать, как получить ID объекта media, обратитесь к разделу Получение ID медиафайла. Информацию о поддерживаемых типах медиафайлов для облачного 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 |
Модель платы за переписку изменилась. Чтобы узнать о работе новой модели платы за переписку, ознакомьтесь со статьей Расценки.
Кроме того, с 1 июля 2023 г. изменилась видимость metric_types
. Подробнее см. в таблице аналитики переписок.
Name | Description |
---|---|
| Required. Name of the template. |
| Required. Contains a The
|
| Optional. Array of |
| Optional. Only used for On-Premises API. Namespace of the template. |
В объект template
вложены следующие объекты:
Имя | Описание (нажмите стрелку в столбце слева, чтобы открыть список поддерживаемых вариантов) |
---|---|
| Обязательный параметр. Тип параметра для кнопки. |
| Обязательный параметр для кнопок Заданные разработчиком полезные данные, которые возвращаются при нажатии кнопки вместе с отображаемым на ней текстом. Пример можно найти в статье Обратный вызов при нажатии кнопки быстрого ответа. |
| Обязательный параметр для кнопок с URL. Заданный разработчиком суффикс, который добавляется к предварительно заданному URL префикса в шаблоне. |
Name | Description (Click the arrow in the left column for supported options.) |
---|---|
| Required. Describes the Example of a "components": [{ "type": "body", "parameters": [{ "type": "text", "text": "name" }, { "type": "text", "text": "Hi there" }] }] |
| Required when Type of button to create. |
| Required when Array of For components of type=button, see the |
| Required when Position index of the button. You can have up to 10 buttons using index values of 0 to 9. |
Имя | Описание |
---|---|
| Обязательный параметр. Текст по умолчанию на случай сбоя локализации. |
| Обязательный параметр. Код валюты согласно стандарту |
| Обязательный параметр. Значение, умноженное на 1 000. |
Имя | Описание |
---|---|
| Обязательный параметр. Текст по умолчанию. Для облачного API мы всегда используем значение по умолчанию и не пытаемся локализовать с использованием других необязательных полей. |
Имя | Описание |
---|---|
| Обязательный параметр. Описывает тип параметра. Поддерживаемые значения:
Для текстовых шаблонов поддерживаются только параметры |
| Обязательный параметр, если Текст сообщения. Ограничение на количество символов зависит от типа добавленного компонента. Для компонента типа
Для компонента типа
|
| Обязательный параметр, если |
| Обязательный параметр, если |
| Обязательный параметр, если Объект |
| Обязательный параметр, если Объект |
| Обязательный параметр, если Объект |
Имя | Описание |
---|---|
| Обязательный параметр для текстовых сообщений. Текст сообщения, в котором могут содержаться URL-адреса (они должны начинаться с http:// или https://) и может использоваться форматирование. Доступные варианты форматирования см. в этом разделе. Если вы добавляете в текст URL-адреса и хотите добавить поле предпросмотра ( Максимальная длина: 4 096 символов |
| Необязательный параметр. Только для облачного API. Установите значение Если параметр Пользователям локального API вместо этого следует использовать |
Имя | Описание |
---|---|
| Обязательный параметр. ID WhatsApp Message (WAMID) того сообщения, в котором должна отобразиться реакция. Реакция не отправляется, если:
Если ID принадлежит сообщению, которое было удалено, сообщение не будет доставлено. |
| Обязательный параметр. В сообщении можно использовать смайлики.
|
Полную информацию об использовании конечной точки /messages
для отправки сообщений см. в следующих руководствах:
curl -X POST \
'https://graph.facebook.com/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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"
}
}
]
}
}
}'
Модель платы за переписку изменилась. Чтобы узнать о работе новой модели платы за переписку, ознакомьтесь со статьей Расценки.
Кроме того, с 1 июля 2023 г. изменилась видимость metric_types
. Подробнее см. в таблице аналитики переписок.
curl -X POST \
'https://graph.facebook.com/v19.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/v19.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", } ] }