Вебхук-запрос о статусе настройки звонков для подписи WhatsApp
После вызова метода api/channel-profile/whatsapp/{sender}/settings edna Pulse отправит вебхук-запрос со статусом настройки звонков для подписи WhatsApp.
При вызове метода api/channel-profile/whatsapp/{sender}/settings укажите в параметре callbackUrl URL-адрес для вебхук-запроса — конечную точку вашей системы, которая будет обрабатывать входящие POST-запросы от edna Pulse.
Формат вебхук-запроса
{
"requestId": "string",
"status": "string",
"calling": {
"status": "string",
"callIconVisibility": "string",
"callbackPermissionStatus": "string",
"callHours": {
"status": "string",
"timezoneId": "string",
"weeklyOperatingHours": [
{
"dayOfWeek": "string",
"openTime": "string",
"closeTime": "string"
},
{
"dayOfWeek": "string",
"openTime": "string",
"closeTime": "string"
}
],
"holidaySchedule": [
{
"date": "string",
"openTime": "string",
"closeTime": "string"
}
]
},
"sip": {
"status": "string",
"servers": [
{
"hostname": "string",
"port": "string",
"requestUriUserParams": {
"KEY1": "string",
"KEY2": "string",
"KEY3": "string"
}
}
]
},
"srtpKeyExchangeProtocol": "string"
}
}
Пример вебхук-запроса
{
"requestId": "e49f9a4c89c902902a24b0a2c7ccc7bb",
"status": "SUCCESS",
"calling": {
"status": "ENABLED",
"callIconVisibility": "DEFAULT",
"callbackPermissionStatus": "ENABLED",
"callHours": {
"status": "ENABLED",
"timezoneId": "America/Manaus",
"weeklyOperatingHours": [
{
"dayOfWeek": "MONDAY",
"openTime": "1030",
"closeTime": "1900"
},
{
"dayOfWeek": "TUESDAY",
"openTime": "1030",
"closeTime": "1900"
},
{
"dayOfWeek": "WEDNESDAY",
"openTime": "1030",
"closeTime": "1900"
},
{
"dayOfWeek": "THURSDAY",
"openTime": "1030",
"closeTime": "1900"
},
{
"dayOfWeek": "FRIDAY",
"openTime": "1030",
"closeTime": "1830"
},
{
"dayOfWeek": "SATURDAY",
"openTime": "1100",
"closeTime": "1630"
},
{
"dayOfWeek": "SUNDAY",
"openTime": "1100",
"closeTime": "1630"
}
],
"holidaySchedule": [
{
"date": "2026-01-01",
"openTime": "1200",
"closeTime": "1700"
},
{
"date": "2026-02-01",
"openTime": "1200",
"closeTime": "1700"
}
]
},
"sip": {
"status":"ENABLED",
"servers": [
{
"hostname":"sip.com",
"port":"5061",
"requestUriUserParams": {
"call_type":"wa",
"tgrp": "wacall"
}
}
]
},
"srtpKeyExchangeProtocol":"SDES"
}
}
Параметры вебхук-запроса
| Параметр | Тип данных | Характер | Описание |
|---|---|---|---|
requestId | string | Обязательный | Внутренний идентификатор запроса. Соответствует значению параметра requestId в ответе на запрос метода api/channel-profile/whatsapp/{sender}/settings.
Получение статуса настройки звонков для подписи WhatsApp |
status | string | Обязательный | Статус выполнения запроса метода api/channel-profile/whatsapp/{sender}/settings.
Возможные значения: - SUCCESS — успешно;
- FAILED — неуспешно, есть ошибки. |
calling | object | Обязательный | Настройка звонков для подписи. |
calling.status | string | Необязательный | Статус, в котором указана настройка включения или отключения звонков для подписи.
Возможные значения: - ENABLED — звонки для подписи включены;
- DISABLED — звонки для подписи отключены. |
calling.callIconVisibility | string | Необязательный | Настройка отображения иконки кнопки вызова WhatsApp для получателей при общении с компанией. Отображается, если звонки включены для подписи.
Возможные значения: - DEFAULT — отображение иконки кнопки вызова включено, значение по умолчанию;
- DISABLE_ALL — отображение иконки кнопки вызова отключено.
|
calling.callbackPermissionStatus | string | Необязательный | Настройка, которая отправляет получателю запрос на разрешение об исходящих звонках со стороны компании после входящего звонка получателя. Запрос на разрешение отображается как при пропущенном, так и при успешном звонке.
Возможные значения: - ENABLED — отображение запроса получателю на разрешение о звонках со стороны компании включено;
- DISABLED — отображение запроса получателю на разрешение о звонках со стороны компании отключено.
Для звонка получателю требуется явное разрешение от получателя на получение звонков. |
calling.callHours | object | Необязательный | Настройка, указывающая часовой пояс и график работы. Получатель сможет совершать входящие звонки в компанию только в указанные часы работы.
|
calling.callHours.status | string | Обязательный, если параметр calling.callHours не пустой | Статус включения настройки графика работы компании.
Возможные значения: - ENABLED — настройка графика работы компании включена;
- DISABLED — настройка графика работы компании отключена.
Если настройка графика работы компании отключена — компания считается открытой 24 часа в сутки, 7 дней в неделю. |
calling.callHours.timezoneId | string | Обязательный, если параметр calling.callHours не пустой | Часовой пояс, в котором работает компания.
|
calling.callHours.weeklyOperatingHours | array of objects | Обязательный, если параметр calling.callHours не пустой | График работы компании по дням недели. |
calling.callHours.weeklyOperatingHours.dayOfWeek | string | Обязательный, если параметр calling.callHours.weeklyOperatingHours не пустой | День недели.
Возможные значения: - MONDAY — понедельник;
- TUESDAY — вторник;
- WEDNESDAY — среда;
- THURSDAY — четверг;
- FRIDAY — пятница;
- SATURDAY — суббота;
- SUNDAY — воскресенье. |
calling.callHours.weeklyOperatingHours.openTime | string | Обязательный, если параметр calling.callHours.weeklyOperatingHours не пустой | Время открытия компании по графику работы в формате 24-часов. Например, 1130 = 11:30 AM.
- Допускается максимум 2 записи в один день недели. - openTime должно быть раньше closeTime.
- Перекрывающиеся записи не допускаются. |
calling.callHours.weeklyOperatingHours.closeTime | string | Обязательный, е сли параметр calling.callHours.weeklyOperatingHours не пустой | Время закрытия компании по графику работы в формате 24-часов. Например, 1130 = 11:30 AM.
- Допускается максимум 2 записи в один день недели. - openTime должно быть раньше closeTime.
- Перекрывающиеся записи не допускаются. |
calling.callHours.holidaySchedule | array of objects | Необязательный | Необязательная настройка для изменения стандартного графика работы компании на период праздников, выходных или отпуска. |
calling.callHours.holidaySchedule.date | string | Обязательный, если параметр calling.callHours.holidaySchedule не пустой | Дата в формате YYYY-MM-DD, для которой указаны изменения стандартного графика работы компании. |
calling.callHours.holidaySchedule.openTime | string | Обязательный, если параметр calling.callHours.holidaySchedule не пустой | Время открытия компании в период изменения стандартного графика работы в формате 24-часов. Например, 1130 = 11:30 AM.
- Допускается максимум 2 записи в один день недели. - openTime должно быть раньше closeTime.
- Перекрывающиеся записи не допускаются. |
calling.callHours.holidaySchedule.closeTime | string | Обязательный, если параметр calling.callHours.holidaySchedule не пустой | Время закрытия компании в период изменения стандартного графика работы в формате 24-часов. Например, 1130 = 11:30 AM.
- Допускается максимум 2 записи в один день недели. - openTime должно быть раньше closeTime.
- Перекрывающиеся записи не допускаются. |
calling.sip | object | Необязательный | Настройка сигнализации звонков через протокол установления сеанса — SIP. Если SIP включен, вы не сможете использовать API-методы и вебхуки, связанные с звонками.
|
calling.sip.status | string | Необязательный | Статус включения настройки сигнализации звонков через SIP для данной подписи.
Возможные значения: - ENABLED — настройка сигнализации звонков через SIP включена;
- DISABLED — настройка сигнализации звонков через SIP отключена, значение по умолчанию.
При статусе ENABLED для подписи будет использоваться только протокол SIP для сигнализации звонка, API не будет работать.
Если в статусе установить DISABLED, значения в параметре calling.sip.servers не сбрасываются. Если вы снова включите SIP для той же подписи, ранее настроенные значения будут активны. |
calling.sip.servers | array of objects | Необязательный | Настройка маршрутизации SIP-сервера.
Для одного приложения может быть настроен только один SIP-сервер. Для одной подписи может быть настроено несколько SIP-серверов, т.к. подпись может быть использована в нескольких приложениях. Чтобы удалить ранее настроенный SIP-сервер, передайте в этом параметре пустой массив. Если вы увидите, что некоторые серверы остались после удаления, эти серверы могут принадлежать другим приложениям, поэтому вам необходимо использовать соответствующие токены доступа, чтобы очистить их. |
calling.sip.servers.hostname | string | Обязательный, если параметр calling.sip.servers не пустой | Имя хоста SIP-сервера.
Запросы должны использовать TLS. |
calling.sip.servers.port | string | Обязательны й, если параметр calling.sip.servers не пустой | Порт SIP-сервера, который будет принимать запросы. Запросы должны использовать TLS.
Порт по умолчанию — 5061. |
calling.sip.servers.requestUriUserParams | object | Необязательный | Любые дополнительные параметры, которые вы передаёте в пользовательскую часть URI-запроса, используемого в SIP INVITE на ваш SIP-сервер.
Максимальный размер ключа/значения — 128 символов. Примером использования могут быть Trunk Groups (RFC 4904): -sip:+1234567890@sip.example.com;
-tgrp=wacall;
-trunk-context=byoc.example.com.
|
calling.srtpKeyExchangeProtocol | string | Необязательный | Настройка использования протокола обмена ключами SRTP.
Возможные значения: - SDES — простой текстовый ключ, определяется в SDP, отправляется по SIP или по API. Может помочь сократить время установления звонка;
- DTLS — обмен зашифрованными ключами, соответствующий отраслевым стандартам. Рекомендуется к использованию. Значение по умолчанию. |
Формат ответа
В ответ на вебхук-запрос от вашего сервера должен возвращаться статус с кодом 200.
Если в ответ на вебхук-запрос не возвращается статус с кодом 200 — edna Pulse выполняет еще 10 попыток отправки вебхук-запроса с интервалом 2^Х секунд между попытками (где Х — номер попытки), пока в ответ не придет код 200.
Таким образом, при отсутствии ответа запрос повторяется через 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 секунд после первой попытки.