Skip to content

Latest commit

 

History

History
190 lines (139 loc) · 10.4 KB

File metadata and controls

190 lines (139 loc) · 10.4 KB

whatsapp-api-webhook-server-java

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

API

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

Авторизация

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

Пример подготовки среды для Ubuntu Server

Обновление системы

Обновим систему:

sudo apt update
sudo apt upgrade -y

Установка java

На сервере должен быть установлен Java 17. Инструкция по установке Java.

sudo apt install openjdk-17-jdk

Брандмауэр

Настроим брандмауэр:

Разрешим соединение по SSH:

sudo ufw allow ssh

Базовые правила:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Разрешаем соединения по HTTP и HTTPS:

sudo ufw allow http
sudo ufw allow https

Активируем брандмауэр:

sudo ufw enable

Как запустить веб-сервер

Импорт

Установите библиотеку в проект своего сервера. Библиотека доступна в центральном репозитории Maven.

Maven

<dependency>
    <groupId>com.green-api</groupId>
    <artifactId>whatsapp-api-webhook-server-java</artifactId>
    <version>{{version}}</version>
</dependency>

Gradle

implementation group: 'com.green-api', name: 'whatsapp-api-client-java', version: 'version'

Примеры

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

Установите параметры сервера в application.yml. Атрибут WebhookToken является опциональным, ему можно не присваивать значение, однако он должен быть в application.yml. Если вы не хотите устанавливать пароль, вы можете просто оставить параметр webhookToken без значения.

green-api:
  webhookToken:
server:
  port: 8080

Приложения начнет слушать порт, сразу после запуска метода main, для этого не забудьте поставить аннотацию @ComponentScan(basePackages = "com.greenapi.server"), чтобы в вашем проекте были доступны все стандартные бины библиотеки.

Ссылка на пример: WhatsappApiServerExample.java.

@SpringBootApplication
@ComponentScan(basePackages = "com.greenapi.server")
public class WhatsappApiServerExample {
    public static void main(String[] args) {
        SpringApplication.run(WhatsappApiServerExample.class, args);
    }
}

Класс функции-обработчика должен имплементировать интерфейс WebhookHandler и быть бином с именем whatsappWebhookHandler. Для этого установите аннотацию @Component(value = "whatsappWebhookHandler") над классом функции-обработчика.

Ссылка на пример: WebhookHandlerExample.java.

@Component(value = "whatsappWebhookHandler")
public class WebhookHandlerExample implements WebhookHandler {

    @SneakyThrows
    @Override
    public void handle(Notification notification) {
        System.out.println("START " + notification);
        Thread.sleep(20000);
        System.out.println("END " + notification);
    }
}

Webhook URL: {{your host}}/green-api/async/webhook Если вы хотите чтобы ваша функция-обработчик handle() будет выполнена асинхронно.

Webhook URL: {{your host}}/green-api/webhook Если вы хотите чтобы ваша функция-обработчик handle() вызывалась для каждого вебхука последовательно в одном потоке.

Так как каждое уведомление автоматически кастится до java объекта, вы можете фильтровать уведомление по любому полю самостоятельно. С описанием структуры объектов уведомлений можно ознакомиться по этой ссылке: Документация Для удобства все типы хуков и сообщений названы аналогично документации:

Java объект Webhook's json объект
TextMessageWebhook TextMessage
TemplateMessageWebhook TemplateMessage
StickerMessageWebhook StickerMessage
ReactionMessageWebhook ReactionMessage
QuotedMessageWebhook QuotedMessage
PollUpdateMessageWebhook PollUpdateMessage
PollMessageWebhook PollMessage
LocationMessageWebhook LocationMessage
ListMessageWebhook ListMessage
GroupInviteMessageWebhook GroupInviteMessage
FileMessageWebhook imageMessage, videoMessage, documentMessage, audioMessage
ExtendedTextMessageWebhook ExtendedTextMessage
ButtonsMessageWebhook ButtonsMessage
ContactMessageWebhook ContactMessage
ContactsArrayMessageWebhook ContactMessage
TemplateButtonsReplyMessageWebhook TemplateButtonsReplyMessage
ButtonsResponseMessageWebhook ButtonsResponseMessage
ListResponseMessageWebhook ListResponseMessage

Запуск приложения

Для JAR-файла:

java -jar ваше_приложение.jar

Если используется Maven запустите из директории проекта:

./mvnw spring-boot:run

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

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

Лицензия

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