Skip to content

Latest commit

 

History

History
293 lines (227 loc) · 29.2 KB

README.ru.md

File metadata and controls

293 lines (227 loc) · 29.2 KB

whatsapp-api-client-cpp

Поддержка

Support Support Support

Руководства и новости

Guides News News

whatsapp-api-client-cpp - библиотека для интеграции с мессенджером WhatsApp через API сервиса green-api.com. Чтобы воспользоваться библиотекой, нужно получить регистрационный токен и ID аккаунта в личном кабинете. Есть бесплатный тариф аккаунта разработчика.

API

Документация к REST API находится по ссылке. Библиотека является обёрткой к REST API, поэтому документация по ссылке выше применима и к самой библиотеке.

Авторизация

Чтобы отправить сообщение или выполнить другие методы GREEN API, аккаунт WhatsApp в приложении телефона должен быть в авторизованном состоянии. Для авторизации аккаунта перейдите в личный кабинет и сканируйте QR-код с использованием приложения WhatsApp.

Установка зависимостей

Эта библиотека использует стандарт C++ 17, поддерживает компиляторы Linux (GCC) и Windows (Visual Studio 2019/2022).

Клонируйте репозиторий библиотеки

git clone https://github.com/green-api/whatsapp-api-client-cpp.git

Windows

Установка зависимостей с пакетным менеджером vcpkg:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
bootstrap-vcpkg.bat
vcpkg install curl
vcpkg install nlohmann-json
# vcpkg install websocketpp (опционально)
vcpkg integrate install

Windows x64

Большинство компьютеров с Windows сейчас имеют x64-разрядную версию, но по умолчанию vcpkg использует пакеты x86.

vcpkg install nlohmann-json:x64-windows
vcpkg install curl:x64-windows

Для выполнения команд в PowerShell необходимо изменить команды на .\vcpkg

После сборки bootstrap-vcpkg.bat требуется добавить vcpkg.exe в переменные окружения Вашей системы PATH\vcpkg\installed\x64-windows\bin.

Сборка библиоткеки

Windows

Для сборки библиотеки Вам потребуется:

  • CMake - кроcсплатформенная утилита для автоматической сборки программы из исходного кода.
  • Компилятор Microsoft Visual C++ (MSVC) для приложений на языке C++

Сборка библиотеки с использованием CMake и компилятором Visual Studio

Сборка библиотеки осуществляется с помощью сценария build.bat или CMake вручную (компиляция Debug версии библиотеки):

mkdir build
cd build
cmake ..
cd ../
cmake --build build

Возможно при сборке Вам потребуется указать прямые пути до используемых библиотек, раскомментируйте строки в CMakeList.txt

Подключение библиотеки

Подключение библиотеки в Visual Studio можно сделать добавив файл библиотеки whatsapp-api-client-cpp.lib в зависимости проекта:

  1. Свойства->Свойства конфигурации->С/С++->Общие->Дополнительные каталоги включаемых файлов, указать файлы заголовков (папка PATH/whatsapp-api-client-cpp/include)
  2. Свойства->Свойства конфигурации->Компоновщик->Общие->Дополнительные каталоги библиотек, указать путь к библиотеке (папка с собранным файлом PATH/build/)
  3. Свойства->Свойства конфигурации->Компоновщик->Ввод->Дополнительные зависимости, указать наименование фаила библиотеки (whatsapp-api-client-cpp.lib)

Внимательно выбирайте тип Вашей конфигурации и подключайте необходимую версию библиотеки (debug и release)

Linux

Установка зависимостей с пакетным менеджером vcpkg:

  • Зависимости
    • curl
    • nlohmann-json
    • websocketpp (опционально)

Вы можете установить зависимости с помощью готового сценария install.sh (sudo sh install.sh) или вручную:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg/vcpkg install curl
./vcpkg/vcpkg install nlohmann-json
# ./vcpkg install websocketpp (опционально)
./vcpkg/vcpkg integrate install

Сборка библиотеки осуществляется с помощью сценария build.sh (sudo sh build.sh) или вручную:

mkdir build
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build/

Вы можете изменить каталог vcpkg, указав относительный или абсолютный путь.

Возможно при сборке библиотеки Вам потребуется установить дополнительные пакеты:

sudo apt-get update
sudo apt-get install cmake
sudo apt-get install g++
sudo apt-get install pkg-config
sudo apt-get install libcurl4-openssl-dev
sudo apt install build-essential

Примеры

Как инициализировать объект

При инициализации объекта обязательно используйте параметры apiUrl и mediaUrl специально для экземпляра из Вашего личного кабинета, так вы получите наиболее стабильную работу API и минимальное время ответа методов.

greenapi::GreenApi instance1101000001{
    "https://api.green-api.com",
    "https://media.green-api.com",
    "1101123456",
    "87be9e9532fc49748f2a44b9242e55f2e89f4bf97ed6498f80"
    };

Пример отправки текстового сообщения

Ссылка на пример: main.cpp.

nlohmann::json sendMessageJson{
		{ "chatId","71234567890@c.us" },
		{ "message","I use GREEN-API to send this message to you!" }
	};
	greenapi::Response sendMessage = instance1101000001.sending.sendMessage(sendMessageJson);

	if (sendMessage.error) {
		std::cout << "sendMessage error: {status code: " << sendMessage.status_code << ", request time: " << sendMessage.total_time << ", body: " << sendMessage.bodyStr << "}" << "\n" << std::endl;
	}
	else {
		std::cout << "\tidMessage: " << sendMessage.bodyJson["idMessage"] << "\n" << std::endl;
	}

Работа с примерами библиотеки

Все примеры собранны в папке examples, каждый из файлов примера содержит примеры всех методов библиотеки со всеми параметрами, которые поддерживает конкретный метод. Для запуска конкретного примера необходимо производить копирование кода примера в ваш рабочий фаил main.cpp и параметризировать метод вашими значениями.

Список примеров

Описание Модуль
Пример отправки текста main.cpp
Примеры работы методов аккаунта test_accaunt.cpp
Примеры работы методов отправки test_sending.cpp
Примеры работы методов получения test_receiving.cpp
Примеры работы методов журналов test_journals.cpp
Примеры работы методов очередей test_queues.cpp
Примеры работы методов групп test_groups.cpp
Примеры работы методов статусов test_statuses.cpp
Примеры работы методов отметкок о прочтении test_readMark.cpp
Примеры работы методов сервисных методов test_serviceMethods.cpp

Полный список методов библиотеки

Метод API Описание Documentation link
account.getSettings Метод предназначен для получения текущих настроек аккаунта GetSettings
account.getWaSettings Метод предназначен для получения информации о аккаунте WhatsApp GetWaSettings
account.setSettings Метод предназначен для установки настроек аккаунта SetSettings
account.getStateInstance Метод предназначен для получения состояния аккаунта GetStateInstance
account.getStatusInstance Метод предназначен для получения состояния сокета соединения инстанса аккаунта с WhatsApp GetStatusInstance
account.reboot Метод предназначен для перезапуска аккаунта Reboot
account.logout Метод предназначен для разлогинивания аккаунта Logout
account.qr Метод предназначен для получения QR-кода QR
account.setProfilePicture Метод предназначен для установки аватара аккаунта SetProfilePicture
account.getAuthorizationCode Метод предназначен для авторизации инстанса по номеру телефона GetAuthorizationCode
device.getDeviceInfo Метод предназначен для получения информации об устройстве (телефоне), на котором запущено приложение WhatsApp Business GetDeviceInfo
groups.createGroup Метод предназначен для создания группового чата CreateGroup
groups.updateGroupName Метод изменяет наименование группового чата UpdateGroupName
groups.getGroupData Метод получает данные группового чата GetGroupData
groups.addGroupParticipant Метод добавляет участника в групповой чат AddGroupParticipant
groups.removeGroupParticipant Метод удаляет участника из группового чата RemoveGroupParticipant
groups.setGroupAdmin Метод назначает участника группового чата администратором SetGroupAdmin
groups.removeAdmin Метод лишает участника прав администрирования группового чата RemoveAdmin
groups.setGroupPicture Метод устанавливает аватар группы SetGroupPicture
groups.leaveGroup Метод производит выход пользователя текущего аккаунта из группового чата LeaveGroup
journals.getChatHistory Метод возвращает историю сообщений чата GetChatHistory
journals.getMessage Метод возвращает сообщение чата GetMessage
journals.lastIncomingMessages Метод возвращает крайние входящие сообщения аккаунта LastIncomingMessages
journals.lastOutgoingMessages Метод возвращает крайние отправленные сообщения аккаунта LastOutgoingMessages
queues.showMessagesQueue Метод предназначен для получения списка сообщений, находящихся в очереди на отправку ShowMessagesQueue
queues.clearMessagesQueue Метод предназначен для очистки очереди сообщений на отправку ClearMessagesQueue
marking.readChat Метод предназначен для отметки сообщений в чате прочитанными ReadChat
receiving.receiveNotification Метод предназначен для получения одного входящего уведомления из очереди уведомлений ReceiveNotification
receiving.deleteNotification Метод предназначен для удаления входящего уведомления из очереди уведомлений DeleteNotification
receiving.downloadFile Метод предназначен для скачивания принятых и отправленных файлов DownloadFile
sending.sendMessage Метод предназначен для отправки текстового сообщения в личный или групповой чат SendMessage
sending.sendButtons Метод предназначен для отправки сообщения с кнопками в личный или групповой чат SendButtons
sending.sendTemplateButtons Метод предназначен для отправки сообщения с интерактивными кнопками из перечня шаблонов в личный или групповой чат SendTemplateButtons
sending.sendListMessage Метод предназначен для отправки сообщения с кнопкой выбора из списка значений в личный или групповой чат SendListMessage
sending.sendFileByUpload Метод предназначен для отправки файла, загружаемого через форму (form-data) SendFileByUpload
sending.sendFileByUrl Метод предназначен для отправки файла, загружаемого по ссылке SendFileByUrl
sending.uploadFile Метод предназначен для загрузки файла в облачное хранилище, который можно отправить методом sendFileByUrl UploadFile
sending.sendLocation Метод предназначен для отправки сообщения геолокации SendLocation
sending.sendContact Метод предназначен для отправки сообщения с контактом SendContact
sending.sendLink Метод предназначен для отправки сообщения со ссылкой, по которой будут добавлены превью изображения, заголовок и описание SendLink
sending.forwardMessages Метод предназначен для пересылки сообщений в личный или групповой чат ForwardMessages
sending.sendPoll Метод предназначен для отправки сообщения с опросом в личный или групповой чат SendPoll
serviceMethods.checkWhatsapp Метод проверяет наличие аккаунта WhatsApp на номере телефона CheckWhatsapp
serviceMethods.getAvatar Метод возвращает аватар корреспондента или группового чата GetAvatar
serviceMethods.getContacts Метод предназначен для получения списка контактов текущего аккаунта GetContacts
serviceMethods.getContactInfo Метод предназначен для получения информации о контакте GetContactInfo
serviceMethods.deleteMessage Метод удаляет сообщение из чата DeleteMessage
serviceMethods.archiveChat Метод архивирует чат ArchiveChat
serviceMethods.unarchiveChat Метод разархивирует чат UnarchiveChat
serviceMethods.setDisappearingChat Метод предназначен для изменения настроек исчезающих сообщений в чатах SetDisappearingChat

Документация по методам сервиса

https://green-api.com/docs/api/.

Зависимости библиотеки

Лицензия

Лицензировано на условиях Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) . LICENSE.