@green-api/whatsapp-api-client-js-v2
v1.0.2
Published
whatsapp-api-client-js-v2
Readme
GREEN-API WhatsApp SDK v2
TypeScript/JavaScript SDK для взаимодействия с GREEN-API WhatsApp шлюзом.
Установка
npm install @green-api/whatsapp-api-client-js-v2
# или
yarn add @green-api/whatsapp-api-client-js-v2API
Документация к REST API находится по ссылке{:target="_blank"}. Библиотека является обёрткой к REST API, поэтому документация по ссылке выше применима и к самой библиотеке.
Авторизация
Чтобы отправить сообщение или выполнить другие методы GREEN-API, аккаунт WhatsApp в приложении телефона должен быть в авторизованном состоянии. Для авторизации инстанса перейдите в личный кабинет{:target="_blank"} и сканируйте QR-код с использованием приложения WhatsApp.
Начало работы
Для использования SDK необходимо создать экземпляр GreenApiClient с вашими данными инстанса GREEN-API:
import { GreenApiClient } from '@green-api/whatsapp-api-client-js-v2';
const client = new GreenApiClient({
idInstance: 12345,
apiTokenInstance: 'ваш-api-токен'
});Для доступа к API Партнера используйте GreenApiPartnerClient (вы должны иметь ключ партнера):
import { GreenApiPartnerClient } from '@green-api/whatsapp-api-client-js-v2';
const partnerClient = new GreenApiPartnerClient({
partnerToken: 'ваш-партнерский-токен',
partnerApiUrl: 'https://api.green-api.com' // Опционально, по умолчанию этот URL
});Примеры использования
Отправка текстового сообщения
await client.sendMessage({
chatId: '[email protected]',
message: 'Привет от GREEN-API SDK!'
});Отправка файла по URL
await client.sendFileByUrl({
chatId: '[email protected]',
file: {
url: 'https://example.com/file.pdf',
fileName: 'document.pdf'
},
caption: 'Посмотри этот файл'
});Создание опроса
await client.sendPoll({
chatId: '[email protected]',
message: 'Какой ваш любимый цвет?',
options: [
{optionName: 'Красный'},
{optionName: 'Синий'},
{optionName: 'Зеленый'}
],
multipleAnswers: false
});Управление группами
// Создание группы
const group = await client.createGroup({
groupName: 'Моя тестовая группа',
chatIds: ['[email protected]', '[email protected]']
});
// Добавление участника
await client.addGroupParticipant({
groupId: group.chatId,
participantChatId: '[email protected]'
});Получение уведомлений
// Получение уведомления с таймаутом 30 секунд
const notification = await client.receiveNotification(30);
if (notification) {
console.log('Получено уведомление:', notification.body.typeWebhook);
// Обработка уведомления
if (notification.body.typeWebhook === 'incomingMessageReceived') {
// Обработка входящего сообщения
console.log('Сообщение:', notification.body.messageData);
}
// Удаление уведомления из очереди после обработки
await client.deleteNotification(notification.receiptId);
}
// Скачивание файла из сообщения
const fileData = await client.downloadFile({
chatId: '[email protected]',
idMessage: 'ID_СООБЩЕНИЯ_С_ФАЙЛОМ'
});
console.log('URL файла:', fileData.downloadUrl);Работа со статусами WhatsApp (Бета)
// Отправка текстового статуса
await client.sendTextStatus({
message: "Привет от GREEN-API SDK!",
backgroundColor: "#228B22", // Зеленый фон
font: "SERIF",
participants: ["[email protected]"] // Опционально: ограничить видимость для конкретных контактов
});
// Отправка медиа-статуса
await client.sendMediaStatus({
urlFile: "https://example.com/image.jpg",
fileName: "image.jpg",
caption: "Посмотрите на этот вид!",
participants: ["[email protected]"]
});
// Получение статистики статуса
const stats = await client.getStatusStatistic({
idMessage: "BAE5F4886F6F2D05"
});
console.log(`Статус просмотрели ${stats.length} контактов`);
// Получение входящих статусов от контактов
const statuses = await client.getIncomingStatuses({minutes: 60}); // За последний час
statuses.forEach(status => {
console.log(`Статус от ${status.senderName} в ${new Date(status.timestamp * 1000)}`);
});API партнера (Управление инстансами)
// Получение всех инстансов
const instances = await partnerClient.getInstances();
console.log(`Всего инстансов: ${instances.length}`);
console.log(`Активных инстансов: ${instances.filter(i => !i.deleted).length}`);
// Создание нового инстанса
const instance = await partnerClient.createInstance({
name: "Маркетинговая кампания",
incomingWebhook: "yes",
outgoingWebhook: "yes",
delaySendMessagesMilliseconds: 3000
});
console.log(`Создан инстанс с ID: ${instance.idInstance}`);
console.log(`API Токен: ${instance.apiTokenInstance}`);
// Удаление инстанса
const result = await partnerClient.deleteInstanceAccount({
idInstance: instance.idInstance
});
if (result.deleteInstanceAccount) {
console.log("Инстанс успешно удален");
}Редактирование и удаление сообщений
// Редактирование сообщения
const editResult = await client.editMessage({
chatId: '[email protected]',
idMessage: 'BAE5367237E13A87',
message: 'Это отредактированный текст сообщения'
});
console.log('ID отредактированного сообщения:', editResult.idMessage);
// Удаление сообщения для всех
await client.deleteMessage({
chatId: '[email protected]',
idMessage: 'BAE5F4886F6F2D05'
});
// Удаление сообщения только для отправителя
await client.deleteMessage({
chatId: '[email protected]',
idMessage: 'BAE5F4886F6F2D05',
onlySenderDelete: true
});Методы SDK
SDK предоставляет следующие группы методов:
Методы отправки сообщений
sendMessage- отправка текстового сообщенияsendFileByUrl- отправка файла по URLsendFileByUpload- отправка файла с загрузкойsendPoll- создание опросаforwardMessages- пересылка сообщенийsendLocation- отправка местоположенияsendContact- отправка контактаuploadFile- загрузка файла
Методы управления аккаунтом
reboot- перезагрузкаlogout- выход из аккаунтаgetStateInstance- получение состояния инстансаgetQR- получение QR-кодаgetSettings- получение настроекsetSettings- установка настроекgetWaSettings- получение настроек WhatsAppsetProfilePicture- установка фото профиляgetAuthorizationCode- получение кода авторизации
Методы очереди сообщений
showMessagesQueue- отображение очереди сообщенийclearMessagesQueue- очистка очереди сообщений
Сервисные методы
readChat- отметить чат как прочитанныйcheckWhatsapp- проверка наличия WhatsAppgetAvatar- получение аватараgetContacts- получение контактовgetContactInfo- получение информации о контактеarchiveChat- архивирование чатаunarchiveChat- разархивирование чатаsetDisappearingChat- настройка исчезающих сообщенийeditMessage- редактирование сообщенияdeleteMessage- удаление сообщения
Методы управления группами
createGroup- создание группыupdateGroupName- обновление имени группыgetGroupData- получение данных группыaddGroupParticipant- добавление участникаremoveGroupParticipant- удаление участникаsetGroupAdmin- назначение администратораremoveAdmin- снятие прав администратораsetGroupPicture- установка фото группыleaveGroup- выход из группы
Методы журнала
getMessage- получение сообщенияgetChatHistory- получение истории чатаlastIncomingMessages- последние входящие сообщенияlastOutgoingMessages- последние исходящие сообщения
Методы получения сообщений
receiveNotification- получение уведомления из очередиdeleteNotification- удаление уведомления из очередиdownloadFile- скачивание файла сообщения
Методы статусов (Бета)
sendTextStatus- отправка текстового статусаsendVoiceStatus- отправка голосового статусаsendMediaStatus- отправка медиа-статусаdeleteStatus- удаление статусаgetStatusStatistic- получение статистики статусаgetIncomingStatuses- получение входящих статусовgetOutgoingStatuses- получение исходящих статусов
Методы API партнера
getInstances- получение всех инстансовcreateInstance- создание инстансаdeleteInstanceAccount- удаление инстанса
Лицензия
MIT
