Этот документ обновлен.
Перевод (Русский) еще не готов.
Последнее обновление (английский): 31 янв

Сообщения

Используйте конечную точку /PHONE_NUMBER_ID/messages, чтобы отправлять своим клиентам текстовые сообщения, медиафайлы, контакты, геоданные, интерактивные сообщения и шаблоны сообщений. Подробную информацию о сообщениях, которые можно отправлять, см. в этой статье.

Конечная точкаАутентификация

/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 whatsapp_business_messaging permission.

Сообщения идентифицируются по уникальному ID (WAMID). Вы можете отслеживать статус сообщения в Webhooks, используя его WAMID. Вы также можете помечать сообщения как прочитанные с помощью конечной точки messages. Максимальная длина WAMID не должна превышать 128 символов.

При использовании облачного API больше нет способа четко проверить, имеет ли тот или иной номер телефона ID WhatsApp. Чтобы отправить сообщение с использованием облачного API, просто отправьте его напрямую на номер телефона клиента — после того, как он согласился их принимать. Примеры см. в статье Справка, Сообщения.

Объект message

Чтобы отправить сообщение, сначала необходимо скомпоновать объект message, используя контент, который нужно отправить. В объекте message используются следующие параметры:

ИмяОписание (нажмите стрелку в столбце слева, чтобы открыть список поддерживаемых вариантов)

audio

Объект

Обязательный параметр, если type=audio.

Объект media, содержащий аудио.

biz_opaque_callback_data

Строка

Необязательный параметр.

Необязательная строка, используемая для отслеживания.


Например, в этом поле можно указать ID для отслеживания истории переписки клиента начиная с первого отправленного вами сообщения. После этого вы сможете отслеживать рентабельность инвестиций для различных типов шаблонов и определить, какой из них наиболее эффективен.


Любое приложение, подписанное на поле Webhooks messages в аккаунте WhatsApp Business, может получить эту строку, так как она содержится в объекте statuses в полезных данных Webhooks.


Облачный API не обрабатывает это поле, а просто возвращает его как часть Webhooks сообщения с информацией об отправке, доставке или прочтении.


Максимальное количество символов: 512.


Только для облачного API.

contacts

Объект

Обязательный параметр, если type=contacts.

Объект contacts.

context

Объект

Обязательный параметр при ответе на любое сообщение в переписке.

Объект, содержащий ID предыдущего сообщения, на которое вы отвечаете. Пример:


{"message_id":"MESSAGE_ID"}


Только для облачного API.

document

Объект

Обязательный параметр, если type=document.

Объект media, содержащий документ.

hsm

Объект

Содержит объект hsm. Этот параметр упразднен начиная с версии v2.39 локального API. Вместо него следует использовать объект template.


Только для локального API.

image

Объект

Обязательный параметр, если type=image.

Объект media, содержащий изображение.

interactive

Объект

Обязательный параметр, если type=interactive.

Объект interactive. Для компонентов каждого объекта interactive в большинстве случаев используется последовательный шаблон: header, body, footer и action.

location

Объект

Обязательный параметр, если type=location.

Объект location.

messaging_product

Строка

Обязательный параметр.

Служба обмена сообщениями, используемая для отправки запроса. Используйте "whatsapp".


Только для облачного API.

preview_url

Логическое значение

Обязательный параметр, если type=text.

Используется для предварительного просмотра URL в текстовых сообщениях (см. раздел Отправка URL в текстовых сообщениях). Если ваше сообщение не содержит URL, это поле необязательно. Значения:false (по умолчанию), true.


Только для локального API. Пользователи облачного API могут использовать эту функцию с полем preview_url в текстовом объекте.

recipient_type

Строка

Необязательный параметр.

В настоящий момент вы можете отправлять сообщения только отдельным лицам. Установите значение individual.


Значение по умолчанию: individual

status

Строка

Статус сообщения. Это поле можно использовать, чтобы пометить сообщение как read. Дополнительную информацию см. в следующих руководствах:


sticker

Объект

Обязательный параметр, если type=sticker.

Объект media, содержащий стикер.


Облачный API: поддерживаются входящие стикеры всех типов, а также статические и анимированные исходящие стикеры сторонних разработчиков. Статический стикер должен иметь размер 512 x 512 пикселей, размер файла не должен превышать 100 КБ. Анимированный стикер должен иметь размер 512 x 512 пикселей, размер файла не должен превышать 500 КБ.


Локальный API: поддерживаются входящие стикеры всех типов и только статические исходящие стикеры сторонних разработчиков. Статический стикер должен иметь размер 512 x 512 пикселей, размер файла не должен превышать 100 КБ. Анимированные стикеры не поддерживаются.

template

Объект

Обязательный параметр, если type=template.

Объект template.

text

Объект

Обязательный параметр для текстовых сообщений.

Объект text.

to

Строка

Обязательный параметр.

ID WhatsApp или номер телефона клиента, которому вы хотите отправить сообщение. См. раздел Форматы номеров телефонов.


При необходимости пользователи локального API могут получить этот номер, выполнив вызов к конечной точке contacts.

type

Строка

Необязательный параметр.

Тип сообщения, которое вы хотите отправить. Если значение не указано, по умолчанию используется text.

В объект message вкладываются следующие объекты:

Объект contacts

NameDescription

addresses

object

Optional.

Full contact address(es) formatted as an addresses object. The object can contain the following fields:

streetstringOptional. Street number and name.

citystringOptional. City name.

statestringOptional. State abbreviation.

zipstringOptional. ZIP code.

countrystringOptional. Full country name.

country_codestringOptional. Two-letter country abbreviation.

typestringOptional. Standard values are HOME and WORK.

birthday

Optional.

YYYY-MM-DD formatted string.

emails

object

Optional.

Contact email address(es) formatted as an emails object. The object can contain the following fields:

emailstringOptional. Email address.

typestringOptional. Standard values are HOME and WORK.

name

object

Required.

Full contact name formatted as a name object. The object can contain the following fields:

formatted_namestringRequired. Full name, as it normally appears.

first_namestringOptional*. First name.

last_namestringOptional*. Last name.

middle_namestringOptional*. Middle name.

suffixstringOptional*. Name suffix.

prefixstringOptional*. Name prefix.


*At least one of the optional parameters needs to be included along with the formatted_name parameter.

org

object

Optional.

Contact organization information formatted as an org object. The object can contain the following fields:

companystringOptional. Name of the contact's company.

departmentstringOptional. Name of the contact's department.

titlestringOptional. Contact's business title.

phones

object

Optional.

Contact phone number(s) formatted as a phone object. The object can contain the following fields:

phonestringOptional. Automatically populated with the `wa_id` value as a formatted phone number.

typestringOptional. Standard Values are CELL, MAIN, IPHONE, HOME, and WORK.

wa_idstringOptional. WhatsApp ID.

urls

object

Optional.

Contact URL(s) formatted as a urls object. The object can contain the following fields:

urlstringOptional. URL.

typestringOptional. Standard values are HOME and WORK.

Объект interactive

ИмяОписание

action

Объект

Обязательный параметр.

Действие, которое пользователь должен выполнить после прочтения сообщения.

body

Объект

Необязательный параметр для типа product. Обязательный параметр для сообщений прочих типов.

Объект с текстом сообщения.


Объект body содержит следующее поле:

textстрока — обязательный параметр, если имеется текст сообщения. Контент сообщения. Поддерживаются смайлики и теги разметки. Максимальная длина — 1024 символа.

footer

Объект

Необязательный параметр. Объект с нижним колонтитулом сообщения.


Объект footer содержит следующее поле:

textстрока — обязательный параметр, если имеется нижний колонтитул. Контент нижнего колонтитула. Поддерживаются смайлики, теги разметки и ссылки. Максимальная длина: 60 символов.

header

Объект

Обязательный параметр для типа product_list. Необязательный параметр для других типов.

Контент заголовка, отображаемый вверху сообщения. Если используется объект interactive типа product, указать заголовок нельзя. Дополнительную информацию см. в описании объекта header.

type

Объект

Обязательный параметр.

Тип интерактивного сообщения, которое вы хотите отправить. Поддерживаемые значения:


  • button — для кнопок ответа;
  • catalog_message — для сообщений с каталогом;
  • list — для сообщений со списком;
  • product — для сообщений об одном товаре;
  • product_list — для сообщений о нескольких товарах.
  • flow — для сообщений в рамках потоков;

В объект interactive вложены следующие объекты:

Объект action

ИмяОписание

button

Строка

Обязательный параметр для сообщений со списком.

Содержимое кнопки. Это значение не может быть пустой строкой и должно быть уникальным в пределах сообщения. Смайлики поддерживаются, а теги разметки — нет.


Максимальная длина — 20 символов.

buttons

Массив объектов

Обязательный параметр для кнопок ответа.

Объект button может содержать следующие параметры:


  • type — только тип reply (для кнопки ответа);
  • title — название кнопки. Это значение не может быть пустой строкой и должно быть уникальным в пределах сообщения. Смайлики поддерживаются, а теги разметки — нет. Максимальная длина: 20 символов.
  • id: уникальный идентификатор кнопки. Этот ID возвращается в объекте Webhook, когда пользователь нажимает кнопку. Максимальная длина: 256 символов.

Можно задать до 3 кнопок. В начале и в конце ID нельзя использовать пробелы.

catalog_id

Строка

Обязательный параметр для сообщений об одном или нескольких товарах.

Уникальный идентификатор каталога Facebook, связанного с аккаунтом WhatsApp Business. Этот ID можно получить с помощью Meta Commerce Manager.

product_retailer_id

Строка

Обязательный параметр для сообщений об одном или нескольких товарах.

Уникальный идентификатор товара в каталоге.


Чтобы получить этот ID, перейдите в Meta Commerce Manager и выберите свой бизнес-аккаунт Meta. Откроется список магазинов, подключенных к вашему аккаунту. Выберите нужный магазин. На панели слева выберите Каталог > Товары и найдите товар, который хотите упомянуть. ID этого товара будет показан под его названием.

sections

Массив объектов

Обязательный параметр для сообщений со списком и сообщений о нескольких товарах.

Массив объектов section. Максимальное количество: 1, минимальное: 10. См. описание объекта section.

mode

Строка

Необязательный параметр для сообщений в рамках потоков.

Текущий режим потока: draft или published.


Значение по умолчанию: published

flow_message_version

Строка

Обязательный параметр для сообщений в рамках потоков.

Должен иметь значение 3.

flow_token

Строка

Обязательный параметр для сообщений в рамках потоков.

Маркер, который генерирует компания для использования в качестве идентификатора.

flow_id

Строка

Обязательный параметр для сообщений в рамках потоков.

Уникальный идентификатор потока, предоставляемый WhatsApp.

flow_cta

Строка

Обязательный параметр для сообщений в рамках потоков.

Текст на кнопке призыва к действию, например "Регистрация".


Максимальная длина: 20 символов (смайлики не поддерживаются).

flow_action

Строка

Необязательный параметр для сообщений в рамках потоков.

navigate или data_exchange. Используйте navigate, чтобы задать первый экран в качестве части сообщения. Используйте data_exchange для расширенных сценариев использования, в которых первый экран предоставляется вашей конечной точкой.


Значение по умолчанию: navigate

flow_action_payload

Объект

Необязательный параметр для сообщений в рамках потоков.

Обязательный параметр, только если для параметра flow_action задано значение navigate. Этот объект может содержать следующие параметры:

screenстрока — обязательный параметр. id первого экрана потока.

dataобъект — необязательный параметр. Входные данные первого экрана потока. Не может быть пустым объектом.

Объект header

ИмяОписание

document

Объект

Обязательный параметр, если для параметра type задано значение document.

Содержит объект media для этого документа.

image

Объект

Обязательный параметр, если для параметра type задано значение image.

Содержит объект media для этого изображения.

text

Строка

Обязательный параметр, если для параметра type задано значение text.

Текст заголовка. Смайлики разрешены, теги разметки запрещены.


Максимальная длина: 60 символов.

type

Строка

Обязательный параметр.

Тип заголовка, который вы хотите использовать. Поддерживаемые значения:


  • text — для сообщений со списком, кнопок ответа и сообщений о нескольких товарах;
  • video — для кнопок ответа;
  • image — для кнопок ответа;
  • document — для кнопок ответа.

video

Объект

Обязательный параметр, если для параметра type задано значение video.

Содержит объект media для этого видео.

Объект section

ИмяОписание

product_items

Массив объектов

Обязательный параметр для сообщений о нескольких товарах.

Массив объектов product. Минимальное количество товаров для каждого раздела: 1, максимальное количество товаров для всех разделов: 30.


Каждый объект product содержит следующее поле:


  • product_retailer_idстрока — обязательный параметр для сообщений о нескольких товарах. Уникальный идентификатор товара в каталоге. Чтобы получить этот ID, перейдите в Meta Commerce Manager, выберите свой аккаунт и магазин, который необходимо использовать. Затем нажмите Каталог > Товары и найдите товар, который нужно упомянуть. ID этого товара будет показан под его названием.

rows

Массив объектов

Обязательный параметр для сообщений со списком.

Содержит список строк. Общее количество строк во всех разделах не должно превышать 10.


У каждой строки должны быть заголовок (максимальная длина: 24 символа) и ID (максимальная длина: 200 символов). Можно добавить необязательное описание (максимальная длина: 72 символа).


Пример:

"rows": [
  {
   "id":"unique-row-identifier-here",
   "title": "row-title-content-here",
   "description": "row-description-content-here",           
   }
]

title

Строка

Обязательный параметр, если в сообщении несколько разделов.

Заголовок раздела.


Максимальная длина: 24 символа.

Объект location

NameDescription

latitude

Required.

Location latitude in decimal degrees.

longitude

Required.

Location longitude in decimal degrees.

name

Required.

Name of the location.

address

Required.

Address of the location.

Объект media

Чтобы узнать, как получить ID объекта media, обратитесь к разделу Получение ID медиафайла. Информацию о поддерживаемых типах медиафайлов для облачного API см. в этой статье.

NameDescription

id

string

Required when type is audio, document, image, sticker, or video and you are not using a link.


The media object ID. Do not use this field when message type is set to text.

link

string

Required when type is audio, document, image, sticker, or video and you are not using an uploaded media ID (i.e. you are hosting the media asset on your public server).

The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs.


Do not use this field when message type is set to text.


Cloud API users only:


  • See Media HTTP Caching if you would like us to cache the media asset for future messages.
  • When we request the media asset from your server you must indicate the media's MIME type by including the Content-Type HTTP header. For example: Content-Type: video/mp4. See Supported Media Types for a list of supported media and their MIME types.

caption

string

Optional.


Media asset caption. Do not use with audio or sticker media.


On-Premises API users:

  • For v2.41.2 or newer, this field is is limited to 1024 characters.
  • Captions are currently not supported for document media.

filename

string

Optional.


Describes the filename for the specific document. Use only with document media.


The extension of the filename will specify what format the document is displayed as in WhatsApp.

provider

string

Optional. On-Premises API only.

This path is optionally used with a link when the HTTP/HTTPS link is not directly accessible and requires additional configurations like a bearer token. For information on configuring providers, see the Media Providers documentation.

Объект template

Модель платы за переписку изменилась. Чтобы узнать о работе новой модели платы за переписку, ознакомьтесь со статьей Расценки.

Кроме того, с 1 июля 2023 г. изменилась видимость metric_types. Подробнее см. в таблице аналитики переписок.

NameDescription

name

Required.

Name of the template.

language

object

Required.

Contains a language object. Specifies the language the template may be rendered in.


The language object can contain the following fields:

policystringRequired. The language policy the message should follow. The only supported option is deterministic. See Language Policy Options.

codestringRequired. The code of the language or locale to use. Accepts both language and language_locale formats (e.g., en and en_US). For all codes, see Supported Languages.

components

array of objects

Optional.

Array of components objects containing the parameters of the message.

namespace

Optional. Only used for On-Premises API.

Namespace of the template.

В объект template вложены следующие объекты:

Объект button

ИмяОписание (нажмите стрелку в столбце слева, чтобы открыть список поддерживаемых вариантов)

type

Строка

Обязательный параметр.

Тип параметра для кнопки.

Поддерживаемые варианты

  • "payload"
  • "text"

payload

Обязательный параметр для кнопок quick_reply.

Заданные разработчиком полезные данные, которые возвращаются при нажатии кнопки вместе с отображаемым на ней текстом.


Пример можно найти в статье Обратный вызов при нажатии кнопки быстрого ответа.

text

Обязательный параметр для кнопок с URL.

Заданный разработчиком суффикс, который добавляется к предварительно заданному URL префикса в шаблоне.

Объект components

NameDescription (Click the arrow in the left column for supported options.)

type

string

Required.

Describes the component type.


Example of a components object with an array of parameters object nested inside:

 "components": [{
   "type": "body",
   "parameters": [{
                "type": "text",
                "text": "name"
            },
            {
            "type": "text",
            "text": "Hi there"
            }]
      }] 

Supported Options

  • header
  • body
  • button

For text-based templates, we only support the type=body.

sub_type

string

Required when type=button. Not used for the other types.

Type of button to create.

Supported Options

  • quick_reply: Refers to a previously created quick reply button that allows for the customer to return a predefined message.
  • url: Refers to a previously created button that allows the customer to visit the URL generated by appending the text parameter to the predefined prefix URL in the template.
  • catalog: Refers to a previously created catalog button that allows for the customer to return a full product catalog.

parameters

array of objects

Required when type=button.

Array of parameter objects with the content of the message.

For components of type=button, see the button parameter object.

index

Required when type=button. Not used for the other types.

Position index of the button. You can have up to 10 buttons using index values of 0 to 9.

Объект currency

ИмяОписание

fallback_value

Обязательный параметр.

Текст по умолчанию на случай сбоя локализации.

code

Обязательный параметр.

Код валюты согласно стандарту ISO 4217.

amount_1000

Обязательный параметр.

Значение, умноженное на 1 000.

Объект date_time

ИмяОписание

fallback_value

Обязательный параметр.

Текст по умолчанию. Для облачного API мы всегда используем значение по умолчанию и не пытаемся локализовать с использованием других необязательных полей.

Объект parameter

ИмяОписание

type

Строка

Обязательный параметр.

Описывает тип параметра. Поддерживаемые значения:


  • currency;
  • date_time;
  • document;
  • image;
  • text;
  • video.

Для текстовых шаблонов поддерживаются только параметры currency, date_time и text.

text

Строка

Обязательный параметр, если type=text.

Текст сообщения. Ограничение на количество символов зависит от типа добавленного компонента.


Для компонента типа header:

  • 60 символов.

Для компонента типа body:

  • 1 024 символа, если добавлены компоненты других типов;
  • 32 768 символов, если добавлен только компонент типа body.

currency

Объект

Обязательный параметр, если type=currency.

Объект currency.

date_time

Объект

Обязательный параметр, если type=date_time.

Объект date_time.

image

Объект

Обязательный параметр, если type=image.

Объект media типа image. При использовании шаблона сообщения с медиафайлами субтитры не поддерживаются.

document

Объект

Обязательный параметр, если type=document.

Объект media типа document. Для шаблонов сообщений с медиафайлами поддерживаются только документы в формате PDF. При использовании шаблона сообщения с медиафайлами субтитры не поддерживаются.

video

Объект

Обязательный параметр, если type=video.

Объект media типа video. При использовании шаблона сообщения с медиафайлами субтитры не поддерживаются.

Объект text

ИмяОписание

body

Строка

Обязательный параметр для текстовых сообщений.

Текст сообщения, в котором могут содержаться URL-адреса (они должны начинаться с http:// или https://) и может использоваться форматирование. Доступные варианты форматирования см. в этом разделе.


Если вы добавляете в текст URL-адреса и хотите добавить поле предпросмотра (preview_url: true), убедитесь, что URL начинается с http:// или https://. Предпочтительно использовать URL , которые начинаются с https://. Указывать имя хоста обязательно, поскольку IP-адреса не сопоставляются.


Максимальная длина: 4 096 символов

preview_url

Логическое значение

Необязательный параметр. Только для облачного API.

Установите значение true, чтобы приложения WhatsApp Messenger и WhatsApp Business пытались показать предпросмотр ссылки для всех URL в текстовой строке body. URL должны начинаться с http:// или https://. Если в текстовой строке body указаны несколько URL, будет показан предварительный просмотр только для первого.


Если параметр preview_url не указан или показать предпросмотр не удается, будет создана ссылка с возможностью перехода.


Пользователям локального API вместо этого следует использовать preview_url в полезных данных сообщения верхнего уровня. См. раздел Параметры.

Объект reaction

ИмяОписание

message_id

Строка

Обязательный параметр.

ID WhatsApp Message (WAMID) того сообщения, в котором должна отобразиться реакция. Реакция не отправляется, если:


  • сообщение старше 30 дней;
  • это сообщение с реакцией;
  • сообщение было удалено.

Если ID принадлежит сообщению, которое было удалено, сообщение не будет доставлено.

emoji

Строка

Обязательный параметр.

В сообщении можно использовать смайлики.


  • Допускаются все смайлики, поддерживаемые устройствами Android и iOS.
  • Также поддерживаются генерируемые смайлики.
  • Если используются смайлики в формате Unicode, это должны быть экранированные значения в кодировке Java или JavaScript.
  • В сообщении с реакцией можно отправить только один смайлик.
  • Чтобы удалить ранее отправленный смайлик, используйте пустую строку.

Обзор

Руководства

Полную информацию об использовании конечной точки /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",
        }
      ]
    }