Перейти к содержанию

Звонки API#

Бета-версия

Функциональность находится в режиме бета-версии. Функции могут быть изменены, а также могут работать нестабильно.

По вопросам подключения к тарифу и дополнительным условиям просим вас писать на почту support@green-api.com или в чат на сайте.

Тариф "Звонки" предоставляет универсальный REST API-интерфейс для управления входящими и исходящими WhatsApp*-звонками.

Содержание#

  1. Возможности
  2. Авторизация инстанса для тарифа Звонки
  3. Быстрый старт по работе со звонками
    3.1. Сценарий исходящего вызова
    3.2. Сценарий входящего вызова
  4. Методы для управления звонками
    4.1 Управление вызовом
    4.2 Сигнализация звонков
  5. Библиотека для браузера и готовый пример

1. Возможности#

Тариф позволяет производить входящие и исходящие звонки с пользователями WhatsApp*. Продолжительность одного звонка не превышает 90 минут.

2. Авторизация инстанса для тарифа Звонки#

Для работы с тарифом Звонки требуется авторизовать инстанс. Авторизация инстанса выполняется в Личном кабинете путем считывания QR-кода из мобильного приложения WhatsApp* Business или WhatsApp*.

3. Быстрый старт по работе со звонками#

Звук передаётся по технологии WebRTC, а обо всём, что происходит со звонком, сообщает соединение callsRtc. Поэтому оба сценария начинаются одинаково: соединение открывается первым и держится всё время звонка.

Состояние звонка приходит в этом соединении в сообщении с типом state и принимает значения idle (звонка нет), inc-call (поступил входящий вызов), out-call (выполняется исходящий вызов) и on-call (разговор идёт).

3.1. Сценарий исходящего вызова#

  1. Открыть соединение callsRtc.
  2. Начать вызов методом callsDial, указав идентификатор чата собеседника. Ответ 200 OK с идентификатором звонка означает, что команда принята; дозвон виден по переходу состояния в out-call.
  3. Получить список серверов методом callsGetIceServers и отправить в соединении предложение о передаче звука — сообщение с типом offer. Отправлять его нужно только после того, как метод callsDial завершился.
  4. Дождаться в соединении ответа сервера — сообщения с типом answer — и обменяться сообщениями с типом ice-candidate. После этого звук идёт в обе стороны.
  5. Когда собеседник принял вызов, состояние переходит в on-call.
  6. Завершить звонок методом callsHangUp. Звонок окончен, когда состояние перешло в idle; в этом же сообщении сервер может указать причину в поле reason.

3.2. Сценарий входящего вызова#

  1. Открыть соединение callsRtc.
  2. О входящем вызове сообщает состояние inc-call. Кто звонит — в объекте info: там идентификатор собеседника и, если WhatsApp* его передал, имя.
  3. Принять вызов методом callsAccept либо отклонить методом callsReject. Начало разговора сервер отметит переходом состояния в on-call.
  4. После принятия вызова получить список серверов методом callsGetIceServers и отправить предложение о передаче звука — сообщение с типом offer. Предложение и при входящем вызове формирует ваше приложение, а не сервер.
  5. Дождаться сообщения с типом answer и обменяться сообщениями с типом ice-candidate. После этого звук идёт в обе стороны.
  6. Завершить звонок методом 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.