WHATSAPP¶
Отправка¶
Для отправки WhatsApp-сообщения необходимо:
- Согласовать имя отправителя в личном кабинете.
- Вызвать метод POST /whatsapp/messages, передавая в теле параметры сообщения с указанием данных авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
messages | array[Message] | Массив сообщений содержащий заполненные объекты сообщений с параметрами каждого сообщения. Внимание! Рекомендуется в одном запросе передавать не более 100 объектов. Оптимальным вариантом будет от 10 до 50 |
Message¶
Набор доступных параметров для одного сообщения.
Внимание
Для отправки шаблонных сообщений параметры templateId
и languageCode
являются обязательными. Шаблонные сообщения как правило формируют новое диалоговое окно. Если сообщение отправляется в рамках уже открытого диалога, то параметры templateId
и languageCode
уже не являются обязательным условием.
Диалог начинается либо с исходящего шаблонного сообщения, либо с входящего от абонента.
Параметр | Тип данных | Описание |
---|---|---|
from | string | Согласованное имя отправителя. |
to | string | Номер телефона в международном формате, согласно стандарту E.164. |
text (optional) |
string | Текст сообщения. Максимальная длина - 4096 символов. |
address (optional) |
string | Адрес пользователя. |
addressName (optional) |
string | Название адреса пользователя. |
addressUrl (optional) |
string | URL адреса пользователя. |
callbackData (optional) |
object | Данные, которые будут указаны в коллбэке со статусом сообщения. Любой массив вида |
callbackUrl (optional) |
string | URL, на который система будет отправлять коллбэки при изменении статуса сообщения. Любой валидный URL со схемой |
contentName (optional) |
string | Название контента. Не более 100 символов. |
contentType (optional) |
MIME Type | MIME Type контента. Существующий MIME Type. |
contentUrl (optional) |
string | URL контента. Любой валидный URL со схемой HTTP или HTTPS . |
languageCode (optional) |
string | Код языка. По умолчанию en . Внимание! Данный параметр обязателен при отправке шаблонных типов сообщений |
latitude (optional) |
number | Широта. |
longitude (optional) |
number | Долгота. |
templateButtonParams (optional) |
TemplateButtonParamList | Параметры интерактивных кнопок в сообщении. |
templateId (optional) |
string | ID шаблона в системе поставщика. Внимание! Данный параметр обязателен при отправке шаблонных типов сообщений |
templateParams (optional) |
object | Набор параметров для заполнения по шаблону, где ключ - номер позиции значения. Внимание! В значении нельзя использовать: переносы строки, табуляцию и 4 пробела подряд. |
whatsAppContacts (optional) |
Contact | Информация о контакте. |
MIME Type¶
Медиа | Поддерживаемый тип контента |
Расширения файлов | Ограничения размера | Комментарий |
---|---|---|---|---|
audio |
audio/acc audio/mp4 audio/amr audio/mpeg |
.acc .mp4 .mp4a .amr .mpeg |
16Mb | codecs=opus |
voice |
audio/ogg |
.ogg |
16 Mb | Записанное на устройстве аудио.
|
document |
любой валидный MIME Type | 100 Mb | ||
image |
image/jpeg image/png |
.jpeg .jpg .png |
5 Mb | GIF-изображения будут автоматически преобразованы в MP4-видео на стороне WhatsApp. Изображения с прозрачным фоном не поддерживаются. |
video |
video/mp4 video/3gpp |
.mp4 .3gp .3g2 |
16 Mb | Поддерживаются только видеокодек H.264 и аудиокодек AAC. Поддерживаются только видео с одним аудиопотоком или без такового. |
TemplateButtonParamList¶
Внимание
Название объектов в массиве templateButtonParams
- это название вашей кнопки, согласованное в шаблоне.
Параметр | Тип данных | Описание |
---|---|---|
parameters | TemplateButtonParam | Параметры кнопки. |
parameters.payload (optional) |
string | Текстовое сообщение, которое будет отправлено в чат при нажатии на кнопку. Для кнопок типа QUICK_REPLY . |
parameters.text (optional) |
string | Суффикс, который добавляется к URL кнопки. Для кнопок типа URL . |
parameters.type | string | Указывается один из типов параметров: PAYLOAD или TEXT , в зависимости от типа кнопки. |
subType | string | Тип кнопки. Возможные значения: |
Contact¶
Параметр | Тип данных | Описание |
---|---|---|
name | object | Полное имя контакта (объект ContactName). |
addresses (optional) |
array[object] | Полные адреса контакта (объект ContactAddress). |
birthday (optional) |
string | Строка в формате YYYY-MM-DD . |
emails (optional) |
array[object] | Email-адреса контакта (объект ContactEmail). |
org (optional) |
object | Сведения об организации контакта (объект ContactCompany). |
phones (optional) |
array[object] | Номер телефона контакта (объект ContactPhone). |
urls (optional) |
array[object] | URL контакта (объект ContactUrl). |
ContactName¶
Примечание
С параметром formatted_name
необходимо указать хотя бы один из необязательных параметров.
Параметр | Тип данных | Описание |
---|---|---|
formatted_name | string | Полное имя в стандартном написании. |
first_name (optional) |
string | Имя. |
last_name (optional) |
string | Фамилия. |
middle_name (optional) |
string | Второе имя или отчество. |
suffix (optional) |
string | Суффикс имени. |
prefix (optional) |
string | Префикс имени. |
ContactAddress¶
Параметр | Тип данных | Описание |
---|---|---|
street (optional) |
string | Улица и номер дома. |
city (optional) |
string | Название города. |
state (optional) |
string | Сокращенное название федерального округа. |
zip (optional) |
string | Почтовый индекс. |
country (optional) |
string | Полное название страны. |
country_code (optional) |
string | Двухбуквенный код страны. |
type (optional) |
string | Стандартные значения: HOME , WORK . |
ContactEmail¶
Параметр | Тип данных | Описание |
---|---|---|
email (optional) |
string | Email-адрес. |
type (optional) |
string | Стандартные значения: HOME , WORK . |
ContactCompany¶
Параметр | Тип данных | Описание |
---|---|---|
company (optional) |
string | Название компании, в которой работает контакт. |
department (optional) |
string | Название отдела, в котором работает контакт. |
title (optional) |
string | Должность контакта в компании. |
ContactPhone¶
Параметр | Тип данных | Описание |
---|---|---|
phone (optional) |
string | Автоматически подставляется значение wa_id в виде отформатированного номера телефона. |
type (optional) |
string | Стандартные значения:CELL , MAIN , IPHONE , HOME , WORK . |
wa_id (optional) |
string | ID в WhatsApp. |
ContactUrl¶
Параметр | Тип данных | Описание |
---|---|---|
url (optional) |
string | URL контакта. |
type (optional) |
string | Стандартные значения: HOME , WORK . |
Примеры запросов¶
"messages": [
{
"from":"MyCompany",
"to":"79034567888",
"templateId": "account_activated",
"languageCode": "ru"
},
{
"from":"MyCompany",
"to":"79034567889",
"templateId": "account_activated",
"languageCode": "ru"
}
]
"messages": [
{
"from":"MyCompany",
"to":"79034567888",
"templateId": "account_activated",
"templateParams":{
"1": "+7(495) 646 00 54",
"2": "https://devino.online"
},
"languageCode": "ru",
"callbackUrl":"https://test_callback_url.site"
},
{
"from":"MyCompany",
"to":"79034567889",
"templateId": "account_activated",
"templateParams":{
"1": "+7(495) 646 00 54",
"2": "https://devino.online"
},
"languageCode": "ru",
"callbackUrl":"https://test_callback_url.site"
}
]
"messages": [
{
"from":"MyCompany",
"to":"79034567888",
"text": "Hello",
},
{
"from":"MyCompany",
"to":"79034567889",
"text": "Hello too",
}
]
"messages": [
{
"from":"MyCompany",
"to":"79034567888",
"contentUrl": "https://cdn.imagestorage.com/a/b/c/123/some_image_abcd123.jpg",
"contentName": "Some_image_test",
"contentType": "image/jpeg"
},
{
"from":"MyCompany",
"to":"79034567889",
"contentUrl": "https://cdn.imagestorage.com/a/b/c/123/some_image_abcd123.jpg",
"contentName": "Some_image_test",
"contentType": "image/jpeg"
}
]
Параметры ответа 200 OK
¶
Параметр | Тип данных | Описание |
---|---|---|
result | array[MessageResult] | Содержит массив с результатами обработки сообщений. Для сообщений с ошибкой |
MessageResult¶
Параметр | Тип данных | Описание |
---|---|---|
code | string | Указывает на результат обработки сообщения. 1. |
messageId | string | ID сообщения. Указывается только при "code": "OK" . В остальных случаях "null" |
reasons | array[RejectReason] | Массив ошибок, произошедших во время обработки сообщения. Указывается только при "code": "REJECTED" . |
description | string | Более детальное описание возникшей ошибки |
RejectReason¶
Параметр | Тип данных | Описание |
---|---|---|
key | string | Код ошибки. |
ref | string | Указывает на параметр, в котором произошла ошибка. |
Коды ошибок¶
Код | Параметр | Описание |
---|---|---|
invalid | messages[i].to | Неправильно указан номер телефона. |
invalid | messages[i].callbackUrl | URL не соответствует формату HTTP или HTTPS . |
invalid | messages[i].templateButtonParams | Параметр text не может быть пустым. |
invalid | messages[i].templateButtonParams | Параметр payload не может быть пустым. |
invalid | messages[i].languageCode | Неправильно указан код языка. |
Примеры ответов 200 OK
¶
{
"result": [
{
"code": "OK",
"messageId": "3482512350952730368"
}
]
}
{
"result": [
{
"code": "REJECTED",
"messageId": "null",
"reasons": [
{
"key": "from.not.available",
"ref": "from"
}
],
"description": "Invalid 'sourceAddress'"
}
]
}
Параметры ответа 400 Bad Request
¶
Если процессинг не доходит до стадии обработки сообщений, то результат с ошибкой будет иметь другой формат.
Параметр | Тип данных | Описание |
---|---|---|
result | null | Всегда содержит нулевое значение т.к. не содержит результатов обработки сообщений. |
reasons | array[RejectReason] | Массив ошибок, возникших при запросе . |
description | string | Более детальное описание возникшей ошибки. |
RejectReason¶
Параметр | Тип данных | Описание |
---|---|---|
key | string | Код ошибки. |
ref | string | Указывает на объект, в котором произошла ошибка. |
Пример ответа 400 Bad Request
¶
{
"result": null,
"reasons": [
{
"key": "channel.not.active.for.user",
"ref": "WHATSAPP"
}
],
"description": "Ошибка канала отправки: null"
}
Входящие сообщения¶
Как подключить
Для получения входящих WhatsApp-сообщений от пользователей обратитесь к менеджеру компании или в техническую поддержку. Также будет необходимо сообщить URL веб-сервера для обработки входящих сообщений.
Параметры¶
Параметр | Тип данных | Описание |
---|---|---|
incomingMessageId | integer | ID входящего сообщения. |
to | string | Название аккаунта получателя. |
from | string | Номер телефона отправителя. |
text | string | Текст сообщения. |
profileName | string | Название аккаунта отправителя. |
ts | integer | Время получения сообщения (timestamp) в миллисекундах. |
Пример¶
{
"incomingMessageId": 2834738753045023457,
"to": "BusinessProfile",
"from": "799900000000",
"text": "Hello!",
"profileName": "UserName",
"ts": 1670844823000
}
Коллбэки¶
Как подключить
Для настройки коллбэков со статусами сообщений необходимо обратиться к менеджеру компании или в техническую поддержку.
Возможные статусы¶
Код | Описание |
---|---|
SENT | Сообщение отправлено. |
EXPIRED | Истек срок жизни сообщения. |
DELIVERED | Сообщение доставлено получателю. |
SEEN | Сообщение просмотрено получателем. |
REJECTED | Сообщение отклонено оператором, либо превышен лимит отправки сообщений. |
UNDELIVERABLE | Сообщение отклонено оператором, либо отсутствует шаблон сообщения. |
Пример коллбэка¶
[
{
"messageId": 1,
"ts": 1636976602504,
"status": "DELIVERED",
"errorCode": 0,
"callbackData": "string"
}
]