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

Вызовы, инициированные пользователем | Документация для разработчиков

Звонки, инициированные пользователем

Обновлено: 13 ноября 2025 г

Обзор

API для звонков поддерживает прием звонков, совершаемых пользователями WhatsApp на ваш бизнес.
Соответствие потребительских устройств критериям
В настоящее время API для бизнес-звонков WhatsApp позволяет принимать звонки как с основного, так и с дополнительных телефонов iPhone или Android пользователя.
Основное устройство — это главное устройство пользователя, как правило, мобильный телефон, которое хранит авторитетное состояние учетной записи пользователя. Оно имеет полный доступ к истории сообщений и основным функциям. В любой момент времени на одну учетную запись пользователя приходится ровно одно основное устройство.
Вспомогательные устройства — это дополнительные устройства, зарегистрированные в учетной записи пользователя, которые могут работать параллельно с основным устройством. Примеры включают веб-клиенты, настольные приложения, планшеты и умные очки. Вспомогательные устройства имеют доступ к части или всей истории сообщений и основным функциям, но их возможности ограничены по сравнению с основным устройством. Для вызовов через Cloud API поддерживаются только вспомогательные устройства iPhone и Android для инициированных пользователем вызовов .
Функциональность разрешения обратного вызова на сопутствующих устройствах
Для компаний, у которых функция обратного вызова , эта функциональность пока не поддерживается на сопутствующих устройствах.

Предварительные требования

Прежде чем начать совершать звонки по инициативе пользователя, убедитесь в следующем:
Подпишитесь на поле веб-перехватчика вызововВключите функции API для звонков на вашем рабочем телефонном номере

Диаграмма последовательности вызовов

Диаграмма последовательности вызовов, показывающая поток инициированных пользователем вызовов

Конечные точки для инициированных пользователем звонков

Предварительное принятие звонка

При предварительном принятии входящего вызова вы позволяете установить медиасоединение с вызывающим абонентом, прежде чем пытаться передать медиаконтент через это соединение.
При последующем вызове конечной точки приема вызова передача медиаконтента начинается немедленно, поскольку соединение уже установлено.
Рекомендуется предварительно принимать звонки, поскольку это способствует более быстрому установлению соединения и позволяет избежать проблем с искажением звука .
веб-хука Call Connect есть примерно от 30 до 60 секунд, чтобы принять телефонный звонок. Если компания не отвечает, звонок завершается на стороне пользователя WhatsApp с уведомлением «Не отвечено», и вам отправляется веб-хук завершения вызова
Примечание: Поскольку соединение WebRTC устанавливается до вызова конечной точки Accept Call , убедитесь, что передача медиаданных происходит только после получения ответа 200 OK.
Если передача медиаконтента начинается слишком рано, звонящий пропустит первые несколько слов разговора. Если передача медиаконтента начинается слишком поздно, звонящий услышит тишину.
Параметры тела
Параметр Описание Пример значения
call_id
Нить
Необходимый

Идентификатор телефонного звонка.
При входящих звонках вы получаете идентификатор вызова от веб-перехватчика Call Connect, когда звонок инициирует пользователь WhatsApp.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”
действие
Нить
Необязательный

Действие, выполняемое в отношении указанного идентификатора вызова.
Значения могут быть связаны | предварительное принятие | принятие | отклонение | завершение
“предварительное_принятие”
сессия
JSON-объект
Необязательный

Содержит тип протокола описания сессии (SDP) и язык описания.
Требуется два значения:
sdp_type — ( Строка ) Обязательный параметр
«Предложение» обозначает предложение SDP
sdp — ( Строка ) Обязательный параметр
Информация SDP устройства на другом конце вызова. SDP должен соответствовать RFC 8866 .
Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
Неверный идентификатор вызоваНеверный номер телефонаОшибка, связанная с вашим способом оплатыНеверные данные соединения, например, SDP или ICEПринять/отклонить уже находящийся в процессе/завершенный/неудачный вызовОшибки доступа/авторизации

Принять звонок

Используйте эту конечную точку для подключения к вызову, указав SDP оператора колл-центра.
веб-хука Call Connect у вас есть примерно от 30 до 60 секунд, чтобы принять телефонный звонок. Если ваша компания не отвечает, звонок завершается на стороне пользователя WhatsApp с уведомлением «Не отвечено», и вам отправляется веб-хук Terminate
Параметры тела
Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
Неверный идентификатор вызоваНеверный номер телефонаОшибка, связанная с вашим способом оплатыНеверные данные соединения, например, SDP или ICEПринять/отклонить уже находящийся в процессе/завершенный/неудачный вызовОшибки доступа/авторизацииОтвет SDP, предоставленный в запросе accept, не совпадает с ответом SDP, предоставленным в конечной точке pre-Accept для того же идентификатора вызова.

Отклонить вызов

Используйте этот адрес электронной почты, чтобы отклонить вызов.
веб-хука Call Connect у вас есть примерно от 30 до 60 секунд, чтобы принять телефонный звонок. Если компания не отвечает, звонок завершается на стороне пользователя WhatsApp с уведомлением «Не отвечено», и вам отправляется веб-хук завершения вызова
Параметры тела
Параметр Описание Пример значения
call_id
Нить
Необходимый

Идентификатор телефонного звонка.
При входящих звонках вы получаете идентификатор вызова от веб-перехватчика Call Connect, когда звонок инициирует пользователь WhatsApp.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”
действие
Нить
Необязательный

Действие, выполняемое в отношении указанного идентификатора вызова.
Значения могут быть связаны | предварительное принятие | принятие | отклонение | завершение
"отклонять"
Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
Неверный идентификатор вызоваНеверный номер телефонаПринять/отклонить уже находящийся в процессе/завершенный/неудачный вызовОшибки доступа/авторизации

Завершить вызов

Используйте эту конечную точку для завершения активного вызова.
в медиатракте присутствует RTCP BYE
Когда пользователь WhatsApp завершает вызов, вам не нужно звонить на эту конечную точку. После успешного завершения вызова вам будет отправлен веб-хук завершения вызова
Параметры тела
Параметр Описание Пример значения
call_id
Нить
Необходимый

Идентификатор телефонного звонка.
При входящих звонках вы получаете идентификатор вызова от веб-перехватчика Call Connect, когда звонок инициирует пользователь WhatsApp.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”
действие
Нить
Необязательный

Действие, выполняемое в отношении указанного идентификатора вызова.
Значения могут быть связаны | предварительное принятие | принятие | отклонение | завершение
«прекратить»
Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
Неверный идентификатор вызоваНеверный номер телефонаПринять/отклонить уже находящийся в процессе/завершенный/неудачный вызовВызов с отклонением уже выполняетсяОшибки доступа/авторизации

Веб-хуки для инициированных пользователем звонков

внутри "value" ответа вебхука находится "calls" "calls" содержит метаданные о звонке, которые используются для обработки каждого звонка, полученного вашей компанией.
Чтобы получать веб-хуки Calling API, подпишитесь на поле веб-хука calls.

Вызов веб-перехватчика "Завершение"

Уведомление через веб-перехватчик отправляется всякий раз, когда вызов завершается по какой-либо причине, например, когда пользователь WhatsApp кладет трубку или когда компания вызывает конечную точку с действием « завершить» или «отклонить» .
Значения веб-хуков для "вызовов"
Заполнитель Описание
идентификатор
Нить
Уникальный идентификатор для вызова
к
Целое число
Вызываемый номер (звонящий)
от
Целое число
Номер звонящего
событие
Целое число
Событие вызова, о котором этот веб-перехватчик уведомляет подписчика
метка времени
Целое число
Временная метка UNIX события веб-перехватчика
направление
Нить
Направление совершаемого звонка.
Может содержать либо:
BUSINESS_INITIATED — для звонков, инициированных вашей компанией.
USER_INITIATED — для звонков, инициированных пользователем WhatsApp.
deeplink_payload
Нить
Произвольная строка, указанная в biz_payload при вызове по диплинку. Будет возвращена только в том случае, если вызов был инициирован с диплинка с таким параметром.
cta_payload
Нить
Произвольная строка, указанная в полезной нагрузки кнопки вызова. Будет возвращена только в том случае, если вызов был инициирован с помощью кнопки вызова с указанной полезной нагрузкой.
время начала
Целое число
Временная метка UNIX, указывающая на начало звонка.
Присутствует только тогда, когда на звонок ответил другой абонент.
конец_времени
Целое число
Временная метка UNIX, отражающая момент завершения звонка.
Присутствует только тогда, когда на звонок ответил другой абонент.
продолжительность
Целое число
Продолжительность разговора в секундах.
Присутствует только тогда, когда на звонок ответил другой абонент.
biz_opaque_callback_date
Нить
Произвольная строка, которую ваша компания передает в вызов для отслеживания и регистрации данных.
Возврат средств возможен только в том случае, если запрос на инициирование звонка или запрос на принятие звонка
ошибки.код
Целое число
Объект errors присутствует только для неудачных вызовов, если доступна информация об ошибке. Code — это один из кодов ошибок вызова.

Поддержка двухтонального многочастотного тона (DTMF)

Клавиатура, предоставляемая API вызовов, поддерживает только сценарии использования DTMF.
Она не поддерживает звонки между абонентами и не изменяет никаких других функций совершения звонков. Например, с помощью клавиатуры нельзя набрать номер и инициировать звонок или отправить сообщение в WhatsApp.
API WhatsApp Business Calling поддерживает DTMF-тона, что позволит приложениям BSP поддерживать системы на основе IVR.
Пользователи WhatsApp могут нажимать кнопки с тонами в своем клиентском приложении, и эти DTMF-тона будут передаваться в поток WebRTC RTP, устанавливаемый в рамках VoIP-соединения.
Наш поток WebRTC соответствует стандарту RFC 4733 для передачи цифр DTMF через полезную нагрузку RTP.
Для передачи DTMF-цифр отсутствует веб-хук.

Частота тактирования DTMF

В наших SDP поддерживается только частота обновления 8000 МГц. Для вызовов, инициированных пользователем, наше предложение SDP включает только частоту обновления 8000 МГц. Для вызовов, инициированных бизнес-процессами, ваше предложение SDP должно содержать частоту обновления 8000 МГц. Даже если она отсутствует, API все равно будет использовать частоту обновления 8000 МГц для полезной нагрузки типа 126.
Пакеты RTP, представляющие события DTMF, будут использовать ту же базовую дату метки времени и базовую дату порядкового номера, что и обычные аудиопакеты. Поэтому вам не нужно беспокоиться о различиях в тактовых частотах между аудиопакетами и пакетами DTMF. Поле длительности пакета DTMF рассчитывается с использованием 8000 единиц тактовой частоты.
API не поддерживает частоту тактирования 48000 Гц для DTMF.

Отправка DTMF-сигналов через пользовательский WhatsApp-клиент

В приложениях WhatsApp добавлена ​​клавиатура для звонков на бизнес-телефонные номера, использующие CloudAPI. Пользователь WhatsApp может нажимать кнопки на клавиатуре и отправлять DTMF-сигналы.
Интерфейс клавиатуры клиента WhatsApp для DTMF-тонов

Обзор SDP и примеры структур SDP

Протокол описания сеанса (SDP) — это текстовый формат, используемый для описания характеристик мультимедийных сеансов, таких как голосовые и видеозвонки, в приложениях для связи в реальном времени. SDP обеспечивает стандартизированный способ передачи информации о медиапотоках сеанса, включая тип медиафайлов, кодеки, протоколы и другие параметры, необходимые для установления и управления сеансом.
В контексте WebRTC протокол SDP используется для согласования параметров передачи данных между отправителем и получателем, позволяя им согласовать специфику обмена данными.