Перейти к содержанию

Как импортировать библиотеку и сконфигурировать своего бота#

Установка#

Вы можете импортировать библиотеку из центрального репозитория, Примеры для 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