whatsapp-api-client-cpp
- библиотека для интеграции с мессенджером WhatsApp через API
сервиса green-api.com. Чтобы воспользоваться библиотекой, нужно получить регистрационный токен
и ID аккаунта в личном кабинете. Есть бесплатный тариф аккаунта разработчика.
- whatsapp-api-client-cpp
Документация к 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
Установка зависимостей с пакетным менеджером 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-разрядную версию, но по умолчанию 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
.
Для сборки библиотеки Вам потребуется:
- 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 в зависимости проекта:
- Свойства->Свойства конфигурации->С/С++->Общие->Дополнительные каталоги включаемых файлов, указать файлы заголовков (папка PATH/whatsapp-api-client-cpp/include)
- Свойства->Свойства конфигурации->Компоновщик->Общие->Дополнительные каталоги библиотек, указать путь к библиотеке (папка с собранным файлом PATH/build/)
- Свойства->Свойства конфигурации->Компоновщик->Ввод->Дополнительные зависимости, указать наименование фаила библиотеки (whatsapp-api-client-cpp.lib)
Внимательно выбирайте тип Вашей конфигурации и подключайте необходимую версию библиотеки (debug и release)
Установка зависимостей с пакетным менеджером 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/.
- curl - для HTTP запросов.
- nlohmann-json - для работы с json.
- websocketpp - для websocket запросов.
Лицензировано на условиях Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) . LICENSE.