PHP библиотека для интеграции с мессенджером WhatsApp через API сервиса green-api.com. Чтобы воспользоваться библиотекой, нужно получить регистрационный токен и id аккаунта в личном кабинете. Есть бесплатный тариф аккаунта разработчика.
Документация к REST API находится по ссылке. Библиотека является оберткой к REST API, поэтому документация по ссылке выше применима и к самой библиотеке.
Через Composer:
composer require green-api/whatsapp-api-client-php
require './vendor/autoload.php';
Чтобы отправить сообщение или выполнить другой метод Green-API, аккаунт WhatsApp в приложении телефона должен быть в авторизованном состоянии. Для авторизации аккаунта перейдите в личный кабинет и сканируйте QR-код с использованием приложения WhatsApp.
php -S localhost:8080
$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE );
$result = $greenApi->sending->sendMessage('[email protected]', 'Message text');
Ссылка на пример: sendTextMessage.php
Обратите внимание, что ключи можно получать из переменных среды:
<?php
require './vendor/autoload.php';
define( "ID_INSTANCE", getenv("ID_INSTANCE" ));
define( "API_TOKEN_INSTANCE", getenv("API_TOKEN_INSTANCE") );
$result = $greenApi->sending->sendFileByUrl(
'[email protected]', 'https://www.google.ru/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png',
'googlelogo_color_272x92dp.png', 'Google logo');
Ссылка на пример: sendPictureByLink.php
result = greenAPI.sending.sendFileByUpload('[email protected]',
'C:\Games\PicFromDisk.png',
'PicFromDisk.png', 'Picture from disk')
Ссылка на пример: sendPictureByUpload.php
$chatIds = [
'[email protected]'
];
$resultCreate = $greenApi->groups->createGroup('GroupName', $chatIds );
if ($resultCreate->code == 200)
$resultSend = $greenApi->sending->sendMessage($resultCreate->data->chatId,
'Message text');
ВАЖНО: Если попытаться создать группу с несуществующим номером WhatsApp может заблокировать номер отправителя. Номер в примере не существует.
Ссылка на пример: createGroupAndSendMessage.php
Общая концепция получения данных в Green API описана здесь Для старта получения сообщений через HTTP API требуется выполнить метод библиотеки:
greenAPI.webhooks.startReceivingNotifications(onEvent)
onEvent - ваш метод, который должен содержать параметры:
Параметр | Описание |
---|---|
typeWebhook | тип полученного сообщения (строка) |
body | тело сообщения (json) |
Типы и форматы тел сообщений здесь
Этот метод будет вызываться при получении входящего сообщения. Далее обрабатываете сообщения согласно бизнес-логике вашей системы.
Описание | Модуль |
---|---|
Пример отправки текста | sendTextMessage.php |
Пример отправки картинки по URL | sendPictureByLink.php |
Пример отправки картинки загрузкой с диска | sendPictureByUpload.php |
Пример создание группы и отправка сообщения в группу | createGroupAndSendMessage.php |
Пример получения входящих уведомлений | receiveNotification.php |
Метод API | Описание | Documentation link |
---|---|---|
account.getSettings |
Метод предназначен для получения текущих настроек аккаунта | GetSettings |
account.setSettings |
Метод предназначен для установки настроек аккаунта | SetSettings |
account.getStateInstance |
Метод предназначен для получения состояния аккаунта | GetStateInstance |
account.getStatusInstance |
Метод предназначен для получения состояния сокета соединения инстанса аккаунта с WhatsApp | GetStatusInstance |
account.reboot |
Метод предназначен для перезапуска аккаунта | Reboot |
account.logout |
Метод предназначен для разлогинивания аккаунта | Logout |
account.qr |
Метод предназначен для получения QR-кода | QR |
account.setProfilePicture |
Метод предназначен для установки аватара аккаунта | SetProfilePicture |
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.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.sendLocation |
Метод предназначен для отправки сообщения геолокации | SendLocation |
sending.sendContact |
Метод предназначен для отправки сообщения с контактом | SendContact |
sending.sendLink |
Метод предназначен для отправки сообщения со ссылкой, по которой будут добавлены превью изображения, заголовок и описание | SendLink |
sending.forwardMessages |
Метод предназначен для пересылки сообщений в личный или групповой чат | ForwardMessages |
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 |
webhooks.startReceivingNotifications |
Метод предназначен для старта получения новых уведомлений | |
webhooks.stopReceivingNotifications |
Метод предназначен для остановки получения новых уведомлений |
https://green-api.com/docs/api/
Лицензировано на условиях MIT. Смотрите файл LICENSE