Справочник по API и веб-перехватчикам | Документация для разработчиков
Справочник по API и веб-перехватчикам
Обновлено: 25 ноября 2025 г
Вызов конечных точек API
Настройте или обновите параметры вызовов
Вызовите конечную точку «Обновить настройки номера телефона» и передайте параметры API вызовов, чтобы настроить параметры корпоративного номера телефона, указанного в синтаксисе запроса.
Запрос
синтаксис
ПОЧТА /<НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/настройкиПараметры конечной точки
<PHONE_NUMBER_ID>Целое число
Необходимый
Рабочий телефонный номер, для которого вы обновляете настройки API вызовов.
+12784358810Запрос
тело
{"звонок": {«статус»:"ВКЛЮЧЕНО","call_icon_visibility":"ПО УМОЛЧАНИЮ","call_hours": {«статус»:"ВКЛЮЧЕНО","timezone_id":"Америка/Манаус","еженедельные_часы_работы": [{"день_недели":"ПОНЕДЕЛЬНИК","open_time":"0400","close_time":"1020"},{"день_недели":"ВТОРНИК","open_time":"0108","close_time":"1020"}],"расписание_праздников": [{"дата":"2026-01-01","start_time":"0000","end_time":"2359"}]},"callback_permission_status":"ВКЛЮЧЕНО","глоток": {«статус»:"ВКЛЮЧЕНО | ВЫКЛЮЧЕНО (по умолчанию)","серверы": [{"имя хоста": SIP_SERVER_HOSTNAME,"порт": SIP_SERVER_PORT,"request_uri_user_params": {"KEY1":"VALUE1","KEY2":"VALUE2"}}]}}}
Параметры тела
| | |
| ||
| | |
| | |
|
|
Подробности параметра: Статус вызова
Если
статуса установлен в значение «ВКЛЮЧЕНО» , функции вызова для рабочего номера телефона становятся доступны. Приложения WhatsApp будут отображать значок кнопки вызова как в рабочем чате, так и в профиле рабочего чата.Если
статуса присвоено значение «ОТКЛЮЧЕНО» , функции вызова отключаются значок кнопки вызова не отображается ни в деловом чате, ни в профиле делового чата Обновление
статуса будет обновлять значок кнопки вызова в существующих деловых чатах практически в режиме реального времени, если номер телефона компании есть в контактах пользователя WhatsApp.В противном случае обновления происходят в режиме реального времени для ограниченного числа пользователей, ведущих диалог с компанией, и в конечном итоге распространяются на все остальные диалоги.
Подробности параметра: Видимость значка кнопки вызова
Если для номера компании включены функции Calling API, вы все равно можете выбрать, отображать ли значок кнопки вызова или нет, используя
call_icon_visibility . Примечание: отключение видимости значка кнопки вызова не отключает возможность пользователя WhatsApp совершать незапрошенные звонки в вашу компанию.Для поддерживаемых опций поведение следующее:
ПО УМОЛЧАНИЮЗначок кнопки «Вызов» будет отображаться в строке меню чата и на странице информации о компании, что позволит пользователям WhatsApp совершать незапрошенные звонки в компанию.

ОТКЛЮЧИТЬ ВСЕЗначок кнопки вызова скрыт в строке меню чата и на странице информации о компании, а все остальные точки входа вне чата также отключены. Потребители не могут совершать незапрошенные звонки в компанию.
Ваша компания по-прежнему может отправлять интерактивные сообщения или шаблонные сообщения с помощью кнопки призыва к действию (CTA) через Calling API.

Разрешения на обратный вызов
Для звонка пользователю WhatsApp требуется явное разрешение от пользователя. Один из способов получить разрешение на звонок — запросить его у пользователя WhatsApp, когда он звонит в вашу компанию.
Вы можете настроить интерфейс разрешений на звонки таким образом, чтобы он автоматически отображался в клиентском приложении WhatsApp при звонке на номер вашей компании. Пользователь может изменить выбранные разрешения в любое время.

Вызов
часы
часы звонковcallback_permission_statusВКЛЮЧЕНО
"call_hours": {«статус»:"ВКЛЮЧЕНО","timezone_id":"Америка/Манаус","еженедельные_часы_работы": [{"день_недели":"ПОНЕДЕЛЬНИК","open_time":"04:00","close_time":"10:20"},{"день_недели":"ВТОРНИК","open_time":"01:08","close_time":"10:20"}],"расписание_праздников": [{"дата":"2026-01-01","start_time":"00:00","end_time":"23:59"}]}
| | |||
| | |||
|
|
| ||
|
|
|
Ответ об успехе
{
"success"
: true }
Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
call_hours праздника, указанная в call_hours, уже прошла. параметре call_hours указан недопустимый часовой пояс Параметр weekly_operating_hours в call_hours не может быть пустым.Формат даты в holiday_schedule для call_hours недопустим. графике работы службы поддержки (call_hours) не допускается более 2 записей.Перекрывающиеся графики в call_hours не допускаются.
Получить настройки звонков по номеру телефона
Для получения настроек API вызовов для конкретного номера телефона компании, указанного в синтаксисе запроса, воспользуйтесь конечной точкой Get Phone Number Settings.
Этот конечный пункт может возвращать информацию о других настройках функций Cloud API.
Запрос
синтаксис
ПОЧТА /<НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/настройкиПараметры конечной точки
<PHONE_NUMBER_ID>Целое число
Необходимый
+12784358810Требуются разрешения приложения
whatsapp_business_management : Для использования API конечными бизнес-клиентами требуется расширенный доступ.Ответ
тело
{"звонок": {«статус»:"ВКЛЮЧЕНО","call_icon_visibility":"ПО УМОЛЧАНИЮ","call_hours": {«статус»:"ВКЛЮЧЕНО","timezone_id":"Америка/Манаус","еженедельные_часы_работы": [{"день_недели":"ПОНЕДЕЛЬНИК","open_time":"0400","close_time":"1020"},{"день_недели":"ВТОРНИК","open_time":"0108","close_time":"1020"}],"расписание_праздников": [{"дата":"2026-01-01","start_time":"0000","end_time":"2359"}]},"callback_permission_status":"ВКЛЮЧЕНО","глоток": {«статус»:"ВКЛЮЧЕНО | ВЫКЛЮЧЕНО (по умолчанию)","серверы": [{"имя хоста": SIP_SERVER_HOSTNAME,"порт": SIP_SERVER_PORT,"request_uri_user_params": {"KEY1":"VALUE1","KEY2":"VALUE2"}}]}}}
Укажите пароль пользователя SIP
ПОЧТА /<НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/настройки?include_sip_credentials=истинный{"звонок": {... // другие настройки API для вызова"глоток": {«статус»:"ВКЛЮЧЕНО","серверы": [{"имя хоста":"sip.example.com","sip_user_password":"{SIP_USER_PASSWOR}"}]}}}
Подробности ответа
GET
/ /settings возвращает настройки API вызовов, а также другую информацию о конфигурации вашего бизнес-номера телефона WhatsApp.Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
Предварительное принятие звонка
При предварительном принятии входящего вызова вы позволяете установить медиасоединение с вызывающим абонентом, прежде чем пытаться передать медиаконтент через это соединение.
При последующем вызове конечной точки приема вызова передача медиаконтента начинается немедленно, поскольку соединение уже установлено.
Рекомендуется предварительно принимать звонки, поскольку это способствует более быстрому установлению соединения и позволяет избежать проблем с искажением звука .
веб-хука Call Connect есть примерно от 30 до 60 секунд, чтобы принять телефонный звонок. Если компания не отвечает, звонок завершается на стороне пользователя WhatsApp с уведомлением «Не отвечено», и вам отправляется веб-хук завершения вызова
Примечание: Поскольку соединение WebRTC устанавливается до вызова конечной точки Accept Call , убедитесь, что передача медиаданных происходит только после получения ответа 200 OK.
Если передача медиаконтента начинается слишком рано, звонящий пропустит первые несколько слов разговора. Если передача медиаконтента начинается слишком поздно, звонящий услышит тишину.
ЗапросТело синтаксиспараметры
ПОЧТА
<НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/звонки<PHONE_NUMBER_ID>+12784358810Текст запроса
{"messaging_product":"WhatsApp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","действие":"pre_accept","сессия":{"sdp_type":"отвечать","sdp":«<<RFC 8866 SDP> >"}}Параметры тела
call_idНить |
Необходимый
При входящих звонках вы получаете идентификатор вызова от веб-перехватчика Call Connect, когда звонок инициирует пользователь WhatsApp.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”действиеНить
Необязательный
Значения могут быть
связаны | предварительное принятие | принятие | отклонение | завершение“предварительное_принятие”сессияJSON-объект
Необязательный
Требуется два значения:
sdp_type — ( Строка ) Обязательный параметр«Предложение» обозначает предложение SDP
sdp — ( Строка ) Обязательный параметр"сессия":{"sdp_type":"предложение","sdp":«<<RFC 8866 SDP> >"}Ответ об успехе
{"messaging_product":"WhatsApp","успех":истинный}Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
идентификатор вызоваНеверный номер телефонаОшибка, связанная с вашим способом оплатыНеверные данные подключения, например, sdp, iceПринять/отклонить уже находящийся в процессе/завершенный/неудачный вызовОшибки доступа/авторизации
Принять звонок
Используйте эту конечную точку для подключения к вызову, указав SDP оператора колл-центра.
веб-хука Call Connect у вас есть примерно от 30 до 60 секунд, чтобы принять телефонный звонок. Если ваша компания не отвечает, звонок завершается на стороне пользователя WhatsApp с уведомлением «Не отвечено», и вам отправляется веб-хук Terminate
Запрос
синтаксис
ПОЧТА <НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/звонки | |
Текст запроса
{"messaging_product":"WhatsApp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","действие":"принимать","сессия":{"sdp_type":"отвечать","sdp":«<<RFC 8866 SDP> >"},"biz_opaque_callback_data":"random_string"}Параметры тела
|
| ||
|---|---|---|
| | |
| | |
| | |
| | |
Ответ об успехе
{"messaging_product":"WhatsApp","успех":истинный}Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
идентификатор вызоваНеверный номер телефонаОшибка, связанная с вашим способом оплатыНеверная информация о соединении, например, параметры sdp, ice или другие параметры соединенияПринять/отклонить уже находящийся в процессе/завершенный/неудачный вызовОшибки доступа/авторизацииОтвет SDP, предоставленный в запросе accept, не совпадает с ответом SDP, предоставленным в конечной точке pre-Accept для того же идентификатора вызова.
Отклонить вызов
Используйте этот адрес электронной почты, чтобы отклонить вызов.
веб-хука Call Connect у вас есть примерно от 30 до 60 секунд, чтобы принять телефонный звонок. Если компания не отвечает, звонок завершается на стороне пользователя WhatsApp с уведомлением «Не отвечено», и вам отправляется веб-хук завершения вызова
ЗапросТело синтаксиспараметры
ПОЧТА
<НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/звонки<PHONE_NUMBER_ID>+12784358810Текст запроса
{"messaging_product":"WhatsApp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","действие":"отклонять"}Параметры тела
call_idНить |
Необходимый
При входящих звонках вы получаете идентификатор вызова от веб-перехватчика Call Connect, когда звонок инициирует пользователь WhatsApp.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”действиеНить
Необязательный
Значения могут быть
связаны | предварительное принятие | принятие | отклонение | завершение"отклонять"Ответ об успехе
{"messaging_product":"WhatsApp","успех":истинный}Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
идентификатор вызоваНеверный номер телефонаПринять/отклонить уже находящийся в процессе/завершенный/неудачный вызовОшибки доступа/авторизации
Инициировать звонок
Используйте этот конечный пункт для инициирования звонка пользователю WhatsApp, указав номер телефона и предложение WebRTC-звонка.
Запрос
синтаксис
ПОЧТА <НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/звонки | |
Текст запроса
{"messaging_product":"WhatsApp","к":"14085551234","действие":"соединять","сессия":{"sdp_type":"предложение","sdp":«<<RFC 8866 SDP> >"},"biz_opaque_callback_data":"0fS5cePMok"}Параметры тела
|
| ||
|---|---|---|
| | |
| | |
| | |
| | |
Ответ об успехе
{"messaging_product":"WhatsApp","звонки":[{"идентификатор":"wacid.ABGGFjFVU2AfAgo6V",}]}Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
номер телефонаОшибки доступа/авторизацииОшибки проверки формата запроса, например, информация о соединении, SDP, ICEОшибки проверки SDP
Завершить вызов
Используйте эту конечную точку для завершения активного вызова.
в медиатракте присутствует
RTCP BYE Когда пользователь WhatsApp завершает вызов, вам не нужно звонить на эту конечную точку. После успешного завершения вызова вам будет отправлен веб-хук завершения вызова
ЗапросТело синтаксиспараметры
ПОЧТА
<НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/звонки<PHONE_NUMBER_ID>18274459827Текст запроса
{"messaging_product":"WhatsApp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","действие":"завершить"}Параметры тела
call_idНить |
Необходимый
При входящих звонках вы получаете идентификатор вызова от веб-перехватчика Call Connect, когда звонок инициирует пользователь WhatsApp.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”действиеНить
Необходимый
Значения могут быть
связаны | предварительное принятие | принятие | отклонение | завершение«прекратить»Ответ об успехе
{"messaging_product":"WhatsApp","успех":истинный}Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
идентификатор вызоваНеверный номер телефонаПользователь WhatsApp уже завершил звонокВызов с отклонением уже выполняетсяОшибки доступа/авторизации
Получить текущее состояние разрешения на вызов
Используйте этот конечный пункт, чтобы получить состояние разрешений на вызов для корпоративного телефонного номера, к которому привязан один номер телефона пользователя WhatsApp.
Запрос
синтаксис
ПОЛУЧАТЬ /<НОМЕР_ТЕЛЕФОНА_ИДЕНТИФИКАТОР>/call_permissions?user_wa_id=<Идентификатор потребителя в WhatsApp>Параметры запроса
<PHONE_NUMBER_ID>Нить
Необходимый
+18762639988<CONSUMER_WHATSAPP_ID>Целое число
Необходимый
+13057765456Ответ
тело
{"messaging_product":"WhatsApp","разрешение":{«статус»:"временный","expiration_time":1745343479},«действия»:[{"action_name":"send_call_permission_request","can_perform_action":истинный,«пределы»:[{"период_времени":"PT24H","max_allowed":1,"current_usage":0,},{"период_времени":"P7D","max_allowed":2,"current_usage":1,}]},{"action_name":"start_call","can_perform_action":ЛОЖЬ,«пределы»:[{"период_времени":"PT24H","max_allowed":5,"current_usage":5,"limit_expiration_time":1745622600,}]}}}Параметры отклика
|
| |
|---|---|
| |
| |
| |
Ответ с ошибкой
Возможные ошибки, которые могут возникнуть:
номер телефонаЕсли номер телефона потребителя недоступен для звонка, API ответит сообщением no_permission .Ошибки доступа/авторизации.Достигнут лимит запросов. Максимально 5 запросов к API в течение 1 секунды.Для корпоративного телефонного номера функция звонков отключена.
Звонок
API-вебхуки
Веб-перехватчик вызова Connect
Ответ SDPОтвет SDP{"объект":"whatsapp_business_account","вход":[{"идентификатор":"<WHATSAPP_BUSINESS_ACCOUNT_ID> ","изменения":[{"ценить":{"messaging_product":"WhatsApp","метаданные":{"display_phone_number":"16315553601","идентификатор_номера_телефона":"<PHONE_NUMBER_ID> "},"контакты":[{"профиль":{"имя":"<CALLEE_NAME> "},"ва_ид":"16315553602"}],"звонки":[{"идентификатор":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","к":"16315553601","от":"16315553602","событие":"соединять","временная метка":"1671644824","направление":"БИЗНЕС_ИНИЦИИРОВАН","сессия":{"sdp_type":"отвечать","sdp":«<<RFC 8866 SDP> >"}}]},"поле":"звонки"}]}]}Значения веб-перехватчика для "звонки"
| |
| |
| |
| |
| |
| |
| |
| |
веб-перехватчик статуса вызова
{"объект":"whatsapp_business_account","вход":[{"идентификатор":"<WHATSAPP_BUSINESS_ACCOUNT_ID> ","изменения":[{"ценить":{"messaging_product":"WhatsApp","метаданные":{"display_phone_number":"16315553601","идентификатор_номера_телефона":"<PHONE_NUMBER_ID> ",},"статусы":[{"идентификатор":"wacid.ABGGFjFVU2AfAgo6V","временная метка":"1671644824","тип":"вызов"«статус»:"[ЗВОНОК|ПРИНЯТО|ОТКЛОНЕНО]","recipient_id":"163155536021","biz_opaque_callback_data":"random_string",}]},"поле":"звонки"}]}]}Значения веб-перехватчика для "статусы"
| |
| |
| |
| |
|
Вызов завершения веб-перехватчика
ПОЧТА /<PHONE_NUMBER_ID> /звонкизавершитьотклонять{"объект":"whatsapp_business_account","вход":[{"идентификатор":"<WHATSAPP_BUSINESS_ACCOUNT_ID> ","изменения":[{"ценить":{"messaging_product":"WhatsApp","метаданные":{"display_phone_number":"16505553602","идентификатор_номера_телефона":"<PHONE_NUMBER_ID> ",},"звонки":[{"идентификатор":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","к":"16315553601","от":"16315553602","событие":"завершить""направление":"БИЗНЕС_ИНИЦИИРОВАН","biz_opaque_callback_data":"random_string","временная метка":"1671644824",«статус»:[НЕУСПЕШНЫЙ | ЗАВЕРШЕННЫЙ],"start_time":"1671644824","end_time":"1671644944","продолжительность":120}],"ошибки":[{"код": INT_CODE,"сообщение":"ERROR_TITLE","href":"ERROR_HREF","error_data":{"подробности":"ПОДРОБНОСТИ ОШИБКИ"}}]},"поле":"звонки"}]}]}Значения веб-перехватчика для "звонки"
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
Пользователь вызывает веб-перехватчик запроса разрешения
Пример веб-хука
{..."сообщения":[{"от":"{customer_phone_number}","идентификатор":"wamid.sH0kFlaCGg0xcvZbgmg90lHrg2dL","временная метка":"{timestamp}",«контекст»:{"от":"{customer_phone_number}","идентификатор":"wacid.gBGGFlaCmZ9plHrf2Mh-o"},"интерактивный":{"тип":"call_permission_reply","call_permission_reply":{"ответ":"принимать","is_permanent":ЛОЖЬ,"expiration_timestamp":"{timestamp}","response_source":"[user_action|automatic]"}}],...}Пример веб-хука (с постоянными правами доступа)
"сообщения":[{"от":"{customer_phone_number}","идентификатор":"wamid.sH0kFlaCGg0xcvZbgmg90lHrg2dL","временная метка":"{timestamp}",«контекст»:{"от":"{customer_phone_number}","идентификатор":"wacid.gBGGFlaCmZ9plHrf2Mh-o"},"интерактивный":{"тип":"call_permission_reply","call_permission_reply":{"ответ":"принимать","is_permanent":ЛОЖЬ,"expiration_timestamp":"{timestamp}","response_source":"[user_action|automatic]"}}],...}Значения веб-перехватчика
| |
| |
| |
| |
| |
Обзор SDP и примеры структур SDP
Протокол описания сеанса (SDP) — это текстовый формат, описывающий характеристики мультимедийных сеансов, таких как голосовые и видеозвонки, в приложениях для связи в реальном времени. SDP предоставляет стандартизированный способ передачи информации о медиапотоках сеанса, включая тип медиафайлов, кодеки, протоколы и другие параметры, необходимые для установления и управления сеансом.
В контексте WebRTC протокол SDP используется для согласования параметров передачи данных между отправителем и получателем, позволяя им согласовать специфику обмена данными.
Примеры структур SDP, инициированные бизнесом
Пример структуры предложения SDP
v = 0 o =- 3626166318745852955 2 IN IP4 127.0 . 0.1 s =- t = 0 0 a = group : BUNDLE 0 a = extmap - allow - mixed a = msid - semantic : WMS d8b26053 - 4474 - 4eb7 - b3c3 - c93d6c8c9b2e m = audio 9 UDP / TLS / RTP / SAVPF 111 63 9 0 8 110 126 c = IN IP4 0.0 . 0.0 a = rtcp : 9 IN IP4 0.0 . 0.0 a = ice - ufrag : 4g1c a = ice - pwd : qY / Bb + jQzg5ICn6X4fhJQetk a = ice - options : trickle a = fingerprint : sha - 256 35 : 47 : 24 : 24 : 9F : 93 : C4 : 3E : DB : 37 : 7F : BB : ED : F8 : 20 : B5 : AD : AC : DC : 35 : C2 : 7D : 67 : EE : 6C : 35 : 54 : DF : A6 : 00 : 5C : 4A a = setup : actpass a = mid : 0 a = extmap : 1 urn : ietf : params : rtp - hdrext : ssrc - audio - level a = extmap : 2 http : //www.webrtc.org/experiments/rtp-hdrext/abs-send-time a = extmap : 3 http : //www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a = extmap : 4 urn : ietf : params : rtp - hdrext : sdes : mid a = sendrecv a = msid : d8b26053 - 4474 - 4eb7 - b3c3 - c93d6c8c9b2e 5b4d3d96 - ea9b - 44a8 - 87e6 - 11a1ad21a3bc a = rtcp - mux a = rtpmap : 111 opus / 48000 / 2 a = rtcp - fb : 111 transport - cc a = fmtp : 111 minptime = 10 ; useinbandfec = 1 a = rtpmap : 63 red / 48000 / 2 a = fmtp : 63 111 / 111 a = rtpmap : 9 G722 / 8000 a = rtpmap : 0 PCMU / 8000 a = rtpmap : 8 PCMA / 8000 a = rtpmap : 110 telephone - event / 48000 a = rtpmap : 126 telephone - event / 8000 a = ssrc : 2220762577 cname : w / zwpg3jXNiTFTdZ a = ssrc : 2220762577 msid : d8b26053 - 4474 - 4eb7 - b3c3 - c93d6c8c9b2e 5b4d3d96 - ea9b - 44a8 - 87e6 - 11a1ad21a3bcПример структуры ответа SDP
v = 0 o =- 741807839102053725 2 IN IP4 127.0 . 0.1 s =- t = 0 0 a = group : BUNDLE 0 a = extmap - allow - mixed a = msid - semantic : WMS 798a9670 - c0d6 - 47a8 - 925e-5f082ef4d8a0 a = ice - lite m = audio 3482 UDP / TLS / RTP / SAVPF 111 9 0 8 110 126 c = IN IP4 31.13 . 65.130 a = rtcp : 9 IN IP4 0.0 . 0.0 a = кандидат : 2754936280 1 udp 2113937151 31.13 . 65.130 3482 typ host generation 0 network - cost 50 ufrag JHqAXFH4HcAY / 8 a = candidate : 1581496399 1 udp 2113939711 2a03 : 2880 : f211 : d1 : face : b00c : 0 : 699c 3482 typ host generation 0 network - cost 50 ufrag JHqAXFH4HcAY / 8 a = ice - ufrag : JHqAXFH4HcAY / 8 a = ice - pwd : dNNMmR8wUcGezvfBZOO0Qgcwl2m86GP / a = ice - options : trickle a = fingerprint : sha - 256 9C : 97 : 5C : 4C : A9 : BE : 9E : 2F : 06 : 94 : F5 : BB : 38 : 2C : A1 : 29 : B5 : 69 : B8 : FA : 94 : 10 : 56 : 1D : 0B : 5D : 80 : 28 : C1 : FD : F0 : F6 a = setup : active a = mid : 0 a = extmap : 1 urn : ietf : params : rtp - hdrext : ssrc - audio - level a = extmap : 2 http : //www.webrtc.org/experiments/rtp-hdrext/abs-send-time a = extmap : 3 http : //www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a = sendrecv a = rtcp - mux a = rtpmap : 111 opus / 48000 / 2 a = rtcp - fb : 111 transport - cc a = fmtp : 111 minptime = 10 ; useinbandfec = 1 a = rtpmap : 9 G722 / 8000 a = rtpmap : 0 PCMU / 8000 a = rtpmap : 8 PCMA / 8000 a = rtpmap : 110 telephone - event / 48000 a = rtpmap : 126 telephone - event / 8000 a = ssrc : 3407645770 cname : bg8KQDoIk2UJa6sf a = ssrc : 3407645770 msid : 798a9670 - c0d6 - 47a8 - 925e-5f082ef4d8a0 audio #nuxVMf9EAJX a = ssrc : 3407645770 mslabel : 798a9670 - c0d6 - 47a8 - 925e-5f082ef4d8a0 a = ssrc : 3407645770 label : audio #nuxVMf9EAJXОбразцы структур SDP, инициированные пользователем
Пример структуры предложения SDP
v = 0 o =- 7602563789789945080 2 IN IP4 127.0 . 0.1 s =- t = 0 0 a = group : BUNDLE audio a = msid - semantic : WMS 6932bc1c - db1a - 4abe - b437 - 0c4168be8a13 a = ice - lite m = audio 40012 UDP / TLS / RTP / SAVPF 111 126 c = IN IP4 31.13 . 65.60 a = rtcp : 9 IN IP4 0.0 . 0.0 a = candidate : 1972637320 1 udp 2113937151 31.13 . 65.60 40012 typ host generation 0 network - cost 50 ufrag 6k2qP1R6kBfI / 2 a = candidate : 1652262791 1 udp 2113939711 2a03 : 2880 : f211 : cf : face : b00c : 0 : 6443 40012 typ host generation 0 network - cost 50 ufrag 6k2qP1R6kBfI / 2 a = ice - ufrag : 6k2qP1R6kBfI / 2 a = ice - pwd : UApvJw3NcwFRDvIMKdM0vWCdlXah25E9 a = fingerprint : sha - 256 1B : B6 : 6B : 40 : A5 : 0B : 8C : 75 : 0D : 8C : CB : 90 : 2F : 99 : 74 : 1E : 26 : 45 : AE : AF : 45 : C1 : 51 : 60 : 8F : 73 : C9 : 2D : 10 : 6D : 8A : 88 a = setup : actpass a = mid : audio a = extmap : 1 urn : ietf : params : rtp - hdrext : ssrc - audio - level a = extmap : 2 http : //www.webrtc.org/experiments/rtp-hdrext/abs-send-time a = extmap : 3 http : //www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a = sendrecv a = rtcp - mux a = rtpmap : 111 opus / 48000 / 2 a = rtcp - fb : 111 transport - cc a = fmtp : 111 minptime = 10 ; useinbandfec = 1 a = rtpmap : 126 telephone - event / 8000 a = ssrc : 4208138518 cname : gAXq2V9TKltrnapv a = ssrc : 4208138518 msid : 6932bc1c - db1a - 4abe - b437 - 0c4168be8a13 audio #R5wfXFcdmT6 a = ssrc : 4208138518 mslabel : 6932bc1c - db1a - 4abe - b437 - 0c4168be8a13 a = ssrc : 4208138518 label : audio #R5wfXFcdmT6Пример структуры ответа SDP
v = 0 o =- 2822644248144643933 2 IN IP4 127.0 . 0.1 s =- t = 0 0 a = group : BUNDLE audio a = msid - semantic : WMS eb909cf0 - 87f0 - 4358 - a4c9 - 7861680d9431 m = audio 9 UDP / TLS / RTP / SAVPF 111 126 c = IN IP4 0.0 . 0.0 a = rtcp : 9 IN IP4 0.0 . 0.0 a = ice - ufrag : X1ho a = ice - pwd : 7fJSbV2N5qWiA5QiDKwK3vuh a = fingerprint : sha - 256 2E : 35 : 9F : 21 : 9E : 63 : 72 : E5 : 42 : 74 : 76 : 2D : B3 : 70 : F7 : CB : 24 : 14 : 9B : 14 : 52 : 71 : 05 : 48 : DA : 4D : 67 : 31 : 09 : 58 : 2A : ED a = setup : active a = mid : audio a = extmap : 1 urn : ietf : params : rtp - hdrext : ssrc - audio - level a = extmap : 2 http : //www.webrtc.org/experiments/rtp-hdrext/abs-send-time a = extmap : 3 http : //www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a = sendrecv a = rtcp - mux a = rtpmap : 111 opus / 48000 / 2 a = rtcp - fb : 111 transport - cc a = fmtp : 111 minptime = 10 ; useinbandfec = 1 a = rtpmap : 126 telephone - event / 8000 a = ssrc : 330833028 cname : EDc1JutBl8rwHQc2 a = ssrc : 330833028 msid : eb909cf0 - 87f0 - 4358 - a4c9 - 7861680d9431 ea478c16 - d9f7 - 493c - 8cec - 19bfac750a36Образец
cURL-запросы
Новый звонок
локон -я -X POST 'https://graph.facebook.com/v14.0/1234567890/calls' \
-ЧАС 'Content-Type: application/json' \
-ЧАС «Авторизация: Предъявитель EAADUMAze4GIBO1B7B.....»<REPLACE_WITH_YOUR_TOKEN> ' \
-д '{ "messaging_product": "whatsapp", "to": "14085550000", "session": { "sdp": "v=0\r\no=- 7669997803033704573 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS 3c28addc-03b7-4170-b5cd-535bfe767e75\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 110 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:6O0H\r\na=ice-pwd:TYCbtfOrBMPpfxFRgSbYnuTI\r\na=ice-options:trickle\r\na=fingerprint:sha-256 9F:45:2C:A8:C3:C0:CC:9B:59:4F:D1:02:56:52:FA:36:00:BE:C0:79:87:B3:D9:9C:3E:BF:60:98:25:B4:26:FC\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendrecv\r\na=msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:2430753100 cname:MPddPt/R2ioP4vCm\r\na=ssrc:2430753100 msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\n", "sdp_type": "answer" } }'Завершить вызов
локон -я -X POST 'https://graph.facebook.com/v14.0/1234567890/calls' \
-ЧАС 'Content-Type: application/json' \
-ЧАС «Авторизация: Предъявитель EAADUMAze4GIBO1B7B.....»<REPLACE_WITH_YOUR_TOKEN> ' \
-д '{ "messaging_product": "whatsapp", "action": "terminate", "call_id": "wacid.HBgLMTY1MDMxMzM5NzQVAgARGCBFRjNEODRBM0Q3NDZDM0Q0QzI4MzAwQjZBRkZGODM3NhwYCzEyMjQ1NTU0NDg5FQIAAA" }'Принять звонок
локон -я -X POST 'https://graph.facebook.com/v14.0/1234567890/calls' \
-ЧАС 'Content-Type: application/json' \
-ЧАС «Авторизация: Предъявитель EAADUMAze4GIBO1B7B.....»<REPLACE_WITH_YOUR_TOKEN> ' \
-д '{ "messaging_product": "whatsapp", "to": "14085550000", "action": "accept", "call_id": "wacid.HBgLMTY1MDMxMzM5NzQVAgASGCA5ODkyMDk2RkM2NUM1QTYwRkM4NjFDQzk0NkQwNDBCRRwYCzEyMjQ1NTU0NDg5FQIAAA==", "session": { "sdp": "v=0\r\no=- 7669997803033704573 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS 3c28addc-03b7-4170-b5cd-535bfe767e75\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 110 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:6O0H\r\na=ice-pwd:TYCbtfOrBMPpfxFRgSbYnuTI\r\na=ice-options:trickle\r\na=fingerprint:sha-256 9F:45:2C:A8:C3:C0:CC:9B:59:4F:D1:02:56:52:FA:36:00:BE:C0:79:87:B3:D9:9C:3E:BF:60:98:25:B4:26:FC\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendrecv\r\na=msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:2430753100 cname:MPddPt/R2ioP4vCm\r\na=ssrc:2430753100 msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\n", "sdp_type": "отвечать" } }'Новый вызов (с использованием устаревшего параметра подключения)
локон -я -X POST 'https://graph.facebook.com/v14.0/123456789/calls' \
-ЧАС 'Content-Type: application/json' \
-ЧАС «Авторизация: Предъявитель EAADUMAze4GIBO1B7B.....»<REPLACE_WITH_YOUR_TOKEN> ' \
-д '{ "messaging_product": "whatsapp", "to": "14085550000", "connection": { "webrtc": { "sdp": "{\"sdp\":\"v=0\\r\\no=- 6314352886888624490 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0\\r\\na=extmap-allow-mixed\\r\\na=msid-semantic: WMS ccd3f422-8d7d-49c9-936c-a152979ee4fa\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 110 126\\r\\nc=В IP4 0.0.0.0\\r\\na=rtcp:9 В IP4 0.0.0.0\\r\\na=ice-ufrag:/PSS\\r\\na=ice-pwd:buBIz+JlbmakiCT7JdJIq/j0\\r\\na=ice-options:trickle\\r\\na=отпечаток пальца:sha-256 43:08:34:16:67:E3:D9:A2:F5:AA:6A:AE:03:97:C8:D5:B8:F2:4B:40:79:C8:1A:44:53:69:4B:9C:89:88:D7:22\\r\\na=setup:active\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=sendrecv\\r\\na=msid:ccd3f422-8d7d-49c9-936c-a152979ee4fa 4e58b2a9-c864-4752-8f4f-23f9ced35971\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:63 red/48000/2\\r\\na=fmtp:63 111/111\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:110 Telephone-event/48000\\r\\na=rtpmap:126 Telephone-event/8000\\r\\na=ssrc:3354317731 cname:zgqSj/r4rlErlW23\\r\\na=ssrc:3354317731 msid:ccd3f422-8d7d-49c9-936c-a152979ee4fa 4e58b2a9-c864-4752-8f4f-23f9ced35971\\r\\n\",\"type\":\"offer\"}" } } }'Пример веб-перехватчика для подключения к вызову
Вызов веб-перехватчика
{"вход":[{"изменения":[{"поле":"звонки","ценить":{"звонки":[{"сессия":{"sdp_type":"отвечать","sdp":"v=0\r\no=- 8076734947255960322 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS 68a296ba-41cc-41db-8edb-3ddf4dbbb483\r\na=ice-lite\r\nm=audio 3482 UDP/TLS/RTP/SAVPF 111 9 0 8 110 126\r\nc=IN IP4 31.13.65.130\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:2754936280 1 udp 2113937151 31.13.65.130 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\r\na=candidate:1581496399 1 udp 2113939711 2a03:2880:f211:d1:face:b00c:0:699c 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\r\na=ice-ufrag:kv6Jn8vBmEds/8\r\na=ice-pwd:OhY8sT7v6PJe3bbs0Yx2TC/oPb5oatnK\r\na=ice-options:trickle\r\na=fingerprint:sha-256 46:14:2B:31:B1:9D:AF:15:81:E2:EF:45:B1:2B:96:3D:64:0E:63:F1:CC:9A:BD:88:D6:32:8F:E9:2A:13:3A:38\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:433528572 cname:VBDcSNi/cg1Wg6D3\r\na=ssrc:433528572 msid:68a296ba-41cc-41db-8edb-3ddf4dbbb483 audio#wx3mq6BITjB\r\na=ssrc:433528572 mslabel:68a296ba-41cc-41db-8edb-3ddf4dbbb483\r\na=ssrc:433528572 label:audio#wx3mq6BITjB\r\n"},"от":"15551112222","связь":{"webrtc":{"sdp":"{\"sdp\":\"v=0\\r\\no=- 8076734947255960322 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0\\r\\na=extmap-allow-mixed\\r\\na=msid-semantic: WMS 68a296ba-41cc-41db-8edb-3ddf4dbbb483\\r\\na=ice-lite\\r\\nm=audio 3482 UDP/TLS/RTP/SAVPF 111 9 0 8 110 126\\r\\nc=IN IP4 31.13.65.130\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=candidate:2754936280 1 udp 2113937151 31.13.65.130 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\\r\\na=candidate:1581496399 1 udp 2113939711 2a03:2880:f211:d1:face:b00c:0:699c 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\\r\\na=ice-ufrag:kv6Jn8vBmEds/8\\r\\na=ice-pwd:OhY8sT7v6PJe3bbs0Yx2TC/oPb5oatnK\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 46:14:2B:31:B1:9D:AF:15:81:E2:EF:45:B1:2B:96:3D:64:0E:63:F1:CC:9A:BD:88:D6:32:8F:E9:2A:13:3A:38\\r\\na=setup:active\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=sendrecv\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:126 telephone-event/8000\\r\\na=ssrc:433528572 cname:VBDcSNi/cg1Wg6D3\\r\\na=ssrc:433528572 msid:68a296ba-41cc-41db-8edb-3ddf4dbbb483 audio#wx3mq6BITjB\\r\\na=ssrc:433528572 mslabel:68a296ba-41cc-41db-8edb-3ddf4dbbb483\\r\\na=ssrc:433528572 label:audio#wx3mq6BITjB\\r\\n\",\"type\":\"answer\"}"}},"идентификатор":"wacid.HBgLMTY1MDMxMzM5NzQVAgARGCAwQTJCRDYwNkEzQUNCQUVCMEFGMzYzRTYxNjMxMDdFMxwYCzE0MDg1NTUyODk5FQIAAA==","к":"16501230000","событие":"соединять","временная метка":"1724467313","направление":"БИЗНЕС_ИНИЦИИРОВАН"}],"метаданные":{"идентификатор_номера_телефона":"105615555715855","display_phone_number":"15551112222"},"messaging_product":"WhatsApp"}}],"идентификатор":"112735964992110"}],"объект":"whatsapp_business_account"}