Звонки API#
Бета-версия
Функциональность находится в режиме бета-версии. Функции могут быть изменены, а также могут работать нестабильно.
По вопросам подключения к тарифу и дополнительным условиям просим вас писать на почту support@green-api.com или в чат на сайте.
Тариф "Звонки" предоставляет универсальный REST API-интерфейс для управления входящими и исходящими WhatsApp*-звонками.
Содержание#
- Возможности
- Авторизация инстанса для тарифа Звонки
- Быстрый старт по работе со звонками
3.1. Сценарий исходящего вызова
3.2. Сценарий входящего вызова - Методы для управления звонками
4.1 Управление вызовом
4.2 Сигнализация звонков - Библиотека для браузера и готовый пример
1. Возможности#
Тариф позволяет производить входящие и исходящие звонки с пользователями WhatsApp*. Продолжительность одного звонка не превышает 90 минут.
2. Авторизация инстанса для тарифа Звонки#
Для работы с тарифом Звонки требуется авторизовать инстанс. Авторизация инстанса выполняется в Личном кабинете путем считывания QR-кода из мобильного приложения WhatsApp* Business или WhatsApp*.
3. Быстрый старт по работе со звонками#
Звук передаётся по технологии WebRTC, а обо всём, что происходит со звонком, сообщает соединение callsRtc. Поэтому оба сценария начинаются одинаково: соединение открывается первым и держится всё время звонка.
Состояние звонка приходит в этом соединении в сообщении с типом state и принимает значения idle (звонка нет), inc-call (поступил входящий вызов), out-call (выполняется исходящий вызов) и on-call (разговор идёт).
3.1. Сценарий исходящего вызова#
- Открыть соединение callsRtc.
- Начать вызов методом callsDial, указав идентификатор чата собеседника. Ответ
200 OKс идентификатором звонка означает, что команда принята; дозвон виден по переходу состояния вout-call. - Получить список серверов методом callsGetIceServers и отправить в соединении предложение о передаче звука — сообщение с типом
offer. Отправлять его нужно только после того, как методcallsDialзавершился. - Дождаться в соединении ответа сервера — сообщения с типом
answer— и обменяться сообщениями с типомice-candidate. После этого звук идёт в обе стороны. - Когда собеседник принял вызов, состояние переходит в
on-call. - Завершить звонок методом callsHangUp. Звонок окончен, когда состояние перешло в
idle; в этом же сообщении сервер может указать причину в полеreason.
3.2. Сценарий входящего вызова#
- Открыть соединение callsRtc.
- О входящем вызове сообщает состояние
inc-call. Кто звонит — в объектеinfo: там идентификатор собеседника и, если WhatsApp* его передал, имя. - Принять вызов методом callsAccept либо отклонить методом callsReject. Начало разговора сервер отметит переходом состояния в
on-call. - После принятия вызова получить список серверов методом callsGetIceServers и отправить предложение о передаче звука — сообщение с типом
offer. Предложение и при входящем вызове формирует ваше приложение, а не сервер. - Дождаться сообщения с типом
answerи обменяться сообщениями с типомice-candidate. После этого звук идёт в обе стороны. - Завершить звонок методом callsHangUp — состояние перейдёт в
idle.
4. Методы для управления звонками#
4.1 Управление вызовом#
- callsDial — Начать исходящий вызов
- callsAccept — Принять входящий вызов
- callsReject — Отклонить входящий вызов
- callsHangUp — Завершить текущий вызов
- callsState — Получить состояние звонка
- callsGetIceServers — Получить список ICE-серверов
4.2 Сигнализация звонков#
- callsRtc — Состояние звонка и передача звука
5. Библиотека для браузера и готовый пример#
Если звонки нужны в браузере, описанное выше уже сделано в библиотеке @green-api/whatsapp-api-calls-client-js: она поддерживает соединение callsRtc, вызывает методы управления вызовом и передаёт звук по WebRTC.
- JavaScript WhatsApp API Calls Client Library — раздел документации о библиотеке: установка, инициализация, обработка событий
- Репозиторий с библиотекой и примерами
- Описание библиотеки (README)
- Пошаговое руководство — вся интеграция по шагам, от настройки проекта до обработки каждого события
- voip.green-api.com — развёрнутый пример софтфона, его можно открыть в браузере, ничего не устанавливая