Как импортировать библиотеку и сконфигурировать своего бота#
Установка#
Вы можете импортировать библиотеку из центрального репозитория, Примеры для Maven и Gradle:
Maven
<dependency>
<groupId>com.green-api</groupId>
<artifactId>whatsapp-chatbot-java</artifactId>
<version>{{version}}</version>
</dependency>
Gradle
implementation group: 'com.green-api', name: 'whatsapp-chatbot-java', version: 'version'
Как инициализировать объект#
После того как вы импортировали библиотеку в свой проект, вам необходимо сконфигурировать ваше приложение. Для этого вам понадобится создать свой класс конфигурации и добавить в него следующие бины:
Ссылка на пример - BotDefaultConfigExample.java.
@Configuration
public class BotDefaultConfigExample {
@Bean
public RestTemplate restTemplate() {
return new RestTemplateBuilder().build();
}
@Bean
public StateManager stateManager() {
return new StateManagerHashMapImpl();
}
@Bean
public BotFactory botFactory(RestTemplate restTemplate, StateManager stateManager) {
return new BotFactory(restTemplate, stateManager);
}
}
RestTemplate
- стандартный класс Spring, который позволяет отправлять http запросы. Вы можете сконфигурировать его сами или использовать дефолтную реализацию как в примере выше.
StateManager
- класс библиотеки, который отвечает за управление состоянием бота. По умолчанию сессионные данные хранятся в HashMap, но вы можете реализовать свою имплементацию интерфейса StateManager. Если вы хотите добавить в состояние какие-то дефолтные значения, вы можете добавить их на стадии конфигурации например так:
@Configuration
public class BotDefaultConfigExample {
@Bean
public StateManager stateManager() {
var stateData = new HashMap<String, Object>();
stateData.put("defaultParameter", "value");
return new StateManagerHashMapImpl(stateData);
}
}
ВАЖНО: В stateData зарезервирован параметр "scene", в нем хранится актуальная сцена для каждой сессии. Так как этот параметр используется библиотекой для переключения между сценами, не рекомендуется его переопределять на стадии конфигурации.
Далее необходимо прописать хост на который бот будет отправлять запросы в application.yml или application.property:
Если ваши инстансы начинаются с 7103:
green-api:
host: https://api.greenapi.com
hostMedia: https://media.greenapi.com
Если нет:
green-api:
host: https://api.green-api.com
hostMedia: https://media.green-api.com
BotFactory
- класс библиотеки, который отвечает за конфигурирование объекта бота. С помощью данного класса и метода createBot()
вы можете инициализировать объект бота:
Ссылка на пример - BotStarterClassExample.java.
@SpringBootApplication
public class BotStarterClassExample {
public static void main(String[] args) {
var context = SpringApplication.run(BotStarterClassExample.class, args);
var botFactory = context.getBean(BotFactory.class);
var bot = botFactory.createBot(
"{{instanceId}}",
"{{token}}",
new HandlerExample(),
new FullStartScene());
}
}
В методе createBot()
четыре параметра: instanceId
и token
нужно взять из параметров вашего инстанса в личном кабинете. handler
и startScene
это объекты ваших классов в которых вы должны будете реализовать логику вашего бота.
handler
- объект класса, который наследуется от абстрактного класса BotHandler
. Вы можете переопределить в нем методы, которые отвечают за обработку вебхуков о состоянии инстанса и девайса StateInstanceChanged
и DeviceInfo
. Если вы не хотите обрабатывать эти типы уведомлений, просто не переопределяйте методы, оставьте класс пустым или вызовите аналогичные методы суперкласса.
public class HandlerExample extends BotHandler {
@Override
public void processStateInstanceChanged(StateInstanceChanged stateInstanceChanged) {
super.processStateInstanceChanged(stateInstanceChanged);
}
@Override
public void processDeviceInfo(DeviceInfo deviceInfo) {
super.processDeviceInfo(deviceInfo);
}
}
startScene
- это стартовая сцена с которой начинается общение с ботом. Сцена - это объект класса, который наследуется от абстрактного класса Scene
. Внутри сцен происходит обработка вебхуков и выполняется ваша бизнес-логика. Ваш бот будет состоять из набора сцен, которые выполняются друг за другом в заданной вами последовательности. Для каждого состояния одновременно может быть активна только одна сцена. Примеры сцен будут продемонстрированы ниже.
Как настроить инстанс#
Чтобы начать получать входящие уведомления, нужно настроить инстанс. Открываем страницу личного кабинета по ссылке. Выбираем инстанс из списка и кликаем на него. Нажимаем Изменить. В категории Уведомления включаем все что необходимо получать.
Список примеров#
Описание | Ссылка на пример |
---|---|
Как инициализировать объект | BotStarterClassExample.java |
Сцена "Привет" | BaseStartScene.java |
Сцена "Эхо" | EchoStartScene.java |
Как получать другие типы уведомлений | EventStartScene.java |
Как фильтровать входящие сообщения | FiltersStartScene.java |
Как обрабатывать тело уведомлений | MediaStartScene.java |
Как работать с состоянием бота | state |
Пример готового чат бота | full |