whatsapp-api-webhook-server-java - библиотека для интеграции с мессенджером WhatsApp через API сервиса green-api.com. Чтобы воспользоваться библиотекой, нужно получить регистрационный токен и ID аккаунта в личном кабинете. Есть бесплатный тариф аккаунта разработчика.
Документация к REST API находится по ссылке. Библиотека является оберткой к REST API, поэтому документация по ссылке выше применима и к самой библиотеке.
Чтобы отправить сообщение или выполнить другие методы Green API, аккаунт WhatsApp в приложении телефона должен быть в авторизованном состоянии. Для авторизации аккаунта перейдите в личный кабинет и сканируйте QR-код с использованием приложения WhatsApp.
Обновим систему:
sudo apt update
sudo apt upgrade -y
На сервере должен быть установлен 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.