message.incoming-message
Уведомляет о получении входящего сообщения.
HTTP-метод: POST
Content-Type: application/json
Полезная нагрузка (Payload)
Тело запроса содержит объект JSON со следующей структурой:
| Поле | Тип | Описание |
|---|---|---|
event | object | Объект с данными события. |
event.name | string | Название события: message.incoming-message. |
id | string | Уникальный идентификатор сообщения. |
status | string | Статус сообщения. Возможные значения: pending, sent, delivered, read, failed. |
sender | object | Объект с данными отправителя. |
sender.phone | string | Номер телефона отправителя в международном формате. |
sender.profile | object | Объект с профилем отправителя. |
sender.profile.name | string | Имя профиля отправителя. |
recipient | object | Объект с данными получателя. |
recipient.phone | string | Номер телефона получателя в международном формате. |
message | object | Объект с данными сообщения. Структура объекта зависит от message.type (см. ниже). |
message.id | string | Уникальный идентификатор сообщения в WhatsApp. |
message.type | string | Тип сообщения. Возможные значения: text, image, audio, video, document, sticker, button, reaction. Структура для каждого типа приведена ниже. |
message.timestamp | number | Временная метка (timestamp) получения сообщения в формате UNIX. |
message.context | object | Контекст сообщения. |
metadata | object | Дополнительные метаданные сообщения (если имеются). |
Детальная структура объекта message по типам
Содержимое объекта message меняется в зависимости от значения поля message.type.
Тип: text
Для сообщений типа `text` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.text | object | Объект с текстовыми данными. |
message.text.body | string | Текст сообщения. |
Пример объекта:
json
{
"type": "text",
"text": {
"body": "Hello! It's an example of a text message."
}
}Тип: image
Для сообщений типа `image` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.image | object | Объект с данными изображения. |
message.image.id | string | ID медиафайла. |
message.image.mime_type | string | MIME-тип изображения. |
message.image.sha256 | string | SHA256-хеш изображения. |
message.image.url | string | URL изображения. |
message.image.caption | string | Подпись к изображению (необязательно). |
Пример объекта:
json
{
"type": "image",
"image": {
"id": "123456789",
"mime_type": "image/jpeg",
"sha256": "PpBh2gtrfuryXkOOXoU6Y5GfOci6OUG1+Bq/GpQQjwU=",
"url": "https://example.com/image.jpg",
"caption": "Image caption"
}
}Тип: audio
Для сообщений типа `audio` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.audio | object | Объект с данными аудио. |
message.audio.id | string | ID медиафайла. |
message.audio.mime_type | string | MIME-тип аудио. |
message.audio.sha256 | string | SHA256-хеш аудио. |
message.audio.url | string | URL аудио. |
message.audio.is_voice | boolean | Является ли аудиосообщением. |
Пример объекта:
json
{
"type": "audio",
"audio": {
"id": "123456789",
"mime_type": "audio/ogg; codecs=opus",
"sha256": "PpBh2gtrfuryXkOOXoU6Y5GfOci6OUG1+Bq/GpQQjwU=",
"url": "https://example.com/audio.mp3",
"caption": "Audio caption"
}
}Тип: video
Для сообщений типа `video` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.video | object | Объект с данными видео. |
message.video.id | string | ID медиафайла. |
message.video.mime_type | string | MIME-тип видео. |
message.video.sha256 | string | SHA256-хеш видео. |
message.video.url | string | URL видео. |
message.video.caption | string | Подпись к видео (необязательно). |
Пример объекта:
json
{
"type": "video",
"video": {
"id": "123456789",
"mime_type": "video/mp4s",
"sha256": "PpBh2gtrfuryXkOOXoU6Y5GfOci6OUG1+Bq/GpQQjwU=",
"url": "https://example.com/video.mp4",
"caption": "Video caption"
}
}Тип: document
Для сообщений типа `document` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.document | object | Объект с данными документа. |
message.document.id | string | ID файла. |
message.document.mime_type | string | MIME-тип файла. |
message.document.sha256 | string | SHA256-хеш файла. |
message.document.url | string | URL файла. |
message.document.filename | string | Имя файла. |
Пример объекта:
json
{
"type": "document",
"document": {
"id": "123456789",
"mime_type": "application/pdf",
"sha256": "PpBh2gtrfuryXkOOXoU6Y5GfOci6OUG1+Bq/GpQQjwU=",
"url": "https://example.com/document.pdf",
"filename": "document.pdf"
}
}Тип: sticker
Для сообщений типа `sticker` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.sticker | object | Объект с данными стикера. |
message.sticker.id | string | ID файла. |
message.sticker.mime_type | string | MIME-тип стикера. |
message.sticker.sha256 | string | SHA256-хеш стикера. |
message.sticker.url | string | URL стикера. |
message.sticker.is_animated | boolean | Является ли стикер анимированным. |
Пример объекта:
json
{
"type": "sticker",
"sticker": {
"id": "123456789",
"mime_type": "image/webp",
"sha256": "PpBh2gtrfuryXkOOXoU6Y5GfOci6OUG1+Bq/GpQQjwU=",
"url": "https://example.com/sticker.webp",
"is_animated": false
}
}Тип: button
Для сообщений типа `button` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.button | object | Объект с данными кнопки. |
message.button.payload | string | — |
message.button.text | string | Текст кнопки. |
Пример объекта:
json
{
"type": "button",
"button": {
"payload": "Click Me",
"text": "Click Me"
}
}Тип: reaction
Для сообщений типа `reaction` в объекте `message` присутствуют дополнительные поля: | Поле | Тип | Описание |
|---|---|---|
message.reaction | object | Объект с данными реакции. |
message.reaction.wa_msg_id | string | Уникальный идентификатор сообщения в WhatsApp, на которое была поставлена реакция. |
message.reaction.emoji | string | Эмодзи реакции. |
Пример объекта:
json
{
"type": "reaction",
"reaction": {
"wa_msg_id": "123456789",
"emoji": "👍"
}
}Полный пример объекта данных
json
{
"event": {
"name": "message.incoming-message"
},
"id": "ABCD1234EFGH5678",
"status": "delivered",
"sender": {
"phone": "79991234567",
"profile": {
"name": "John Doe"
}
},
"recipient": {
"phone": "78881234567"
},
"message": {
"id": "wamid.HBgMNTc5OTEyMzQ1Njc4FQIAEhggRDNEMjA2RkY2QjA0RkY1N0I1AA==",
"type": "image",
"timestamp": 1770122177,
"image": {
"id": "123456789",
"mime_type": "image/jpeg",
"sha256": "PpBh2gtrfuryXkOOXoU6Y5GfOci6OUG1+Bq/GpQQjwU=",
"url": "https://example.com/image.jpg",
"caption": "Image caption"
}
},
"metadata": {
"error_code": 135000,
"error_text": "Generic user error"
}
}