Звонки, инициированные бизнесом | Документация для разработчиков
Звонки, инициированные бизнесом
Обновлено: 13 ноября 2025 г
Обзор
API для звонков позволяет совершать звонки пользователям WhatsApp из вашего бизнеса.
Пользователь определяет, когда можно принимать звонки, предоставляя права на совершение звонков рабочему номеру телефона.
Диаграмма последовательности вызовов

Примечание:
ACCEPTED обычно приходит после установления соединения. Облачный API отправляет его в основном для аудита событий вызова.Предварительные требования
Прежде чем начать совершать звонки по инициативе компании, убедитесь в следующем:
И наконец, прежде чем позвонить пользователю WhatsApp, вы должны получить его разрешение.
Схема обработки звонков, инициированных бизнесом
Часть 1: Получение разрешения на звонок пользователю WhatsApp
Получить разрешение на совершение звонков от пользователя WhatsApp можно одним из следующих способов:
Отправить сообщение с запросом на разрешение вызова
Вы можете запросить разрешение на звонок, отправив пользователю WhatsApp запрос на разрешение. Отправьте его в виде сообщения в свободной форме во время работы службы поддержки клиентов или используйте шаблон сообщения.
Включите параметр callback_permission_status в настройках вызова.
Если
параметр callback_permission_status включен, пользователь автоматически предоставляет вашей компании разрешение на совершение звонков при обращении к вам.Пользователь WhatsApp предоставил постоянные разрешения
Пользователь также может в любое время предоставить компании постоянные права доступа через свой бизнес-профиль.
Часть 2: Ваша компания инициирует новый звонок пользователю WhatsApp
Теперь, когда у вас есть разрешение пользователя, вы можете инициировать новый звонок нужному пользователю WhatsApp.
Теперь вы можете позвонить на
почту. Для инициирования нового вызова необходимо передать в тело запроса следующую конечную точку:POST <PHONE_NUMBER_ID>/calls
{"messaging_product":"whatsapp","to":"12185552828",// Номер телефона пользователя WhatsApp (звонящего)"action":"connect","session":{"sdp_type":"offer","sdp":"<}}Если ошибок нет, вы получите успешный ответ:
{"messaging_product":"whatsapp","calls":["id":"wacid.HBgLMTIxODU1NTI4MjgVAgARGCAyODRQIAFRoA",// Идентификатор вызова WhatsApp]}Примечание: Ответ с кодом ошибки
138006 указывает на отсутствие у пользователя WhatsApp разрешения на запрос вызова для этого номера компании.Часть 3: Установление соединения с помощью сигнализации веб-перехватчика
После успешного инициирования нового вызова вы получите ответ веб-перехватчика Call Connect, содержащий
ответ SDP от Cloud API. Затем ваша компания применит ответ SDP из этого веб-перехватчика к вашему стеку WebRTC для инициирования медиасоединения.{"entry":[{"changes":[{"field":"calls","value":{"calls":[{"biz_opaque_callback_data":"TRx334DUDFTI4Mj",// Произвольная строка, передаваемая бизнесом для целей отслеживания"session":{"sdp_type":"answer","sdp":"},"from":"13175551399",// Номер телефона компании, с которой совершается звонок (вызывающий абонент)"connection":{"webrtc":{"sdp":"}},"id":"wacid.HBgLMTIxODU1NTI4MjgVAgARGCAyODRQIAFRoA",// Идентификатор вызова WhatsApp"to":"12185552828",// Номер телефона пользователя WhatsApp (звонящего)"event":"connect","timestamp":"1749196895","direction":"BUSINESS_INITIATED"}],"metadata":{// Идентификатор и отображаемый номер телефона компании, совершающей звонок (звонящего)"phone_number_id":"436666719526789","display_phone_number":"13175551399"},"messaging_product":"whatsapp"}}],"id":"366634483210360"// Идентификатор бизнес-аккаунта WhatsApp, связанный с номером телефона компании}],"object":"whatsapp_business_account"},После этого вы получаете соответствующий веб-хук статуса, указывающий на то, что вызов
проходит успешно, принятили отклонен:{"entry":[{"changes":[{"field":"calls","value":{"statuses":[{"id":"wacid.HBgLMTIxODU1NTI4MjgVAgARGCAyODRQIAFRoA",// Идентификатор вызова WhatsApp"type":"call","status":"[ЗВОНОК|ПРИНЯТО|ОТКЛОНЕНО]",// Текущий статус вызова"timestamp":"1749197000","recipient_id":"12185552828"// Номер телефона пользователя WhatsApp (звонящий)}],"metadata":{// Идентификатор и отображаемый номер рабочего телефона, с которого совершается звонок (звонящий)"phone_number_id":"436666719526789","display_phone_number":"13175551399"},"messaging_product":"whatsapp"}}],"id":"366634483210360"// Идентификатор бизнес-аккаунта WhatsApp, связанный с номером телефона компании}],"object":"whatsapp_business_account"}Часть 4: Ваша компания или пользователь WhatsApp завершает звонок
Вы или пользователь WhatsApp можете в любой момент завершить звонок.
Вы звоните на
почту Для завершения вызова необходимо отправить следующий запрос в конечную точку:ПОЧТА<PHONE_NUMBER_ID> /calls { "messaging_product": "whatsapp", "call_id": "wacid.HBgLMTIxODU1NTI4MjgVAgARGCAyODRQIAFRoA", // Идентификатор вызова WhatsApp "action" : "terminate" }Если ошибок не обнаружено, вы получите подтверждение об успешном завершении операции:
{"success":true}Когда компания или пользователь WhatsApp завершают вызов, вы получаете веб-хук "Завершение вызова":
{"object":"whatsapp_business_account","entry":[{"id":"366634483210360",// Идентификатор бизнес-аккаунта WhatsApp, связанный с номером телефона компании"changes":[{"value":{"messaging_product":"whatsapp","metadata":{// Идентификатор и отображаемый номер телефона компании, совершающей звонок (звонящий)"phone_number_id":"436666719526789","display_phone_number":"13175551399",},"calls":[{"id":"wacid.HBgLMTIxODU1NTI4MjgVAgARGCAyODRQIAFRoA","to":"12185552828",// The Номер телефона пользователя WhatsApp (звонящий)"от":"13175551399",// Рабочий номер телефона, с которого совершается звонок (звонящий)"событие":"завершение","направление":"BUSINESS_INITIATED","временная метка":"1749197480","статус":["Неудачно","Завершено"],"время начала":"1671644824",// Временная метка начала вызова в формате UNIX"время окончания":"1671644944",// Временная метка окончания вызова в формате UNIX"длительность":480// Длительность вызова в секундах}]},"поле":"звонки"}]}]}Конечные точки для звонков, инициированных бизнесом
Инициировать звонок
Используйте этот конечный пункт для инициирования звонка пользователю WhatsApp, указав номер телефона и предложение WebRTC-звонка. Существует ограничение в 10000 инициированных новых звонков в течение 24 часов с одного корпоративного номера телефона.
Синтаксис запроса
POST <PHONE_NUMBER_ID>/calls| Заполнитель | Описание | Пример значения |
|---|---|---|
<PHONE_NUMBER_ID>Целое число | Необходимый Идентификатор номера телефона компании, с которого вы инициируете новый звонок. | 106540352242922 |
Текст запроса
{"messaging_product":"whatsapp","to":"14085551234","action":"connect","session":{"sdp_type":"offer","sdp":"<},"biz_opaque_callback_data":"0fS5cePMok"}Параметры тела
| Параметр | Описание | Пример значения |
|---|---|---|
кЦелое число | Необходимый Вызываемый номер (звонящий) | “17863476655” |
действиеНить | Необходимый Действие, выполняемое в отношении указанного идентификатора вызова. Значения могут быть связаны | предварительное принятие | принятие | отклонение | завершение | "соединять" |
сессияJSON-объект | Необязательный Содержит тип протокола описания сессии (SDP) и язык описания. Требуется два значения: sdp_type — (Строка) Обязательный параметр«Предложение» обозначает предложение SDP sdp — (Строка) Обязательный параметрИнформация SDP устройства на другом конце вызова. SDP должен соответствовать 8866.RFC | |
biz_opaque_callback_dataНить | Необязательный Произвольная строка, которую можно передать в качестве параметра для целей отслеживания и регистрации. Любое приложение, подписанное на поле веб-перехватчика «звонки» в вашем аккаунте WhatsApp Business, может получить эту строку, поскольку она включена в «звонки» в последующей веб-перехватчика «Завершение вызова» .Облачный API не обрабатывает это поле. Максимальное количество символов: 512 | “0fS5cePMok” |
Ответ об успехе
{"messaging_product":"whatsapp","calls":[{"id":"wacid.ABGGFjFVU2AfAgo6V",}]}Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
номер телефонаОшибки доступа/авторизацииОшибки проверки формата запроса, например, информация о соединении, SDP, ICEОшибки проверки SDPОшибки ограничения вызововЗавершить вызов
Используйте эту конечную точку для завершения активного вызова.
присутствует
RTCP BYE в медиатрактеКогда пользователь WhatsApp завершает вызов, вам не нужно звонить на эту конечную точку. После успешного завершения вызова вы получите веб-перехватчик завершения вызова.
Синтаксис запроса
POST <PHONE_NUMBER_ID>/calls| Параметр | Описание | Пример значения |
|---|---|---|
<PHONE_NUMBER_ID>Целое число | Необходимый Рабочий телефонный номер, с которого вы завершаете звонок. | 18274459827 |
Текст запроса
{"messaging_product":"whatsapp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","action":"terminate"}Параметры тела
| Параметр | Описание | Пример значения |
|---|---|---|
call_idНить | Необходимый Идентификатор телефонного звонка. При входящих звонках вы получаете идентификатор вызова от веб-перехватчика Call Connect, когда звонок инициирует пользователь WhatsApp. | “wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh” |
действиеНить | Необходимый Действие, выполняемое в отношении указанного идентификатора вызова. Значения могут быть связаны | предварительное принятие | принятие | отклонение | завершение | «прекратить» |
Ответ об успехе
{"messaging_product":"whatsapp","success":true}Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
идентификатор вызоваНеверный номер телефонаПользователь WhatsApp уже завершил звонокВызов с отклонением уже выполняетсяОшибки доступа/авторизацииВеб-хуки для инициированных бизнес-звонков
находится
"calls" внутри "value" ответа вебхука "calls" содержит метаданные о звонке, которые используются для обработки каждого звонка, совершенного или принятого вашей компанией.Чтобы получать веб-хуки Calling API, подпишитесь на поле веб-хука «calls».
Вызов веб-перехватчика
Вы получаете уведомление через веб-хук практически в режиме реального времени, когда звонок, инициированный вашей компанией, готов к соединению с пользователем WhatsApp (
ответ SDP).Крайне важно, что веб-перехватчик содержит информацию, необходимую для установления соединения через WebRTC.
После получения веб-перехватчика Call Connect вы можете применить
ответ SDP к вашему стеку WebRTC для инициирования медиасоединения.{"object":"whatsapp_business_account","entry":[{"id":","changes":[{"value":{"messaging_product":"whatsapp","metadata":{"display_phone_number":"16315553601","phone_number_id":"},"контакты":[{"wa_id":"16315553602"}],"звонки":[{"id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","кому":"16315553601","от":"16315553602","событие":"подключение","временная метка":"1671644824","направление":"BUSINESS_INITIATED","сессия":{"sdp_type":"ответ","sdp":"<}}]},"field":"calls"}]}]}Значения веб-хука для "вызовов"
| Заполнитель | Описание |
|---|---|
идентификаторНить | Уникальный идентификатор для вызова |
кЦелое число | Вызываемый номер (звонящий) |
отЦелое число | Номер звонящего |
событиеЦелое число | Событие вызова, о котором этот веб-перехватчик уведомляет подписчика |
метка времениЦелое число | Временная метка UNIX события веб-перехватчика |
направлениеНить | Направление совершаемого звонка. Может содержать либо: BUSINESS_INITIATED —для звонков, инициированных вашей компанией.USER_INITIATED —для звонков, инициированных пользователем WhatsApp. |
сессияJSON-объект | Необязательный Содержит тип протокола описания сессии (SDP) и язык описания. Требуется два значения: sdp_type — (Строка) Обязательный параметр«Предложение» обозначает предложение SDP sdp — (Строка) Обязательный параметрИнформация SDP устройства на другом конце вызова. SDP должен соответствовать 8866.RFC |
контактыJSON-объект | wa_id — идентификатор вызываемого абонента в WhatsApp. |
веб-перехватчик статуса вызова
Этот веб-перехватчик отправляется при следующих событиях вызова:
Здесь используется структура веб-хуков, аналогичная структуре веб-хуков статуса, применяемых для сообщений Cloud API.
{"object":"whatsapp_business_account","entry":[{"id":","changes":[{"value":{"messaging_product":"whatsapp","metadata":{"display_phone_number":"16315553601","phone_number_id":",},"statuses":[{"id":"wacid.ABGGFjFVU2AfAgo6V","timestamp":"1671644824","type":"call""status":"[RINGING|ACCEPTED|REJECTED]","recipient_id":"163155536021","biz_opaque_callback_data":"random_string",}]},"field":"calls"}]}]}Значения веб-хуков для "статусов"
| Заполнитель | Описание |
|---|---|
идентификаторНить | Уникальный идентификатор для вызова |
метка времениЦелое число | Временная метка UNIX события веб-перехватчика |
recipient_idЦелое число | Номер телефона пользователя WhatsApp, принимающего звонок |
статусЦелое число | Текущий статус вызова. Возможные значения: ЗВОНОК: Инициированный компанией звонок поступает на абонента.ПРИНЯТО: Звонок, инициированный компанией, принят пользователем.ОТКЛОНЕНО: Звонок, инициированный представителем компании, отклонен пользователем. |
biz_opaque_callback_dataНить | Произвольная строка, которую ваша компания передает в вызов для отслеживания и регистрации данных. Возвращается только в том случае, если предоставлено через запросы API Initiate New Call. |
Вызов завершения веб-перехватчика
Уведомление через веб-хук отправляется всякий раз, когда вызов завершается по какой-либо причине, например, когда пользователь WhatsApp кладёт трубку или когда компания вызывает
POST-запрос. конечная точка с действием завершения или отклонения.{"object":"whatsapp_business_account","entry":[{"id":","changes":[{"value":{"messaging_product":"whatsapp","metadata":{"display_phone_number":"16505553602","phone_number_id":",},"calls":[{"id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","to":"16315553601","from":"16315553602","event":"terminate""direction":"BUSINESS_INITIATED","biz_opaque_callback_data":"random_string","timestamp":"1671644824","status":[FAILED | ЗАВЕРШЕНО],"start_time":"1671644824","end_time":"1671644944","duration":120}],"errors":[{"code": INT_CODE,"message":"ERROR_TITLE","href":"ERROR_HREF","error_data":{"details":"ERROR_DETAILS"}}]},"field":"calls"}]}]}Значения веб-хука для "вызовов"
| Заполнитель | Описание |
|---|---|
идентификаторНить | Уникальный идентификатор для вызова |
кЦелое число | Вызываемый номер (звонящий) |
отЦелое число | Номер звонящего |
событиеЦелое число | Событие вызова, о котором этот веб-перехватчик уведомляет подписчика |
метка времениЦелое число | Временная метка UNIX события веб-перехватчика |
направлениеНить | Направление совершаемого звонка. Может содержать либо: BUSINESS_INITIATED —для звонков, инициированных вашей компанией.USER_INITIATED —для звонков, инициированных пользователем WhatsApp. |
время началаЦелое число | Временная метка UNIX, указывающая на начало звонка. Присутствует только тогда, когда на звонок ответил другой абонент. |
конец_времениЦелое число | Временная метка UNIX, отражающая момент завершения звонка. Присутствует только тогда, когда на звонок ответил другой абонент. |
продолжительностьЦелое число | Продолжительность разговора в секундах. Присутствует только тогда, когда на звонок ответил другой абонент. |
biz_opaque_callback_dataНить | Произвольная строка, которую ваша компания передает в вызов для отслеживания и регистрации данных. Возвращается только в том случае, если предоставлено через запрос API Initiate Call или запрос Accept Call. |
ошибки.кодЦелое число | Объект errors присутствует только для неудачных вызовов, если доступна информация об ошибке. Code — это один из кодов ошибок вызова. |
Обзор SDP и примеры структур
Протокол описания сеанса (SDP) — это текстовый формат, используемый для описания характеристик мультимедийных сеансов, таких как голосовые и видеозвонки, в приложениях для связи в реальном времени. SDP предоставляет стандартизированный способ описания медиапотоков сеанса. Это включает тип медиафайлов, кодеки, протоколы и параметры для установления и управления сеансом.
В контексте WebRTC протокол SDP используется для согласования параметров передачи данных между отправителем и получателем, позволяя им согласовать специфику обмена данными.