React JavaScript клиент#
Бета-версия
Функциональность находится в режиме бета-версии. Функции могут быть изменены, а также могут работать нестабильно. В будущем за функционал может взиматься дополнительная плата.
Подключение к функционалу можно запросить через техподдержку GREEN-API
React JavaScript клиент это пример использования whatsapp-api-calls-client Library for JavaScript для интеграции с мессенджером WhatsApp через API сервиса green-api.com. Чтобы воспользоваться библиотекой, нужно получить регистрационный токен и ID инстанса в личном кабинете. Для тестирования рекомендуем воспользоваться бесплатным тарифом "Разработчик".
Сайт представляет собой пример для разработчиков, направленный на лучшее понимание библиотеки и не является каким-либо полноценным решением, основные события/ошибки отображаются в консоли разработчика в браузере. Визуально и функционально клиент является улучшенной версией Ванильного JavaScript клиента. В данном примере лучше проработаны интерфейсы страниц, а также добавлен телефонный справочник.
1. Скачивание примера#
Для установки примера необходимо скачать код из github репозитория.
Скачайте архив или воспользуйтесь командной строкой:
git clone https://github.com/green-api/whatsapp-api-calls-client-js.git
2. Установка среды для запуска клиента#
В командной строке в загруженном примере перейдите в папку examples, далее в папку react.
Это нам необходимо чтобы настроить зависимости с помощью npm менеджера пакетов.
cd whatsapp-api-calls-client-js/examples/react
npm install
npm run dev
npm install
достаточно выполнять один раз при первой установке.
После этого вам станет доступен веб-интерфейс клиента по указанному адресу, например:
npm run dev
> vite-project@0.0.0 dev
> vite
VITE v5.2.11 ready in 969 ms
➜ Local: http://localhost:80/
➜ Network: use --host to expose
➜ press h + enter to show help
Откройте ссылку в предпочитаемом браузере.
Для остановки сервера нажмите Ctrl + C и затем нажмите кнопку Y
.
3. Заполнение необходимых данные для авторизации#
Пример запущенного приложения в окне браузера.

Необходимые данные для авторизации находятся в вашем личном кабинете GREEN-API. В качестве apiUrl
используейте строку https://pool.voip.green-api.com
, где pool представляет собой первые 4 символа искомого idInstance:
apiUrl
idInstance
apiTokenInstance
Далее необходимо нажать на кнопку Войти
для подключения инстанса.
Для выхода из инстанса нажмите на кнопку Профиль

В окне профиля вы увидите: номер подключенного телефона, состояние инстанста, id устройства, а также кнопку Выйти
для выхода из инстанса.

4. Приём входящих звонков#
После авторизации в приложении вы можете начать принимать входящие звонки.
Информация о входящем звонке поступит с помощью всплывающего окна, где вы можете выбрать Принять
или Отклонить
звонок.

Браузер может спросить разрешение на использование вашего микрофона, для передачи голоса. Необходимо разрешить это действие.
Для окончания звонка нажмите на кнопку Завершить вызов
. Для вас соединение будет завершено, а клиент услышит в трубку тишину.

Известные проблемы и методы их устранения
При отклонении звонка вызов по-прежнему будет поступать на телефон, что не является ошибкой, а особенностью. Одно из решений данной проблемы - ответить на звонок и сразу сбростить, в этом случае звонок на телефон прекратится.
Из-за нестабильности технологии voip вы можете не увидеть уведомление о входящем звонке в окне браузера.
5. Выполнение исходящих звонков#
После авторизации в приложении вы можете начать совершать исходящие звонки.
Для этого введите номер абонента в форму Номер телефона
и нажмите на зеленую кнопку с трубкой. Либо выберите номер из телефонного справочника.

После нажатия на зеленую кнопку вы увидите окно вызова

Если по какой-то причине звонок не произошёл, убедитесь, что Socket connection status
светится зеленым и имеет статус: connected
.
На некоторых телефонах необходимо, чтобы WhatsApp был запущен фоновым процессом для приёма входящих звонков.
Для окончания звонка нажмите на кнопку Завершить вызов
. Для вас соединение будет завершено, а клиент услышит в трубку тишину.
Описание структуры проекта#
В папке с проектом находятся следующие необходимые папки и каталоги:
├── src/
│ ├── assets/
│ ├── common/
│ ├── components/
│ ├── hooks/
│ ├── pages/
│ ├── router/
│ ├── services/
│ ├── store/
│ ├── styles/
│ ├── store/
│ ├── utils/
│ ├── voip/
│ ├── App.tsx
│ ├── main.tsx
│ └── index.css
├── index.html
├── package.json
├── tsconfig.json
├── vite.config.js
└── .gitignore
- index.html: файл HTML для начала сборки проекта Vite
- package.json - нужен для сборки npm
- tsconfig.json - нужен для использования typescript
- vite.config.js - нужен для сборки html страниц проекта
- public/index.html: Основной файл HTML
- src/App.jsx: Основной компонент React
- src/main.jsx: Точка входа приложения React
- src/index.css: Файл CSS для стилизации
- assets -- картинки проекта
- common - всё что связано с типизацией и константами
- components - папка с кастомными react-компонентами
- hooks - кастомные хуки для react-компонентов
- pages - компоненты-страницы (по сути компонент, состоящий из нескольких кастомный-компонентов, например страница main состоит из компонентов header, contact-list и т.д.)
- services - содержит в себе конфигурацию Redux Toolkit для отправки запросов на сервер (например за списком контактов, получение статуса инстанса и т.д.)
- store - конфигруация Redux Toolkit для работы с клиентским хранилищем
- utils - вспомогательные функции для проекта (обработка ошибок, форматирование дат и т.д.)