Перейти к основному содержимому

Вебхук о получении входящих сообщений

Обновлено: 13 июля 2026

Этот вебхук позволяет получать информацию о входящих сообщениях от получателей. При получении сообщения edna Pulse отправляет HTTP POST-запрос на указанный URL-адрес вашей системы. В статье описаны формат вебхука и передаваемые данные.

Например, если пользователь нажимает кнопку в сообщении WhatsApp, вебхук может содержать значение параметра payload — код кнопки, указанный при создании шаблона сообщения.

подсказка

WhatsApp
Viber
Вебхук доступен для всех каналов.

Настройка URL-адреса

Чтобы установить URL-адрес для вебхука о получении сообщения, отправьте POST-запрос на URL-адрес https://app.edna.io/api/callback/set.

File IconУстановка URL-адресов для вебхуков
подсказка

Ваш URL-адрес должен быть реальным и доступным для запроса из публичного интернета. Используйте только безопасный протокол HTTPS — по умолчанию TCP-порт 443. Максимальная длина URL-адреса — 500 символов.

к сведению

Если доставка вебхука завершается ошибкой, edna Pulse выполняет до трёх повторных попыток отправки по схеме backoff: через 4, 128 и 2048 секунд после предыдущей попытки.

Также URL-адрес вебхука можно указать в личном кабинете edna Pulse: Интеграция НастройкаОсновной профильWebhook-URL для входящих сообщений.

File IconОбщая информация про API-ключи и вебхуки edna Pulse File IconУправление вебхуками edna Pulse

Примеры вебхуков

Входящее текстовое сообщение

{
"id": 101,
"subject": "test_subject_WA",
"subjectId": 345,
"subscriber": {
"id": 202,
"identifier": "77050000000"
},
"userInfo": {
"userName": "alex",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "TEXT",
"attachment": null,
"location": null,
"caption": null,
"text": "Спасибо за помощь",
"payload": null,
"story": null,
"items": null
},
"receivedAt": "2022-04-29T15:30:08Z",
"replyOutMessageId": 5043874,
"replyOutMessageExternalRequestId": "2c2dd5f1-5ad8-449d-9c38-b6bdf288f1e5",
"replyInMessageId": null
}

Входящее текстовое сообщение с данными о последнем исходящем сообщении

{
"id": 152,
"subject": "test_subject_WA",
"subjectId": 342,
"subscriber": {
"id": 242,
"identifier": "77050000000"
},
"userInfo": {
"userName": "Alex",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "TEXT",
"attachment": null,
"location": null,
"referral": null,
"caption": null,
"text": "Добрый день! Заинтересовала белая кружка",
"payload": null,
"story": null,
"items": null,
"contact": null,
"product": null,
"catalog": null,
"order": null
},
"receivedAt": "2025-12-09T05:00:00Z",
"replyOutMessageId": null,
"replyOutMessageExternalRequestId": null,
"replyInMessageId": null,
"lastMessage": {
"outMessageId": 8542,
"address": "79800000001",
"contentType": "TEXT",
"text": "Здравствуйте! Рады предложить Вам наши самые лучшие кружки! Ознакомьтесь со списком ниже.",
"startTime": "2025-12-07T10:12:56Z"
}
}

Входящее сообщение WhatsApp — номер телефона получателя известен
WhatsApp

{
"id": 101,
"subject": "test_subject_WA",
"subjectId": 345,
"subscriber": {
"id": 204,
"identifier": "77050000000",
"identifiers": [
{
"type": "PHONE",
"value": "77050000000"
},
{
"type": "WHATSAPP_BSUID",
"value": "KZ.1234567890123456789"
},
{
"type": "WHATSAPP_PARENT_BSUID",
"value": "KZ.ENT.987654321987654321"
}
]
},
"userInfo": {
"userName": null,
"displayName": "Petr Semenov",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "TEXT",
"attachment": null,
"location": null,
"caption": null,
"text": "Спасибо за помощь",
"payload": null,
"story": null,
"items": null
},
"receivedAt": "2026-04-29T15:30:08Z",
"replyOutMessageId": 5043874,
"replyOutMessageExternalRequestId": "2c2dd5f1-5ad8-449d-9c38-b6bdf288f1e5",
"replyInMessageId": null
}

Входящее сообщение WhatsApp — номер телефона получателя неизвестен
WhatsApp

{
"id": 101,
"subject": "test_subject_WA",
"subjectId": 345,
"subscriber": {
"id": 204,
"identifier": "KZ.1234567890123456789",
"identifiers": [
{
"type": "WHATSAPP_BSUID",
"value": "KZ.1234567890123456789"
},
{
"type": "WHATSAPP_PARENT_BSUID",
"value": "KZ.ENT.987654321987654321"
},
{
"type": "WHATSAPP_USERNAME",
"value": "@petrsemenov"
}
]
},
"userInfo": {
"userName": "@petrsemenov",
"displayName": "Petr Semenov",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "TEXT",
"attachment": null,
"location": null,
"caption": null,
"text": "Спасибо за помощь",
"payload": null,
"story": null,
"items": null
},
"receivedAt": "2026-04-29T15:30:08Z",
"replyOutMessageId": 5043874,
"replyOutMessageExternalRequestId": "2c2dd5f1-5ad8-449d-9c38-b6bdf288f1e5",
"replyInMessageId": null
}

Входящее сообщение WhatsApp — номер телефона получателя скрыт, но в edna Pulse сохранена связка «BSUID + номера телефона»
WhatsApp

{
"id": 101,
"subject": "test_subject_WA",
"subjectId": 345,
"subscriber": {
"id": 204,
"identifier": "KZ.1234567890123456789",
"identifiers": [
{
"type": "PHONE",
"value": "77050000000"
},
{
"type": "WHATSAPP_BSUID",
"value": "KZ.1234567890123456789"
},
{
"type": "WHATSAPP_PARENT_BSUID",
"value": "KZ.ENT.987654321987654321"
},
{
"type": "WHATSAPP_USERNAME",
"value": "@petrsemenov"
}
]
},
"userInfo": {
"userName": "@petrsemenov",
"displayName": "Petr Semenov",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "TEXT",
"attachment": null,
"location": null,
"caption": null,
"text": "Спасибо за помощь",
"payload": null,
"story": null,
"items": null
},
"receivedAt": "2026-04-29T15:30:08Z",
"replyOutMessageId": 5043874,
"replyOutMessageExternalRequestId": "2c2dd5f1-5ad8-449d-9c38-b6bdf288f1e5",
"replyInMessageId": null
}

Входящее сообщение WhatsApp — реакция на интерактивное меню
WhatsApp

{
"id": 102,
"subject": "test_subject_WA",
"subjectId": 345,
"subscriber": {
"id": 202,
"identifier": "77050000000"
},
"userInfo": {
"userName": "alex",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "LIST_PICKER",
"attachment": null,
"location": null,
"caption": null,
"text": null,
"payload": null,
"story": null,
"items": [
{
"identifier": "01",
"title": "item 1",
"subtitle": null
}
]
},
"receivedAt": "2022-04-29T15:27:40Z",
"replyOutMessageId": null,
"replyOutMessageExternalRequestId": null,
"replyInMessageId": 537701
}

Входящее сообщение с параметром referral

подсказка

WhatsApp
Параметр позволяет получать информацию о месте, в котором клиент начал диалог в WhatsApp.

{
"id": 115611,
"subject": "test_WA",
"subjectId": 195,
"subscriber": {
"id": 1111111,
"identifier": "77050000000"
},
"userInfo": {
"userName": "Anna",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "TEXT",
"attachment": null,
"location": null,
"referral": {
"body": "This is a great product",
"headline": "Our new product",
"sourceId": "123",
"sourceType": "ad",
"sourceUrl": "https://www.fb.com"
},
"caption": null,
"text": "text for test",
"payload": null,
"story": null,
"items": null,
"contact": null,
"product": null,
"catalog": null,
"order": null
},
"receivedAt": "2024-01-11T11:20:00Z",
"replyOutMessageId": null,
"replyOutMessageExternalRequestId": null,
"replyInMessageId": null
}

Входящее сообщение типа PRODUCT

{
"id": 803101,
"subject": "test_subject_WA",
"subjectId": 47610,
"subscriber": {
"id": 4633047,
"identifier": "77050000000"
},
"userInfo": {
"userName": "Иван Иванов",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "PRODUCT",
"attachment": null,
"location": null,
"caption": null,
"text": "Hello",
"payload": null,
"story": null,
"items": null,
"contact": null,
"product": {
"id": "321",
"catalogId": "123"
},
"catalog": null,
"order": null
},
"receivedAt": "2024-08-05T08: 24: 14Z",
"replyOutMessageId": null,
"replyOutMessageExternalRequestId": null,
"replyInMessageId": null
}

Входящее сообщение типа ORDER

{
"id": 804201,
"subject": "test_subject_WA",
"subjectId": 47610,
"subscriber": {
"id": 4633047,
"identifier": "77050000000"
},
"userInfo": {
"userName": "Иван Иванов",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "ORDER",
"attachment": null,
"location": null,
"caption": null,
"text": null,
"payload": null,
"story": null,
"items": null,
"contact": null,
"product": null,
"catalog": null,
"order": {
"catalogId": "1022121105031922",
"products": [
{
"id": "111222",
"quantity": 2,
"price": 5,
"currency": "USD"
}
]
}
},
"receivedAt": "2024-08-05T12:44:22Z",
"replyOutMessageId": null,
"replyOutMessageExternalRequestId": null,
"replyInMessageId": null
}

Входящее сообщение типа FLOW

[
{
"id": 101,
"subject": "test_subject_WA",
"subjectId": 50520,
"subscriber": {
"id": 4633047,
"identifier": "77050000000"
},
"userInfo": {
"userName": "Иван Иванов",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "FLOW",
"attachment": null,
"location": null,
"referral": null,
"caption": null,
"text": "{\"flow_token\":\"example\"}",
"payload": null,
"story": null,
"items": null,
"contact": null,
"product": null,
"catalog": null,
"order": null
},
"receivedAt": "2025-03-25T12:12:12Z",
"replyOutMessageId": null,
"replyOutMessageExternalRequestId": null,
"replyInMessageId": null
}
]
[
{
"id": 101,
"subject": "test_subject_WA",
"subjectId": 50520,
"subscriber": {
"id": 4633047,
"identifier": "77050000000"
},
"userInfo": {
"userName": "Иван Иванов",
"firstName": null,
"lastName": null,
"avatarUrl": null
},
"messageContent": {
"type": "FLOW",
"attachment": null,
"location": null,
"referral": null,
"caption": null,
"text": "{\"screen_0_Name_0\":\"Ivan\",\"screen_0_Order_number_1\":\"6\",\"screen_0_Choose_a_topic_2\":\"0_order\",\"flow_token\":\"example\"}",
"payload": null,
"story": null,
"items": null,
"contact": null,
"product": null,
"catalog": null,
"order": null
},
"receivedAt": "2025-03-25T12:12:12Z",
"replyOutMessageId": null,
"replyOutMessageExternalRequestId": null,
"replyInMessageId": null
}
]

Параметры вебхука

ПараметрТип данныхОписание
idlongИдентификатор запроса.
subjectstringНазвание подписи.
subjectIdlongИдентификатор подписи. Можно узнать через метод получения списка каналов. File IconПолучение списка каналов
subscriberobjectИнформация об отправителе сообщения.
subscriber.idlongИдентификатор.
subscriber.identifierstring (required)

Идентификатор получателя, по которому пришло входящее сообщение.

  • Для WhatsApp — номер телефона или BSUID.
  • Для Viber — номер телефона.
subscriber.identifiersarray of objectsИнформация о дополнительных идентификаторах получателя, связанных с каналом.
subscriber.identifiers.typestring

Тип идентификатора получателя. Возможные значения для WhatsApp:

  • PHONE — номер телефона.
  • WHATSAPP_BSUID — Business-Scoped User ID (BSUID).
  • WHATSAPP_PARENT_BSUID — Parent Business-Scoped User ID (Parent BSUID).
  • WHATSAPP_USERNAME — имя пользователя WhatsApp (@username).
subscriber.identifiers.valuestringИдентификатор получателя.
userInfo.userNamestring (optional)Имя пользователя WhatsApp (@username).
userInfo.displayNamestring (optional)Отображаемое имя пользователя WhatsApp.
userInfoobjectИнформация о пользователе.
userInfo.userNamestringИмя.
userInfo.firstNamestringФамилия.
userInfo.lastNamestringОтчество.
userInfo.avatarUrlstringАватар.
messageContentobjectИнформация о сообщении.
messageContent.textstring (optional)

Текст сообщения. При использовании WhatsApp Flows в этом параметре будет приходить информация о Flow.

WhatsApp Flows — Meta for Developers

messageContent.typestring

Тип сообщения. Возможные значения:

  • TEXT — текстовое сообщение.
  • IMAGE — изображение.
  • DOCUMENT — документ, вложенный в сообщение.
  • VIDEO — сообщение, содержащее видео.
  • AUDIO — сообщение, содержащее звук.
  • PRODUCT — сообщение, содержащее товар.
  • ORDER — сообщение, содержащее заказ.
  • LIST_PICKER — кнопки интерактивного меню WhatsApp.
  • FLOW — сообщение, содержащее WhatsApp Flows.
File Icon

Использование WhatsApp Flows

textstring

Обязательный, если contentType = TEXT, AUTHENTICATION или FLOW.

  • Текст сообщения, если contentType = TEXT.
  • Текст сообщения, в которое будет вложен Flow, если contentType = FLOW.
  • Одноразовый пароль, если contentType = AUTHENTICATION.
messageContent.captionstring (optional)Название.
messageContent.payloadstring (optional)Код кнопки. Указывается при создании HSM-шаблона.
messageContent.itemsobjectНабор параметров, которые возвращаются в ответном сообщении от клиента, когда он реагирует на сообщение с интерактивным меню. Если сообщение клиента обычное (например, текст) и не является реакцией на сообщение с интерактивным меню, параметр возвращается следующим образом: messageContent.items = null.
messageContent.items.titlestring (required)Название элемента исходного интерактивного меню.
messageContent.items.subtitlestring (optional)Подзаголовок элемента исходного интерактивного меню.
messageContent.items.identifierinteger (optional)Сквозной для всего сообщения ID элемента, вернется в ответном сообщении пользователя.
messageContent.locationobject (optional)Адрес локации.
messageContent.attachmentobject (optional)null или данные документа.
messageContent.attachment.urlstring (optional)URL прикрепленного изображения, документа или видео.
messageContent.attachmentnamestring (optional)Название прикрепленного изображения, документа или видео.
messageContent.attachmentsizestring (optional)Размер.
messageContent.contactobject (optional)Карточка контакта, состоящая из полей: имя, фамилия, мобильный телефон.
contact.firstNamestring (optional)Имя в карточке контакта.
contact.lastNamestring (optional)Фамилия в карточке контакта.
contact.phoneNumberstring (optional)Мобильный телефон в карточке контакта.
receivedAtstringДата и время получения.
replyInMessageIdlongВнутренний идентификатор цитируемого сообщения пользователя. Пользователь цитирует своё сообщение, отправленное компании.
replyOutMessageIdlongВнутренний идентификатор цитируемого сообщения компании. Пользователь цитирует сообщение, полученное от компании.
replyOutMessageExternalRequestIdlongВнешний идентификатор цитируемого сообщения компании, который она указывает при отправке исходящего сообщения по API. В том случае, если пользователь процитировал сообщение, полученное от компании.
messageContent.referralobjectИнформация, полученная по скрытой от пользователя ссылке или из рекламного объявления.
messageContent.referral.bodystringТекст объявления, связанный с сообщением.
messageContent.referral.headlinestringЗаголовок объявления, связанный с сообщением.
messageContent.referral.sourceIdstringИдентификатор объявления или публикации в Facebook*.
messageContent.referral.sourceTypestring

Тип источника объявления. Возможные значения:

  • ad — объявление.
  • post — публикация.
messageContent.referral.sourceUrlstringURL-адрес объявления, которое просмотрел пользователь.
lastMessageobject

Объект с информацией о последнем исходящем сообщении, отправленном получателю за последние 14 дней до получения входящего сообщения.

Особенности:

  • Доступен только для канала WhatsApp.
  • Содержит только последнее исходящее сообщение, отправленное получателю из личного кабинета edna Pulse или по API edna Pulse за последние 14 дней до получения входящего сообщения.
  • Если подходящего исходящего сообщения нет, объект lastMessage не возвращается.
  • Возврат объекта lastMessage можно включить или отключить. По умолчанию функциональность отключена.

Для включения возврата объекта lastMessage отправьте запрос в службу поддержки edna.

lastMessage.outMessageIdintegerВнутренний идентификатор исходящего сообщения.
lastMessage.addressstringАдрес получателя — номер телефона или другой идентификатор.
lastMessage.contentTypestring

Тип сообщения. Возможные значения:

  • TEXT — текстовое сообщение.
lastMessage.textstringТекст сообщения.
lastMessage.startTimestringВремя отправки сообщения в формате даты ISO 8601 durations.
Например — 2025-07-01T00:00:00Z.
к сведению

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