whatsapp-api-client-python - библиотека для интеграции с мессенджером WhatsApp через API сервиса green-api.com. Чтобы воспользоваться библиотекой, нужно получить регистрационный токен и ID аккаунта в личном кабинете. Есть бесплатный тариф аккаунта разработчика.
Документация к REST API находится по ссылке. Библиотека является обёрткой к REST API, поэтому документация по ссылке выше применима и к самой библиотеке.
Чтобы отправить сообщение или выполнить другие методы GREEN API, аккаунт WhatsApp в приложении телефона должен быть в авторизованном состоянии. Для авторизации аккаунта перейдите в личный кабинет и сканируйте QR-код с использованием приложения WhatsApp.
python -m pip install whatsapp-api-client-pythonfrom whatsapp_api_client_python import API
greenAPI = API.GreenAPI(
"1101000001", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345"
)
Ссылка на пример: sendTextMessage.py.
response = greenAPI.sending.sendMessage("[email protected]", "Message text")
print(response.data)
Ссылка на пример: sendMessageAsync.py.
import asyncio
async def main():
response = await greenAPI.sending.sendMessageAsync("[email protected]", "Message text")
print(response.data)
asyncio.run(main())
Ссылка на пример: sendPictureByLink.py.
response = greenAPI.sending.sendFileByUrl(
"[email protected]",
"https://download.samplelib.com/png/sample-clouds2-400x300.png",
"sample-clouds2-400x300.png",
"Sample PNG"
)
print(response.data)
Ссылка на пример: sendPictureByUpload.py.
response = greenAPI.sending.sendFileByUpload(
"[email protected]",
"data/logo.jpg",
"logo.jpg",
"Available rates"
)
print(response.data)
Ссылка на пример: sendFileByUploadAsync.py.
import asyncio
async def main():
response = await greenAPI.sending.sendFileByUploadAsync(
"[email protected]",
"data/logo.jpg",
"logo.jpg",
"Available rates"
)
print(response.data)
asyncio.run(main())
Важно. Если попытаться создать группу с несуществующим номером WhatsApp, то может заблокировать номер отправителя. Номер в примере не существует.
Ссылка на пример: createGroupAndSendMessage.py.
create_group_response = greenAPI.groups.createGroup(
"Group Name", ["[email protected]"]
)
if create_group_response.code == 200:
send_message_response = greenAPI.sending.sendMessage(
create_group_response.data["chatId"], "Message text"
)
Ссылка на пример: receiveNotification.py.
Общая концепция получения данных в GREEN API описана здесь. Для старта получения уведомлений через HTTP API требуется выполнить метод библиотеки:
greenAPI.webhooks.startReceivingNotifications(onEvent)
onEvent - ваша функция, которая должен содержать параметры:
| Параметр | Описание |
|---|---|
| typeWebhook | тип полученного уведомления (str) |
| body | тело уведомления (dict) |
Типы и форматы тел уведомлений находятся здесь.
Эта функция будет вызываться при получении входящего уведомления. Далее обрабатываете уведомления согласно бизнес-логике вашей системы.
Ссылка на пример: receiveNotificationAsync.py.
import asyncio
async def main():
await greenAPI.webhooks.startReceivingNotificationsAsync(onEvent)
asyncio.run(main())
Ссылка на пример: sendPoll.py.
response = greenAPI.sending.sendPoll(
"[email protected]",
"Please choose a color:",
[
{"optionName": "Red"},
{"optionName": "Green"},
{"optionName": "Blue"}
]
)
print(response.data)
Ссылка на пример: sendTextStatus.py.
response = greenAPI.statuses.sendTextStatus(
"I sent this status using Green Api Python SDK!",
"#54c774",
"NORICAN_REGULAR"
)
print(response.data)
Ссылка на пример: sendInteractiveButtons.py.
response = greenAPI.sending.sendInteractiveButtons(
"[email protected]",
"This is message with buttons!",
[{
"type": "call",
"buttonId": "1",
"buttonText": "Call me",
"phoneNumber": "79876543210"
},
{
"type": "url",
"buttonId": "2",
"buttonText": "Green-api",
"url": "https://green-api.com/en/docs/api/sending/SendInteractiveButtons/"
}],
"Check this out",
"Hope you like it"
)
print(response.data)
Ссылка на пример: sendInteractiveButtonsAsync.py.
import asyncio
async def main():
response = await greenAPI.sending.sendInteractiveButtonsAsync(
"[email protected]",
"This is message with buttons!",
[{
"type": "call",
"buttonId": "1",
"buttonText": "Call me",
"phoneNumber": "79876543210"
},
{
"type": "url",
"buttonId": "2",
"buttonText": "Green-api",
"url": "https://green-api.com/en/docs/api/sending/SendInteractiveButtons/"
}],
"Check this out",
"Hope you like it"
)
print(response.data)
asyncio.run(main())
| Описание | Модуль |
|---|---|
| Пример отправки текста | sendTextMessage.py |
| Пример асинхронной отправки текста | sendTextMessageAsync.py |
| Пример отправки картинки по URL | sendPictureByLink.py |
| Пример асинхронной отправки файла по URL | sendFileByUrlAsync.py |
| Пример отправки картинки загрузкой с диска | sendPictureByUpload.py |
| Пример асинхронной отправки картинки загрузкой с диска | sendFileByUploadAsync.py |
| Пример создания группы и отправки сообщения в группу | createGroupAndSendMessage.py |
| Пример асинхронных создания группы и отправки сообщения в группу | createGroupAndSendMessageAsync.py |
| Пример получения входящих уведомлений | receiveNotification.py |
| Пример асинхронного получения входящих уведомлений | receiveNotificationФынтс.py |
| Пример отправки сообщения с опросом | sendPoll.py |
| Пример асинхронной отправки сообщения с опросом | sendPollAsync.py |
| Пример отправки текстового статуса | sendTextStatus.py |
| Пример асинхронной отправки текстового статуса | sendTextStatusAsync.py |
| Пример создания инстанса | CreateInstance.py |
| Пример асинхронного создания инстанса | CreateInstanceAsync.py |
| Пример отправки интерактивных кнопок | SendInteractiveButtons.py |
| Пример асинхронной отправки интерактивных кнопок | SendInteractiveButtonsAsync.py |
| Пример отправки интерактивных кнопок с ответом | SendInteractiveButtonsReply.py |
| Пример асинхронной отправки интерактивных кнопок с ответом | SendInteractiveButtonsReplyAsync.py |
| Пример отправки уведомления о наборе текста или записи аудио | SendTyping.py |
| Пример асинхронной отправки уведомления о наборе текста или записи аудио | SendTypingAsync.py |
| Метод API | Описание | Ссылка на документацию |
|---|---|---|
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.sendFileByUpload |
Метод предназначен для отправки файла, загружаемого через форму (form-data) | SendFileByUpload |
sending.sendFileByUrl |
Метод предназначен для отправки файла, загружаемого по ссылке | SendFileByUrl |
sending.uploadFile |
Метод предназначен для загрузки файла в облачное хранилище, который можно отправить методом sendFileByUrl | UploadFile |
sending.sendLocation |
Метод предназначен для отправки сообщения геолокации | SendLocation |
sending.sendContact |
Метод предназначен для отправки сообщения с контактом | SendContact |
sending.forwardMessages |
Метод предназначен для пересылки сообщений в личный или групповой чат | ForwardMessages |
sending.sendPoll |
Метод предназначен для отправки сообщения с опросом в личный или групповой чат | SendPoll |
sending.sendInteractiveButtons |
Метод предназначен для отправки сообщений с интерактивными кнопками | sendInteractiveButtons |
sending.sendInteractiveButtonsReply |
Метод предназначен для отправки сообщений с интерактивными кнопками с ответом | sendInteractiveButtonsReply |
serviceMethods.checkWhatsapp |
Метод проверяет наличие аккаунта WhatsApp на номере телефона | CheckWhatsapp |
serviceMethods.getAvatar |
Метод возвращает аватар корреспондента или группового чата | GetAvatar |
serviceMethods.getContacts |
Метод предназначен для получения списка контактов текущего аккаунта | GetContacts |
serviceMethods.getContactInfo |
Метод предназначен для получения информации о контакте | GetContactInfo |
serviceMethods.deleteMessage |
Метод удаляет сообщение из чата | DeleteMessage |
serviceMethods.editMessage |
Метод изменяет сообщение в чате | EditMessage |
serviceMethods.archiveChat |
Метод архивирует чат | ArchiveChat |
serviceMethods.unarchiveChat |
Метод разархивирует чат | UnarchiveChat |
serviceMethods.setDisappearingChat |
Метод предназначен для изменения настроек исчезающих сообщений в чатах | SetDisappearingChat |
serviceMethods.sendTyping |
Метод предназначен для отправки уведомления о наборе текста или записи аудио в чат | SendTyping |
webhooks.startReceivingNotifications |
Метод предназначен для старта получения новых уведомлений | |
webhooks.stopReceivingNotifications |
Метод предназначен для остановки получения новых уведомлений | |
partner.GetInstances |
Метод предназначен для получения всех инстансов аккаунтов созданных партнёром. | GetInstances |
partner.CreateInstance |
Метод предназначен для создания инстанса от имени партнёра. | CreateInstance |
partner.DeleteInstanceAccount |
Метод предназначен для удаления инстанса аккаунта партнёра. | DeleteInstanceAccount |
https://green-api.com/docs/api/.
Лицензировано на условиях Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). LICENSE.