Руководтсво администратора/разработчика
Документация
Автоматизация бизнес-процессов
Триггеры
Возможности
Автоматизация реализуется таким инструментом как Buildbox Automator, который позволяет обрабатывать цепочки связанных задач.
Что автоматизируем?
Работа в системе в основном происходит через личные кабинеты операторов или при использовании доступного API.
Все действия с любого рода информацией можно оценить четырьмя словами:
- Создать
- Изменить
- Удалить
- Запросить (получить данные)
Вот именно на эти события с элементами шаблона и настраиваются события автоматизации, а именно выполнения последовательности дополнительных операций.
Например, при регистрации пользователя создается объект в шаблоне "Пользователи". На событие "Создание объекта" настроен триггер, который добавляет новый адрес рассылки во внешний сервис (например Unisender). Для этого создается триггер на событие Создание для шаблона, который отправляет (согласованный с внешним API Unisender) запрос по указанному адресу, таким образом добавляя email только что созданного пользователя в список рассылки.
Как работает триггер
Параметры триггера и как с ним работать
Триггеры создаются и привязываются как правило к событиям либо над шаблонами, либо над объектами одного из шаблонов. Однако любой триггер можно запустить используя прямой адрес с его названием
http://система/automator/название_триггера
Триггер может быть вызван как GET-запросом, так и POST-запросом, и в том и в другом случае входными данными триггера будут данные, параметры которых мы передадим в запросе.
Если триггер стартуется при событии "Создания объекта" шаблона, то входными данными является данные созданного объекта (json-документ сериализованого созданого объекта)
На данный момент триггеры являются post-обработчиками событий, т.е. срабатывают после произошедшего события (просмотра объекта, создания, удаления и т.д.)
Создание триггера
Триггер - это обычный объект шаблона "Триггеры". Создать триггер можно двумя способами:
- Перейти в шаблон "Триггеры" и создать объект шаблона, заполнив поля
- Перейти в шаблон, на события с элементами которого мы будем создавать триггер, и добавить в список назначенных триггеров новый триггер.
При создании объекта триггера необходимо заполнить следующие поля:
Базовые настройки
- Название - название триггера (обязательно)
- Идентификатор - ид-триггера, по которому в дальнейшем можно будет вызывать триггер из строки запроса (обязательно)
- Описание
Раздел "Действия"
Настраиваем те действия, которые будут происходить при активации работы триггера.
- Тип запроса - выбор POST/GET - какой тип запроса будет отправлен по указанному ниже адресу
- Адрес запроса - адрес может быть как на внешний api (например: http://сторонний_сервис/адрес_апи), так и на внутренний адрес автоматизации Buildbox Automator - /automator
- Тело запроса - документ формата json, согласно структуры внешнего апи, или формата jsonprc для Buildbox Automator (см.ниже)
Пример настройки внешнего запроса
В даном случае происводится отправка запроса на добавление в список рассылки стороннего сервиса Unisender, согласно описанной спецификации формата отправки данного сервиса.
Пример настройки внутреннего запроса (Buildbox Automator)
Для работы с внутренним API Buildbox Automator необходимо отправлять POST-запросы на адрес /automator, согласно спецификации JSONRPC 2.0, а именно поля:
- jsonrpc - версия протокола
- method - название метода, который будет вызван для обработки отправленных данных в переданном POST-запросе
- params - тело параметров, которые будут переданы в указанный выше метод. Формат и значение данных параметров зависит от реализации метода.
- id - идентификатор запроса. Как правило случайное число, которое в случае асинхронной работы шлюза поможет идентифицировать ответ. Для простоты реализации мы рекомендуем использовать случайно сгенерированную последовательность через @-функцию @Rand(int)
Раздел "Активация"
Отправка запроса в триггере
Триггер может отправлять запросы как на внутренние обработчики, так и на внешние ресурсы в различных форматах
Поскольку триггер производит пост-обработку данных, то входящими параметрами для триггера являются результаты предыдушего действия.
Например при создании объекта ответом сервера будет являться тело созданного объекта в JSON-формате. Триггер получает этот JSON-объект и может использовать полученные данные для дальнейшей обработки и использования в качестве исходящих значений через использование @-функций.
Существует три метода отправки данных как на внешние так и на внутренние обработчики запросов.
Существует 3 метода: GET, POST, OPTIONS
-
GET
- Отправить GET запрос, дополнив строку запроса необходимыми параметрами через @-фукнции как в строке запроса.
Например: http://адрес_сервера/?параметр1=значение1&параметр2=@UserUID - здесь значение "параметр2" - будет равно идентификатору пользователя, которое будет сформировано через использование @-функции (смотреть список @-функций)
- Отправить GET запрос, сформировав строку запроса через поле "Тело запроса" в формате JSON (ключ - параметр, значение - значение)
Например:
{
"format":"json",
"api_key":"6tjgm366hyrxutnsj97obcmcybq700000000",
"list_ids":"16766713",
"fields[email]":"@FieldValue(email)",
"fields[Name]":"@FieldValue(first_name)",
"double_optin":"3"
}
При срабатывании триггера этот JSON будет преобразован в строку запроса формата: &format=json&api_key=....., а также будет отправлен в текстовом формате в теле запроса. Тело запроса будет отправлено в том виде, в котором вы его сформировали.
Если в строке запроса уже используются параметры, т.е. имеется символ &, то JSON-тело преобразовано в строку запроса не будет, поскольку возможно пересечение передаваемых в строке и в теле запроса параметров. - POST
Отправка POST-запроса происходит после преобразования тела запроса из JSON-формата в формат, необходимый для получения данных POST-запроса в стандартном для сервера виде.
- OPTIONS
Данный метод подразумевает отправку тела запроса без преобразования в JSON-формате как он есть.
Вызов по-времени
Триггеры могут вызываться через заданные интервалы времени.
Для выполнения триггера через заданные интервалы времени необходимы включить эту возможность в настройках сервиса:
А также задать следующие параметры:
Разработчику на заметку:
Для обработки триггеров по-времени работают два демона.
Первый - раз в 2 минуты делает запрос на получения объектов триггеров, которые обрабатываются по-времени и формирует карту актуальных состояний. (в карте содержится время следующего срабатывания триггера и другое). Если вы создали/изменили триггер, что изменения будут достуны для демона-отправки триггеров только после обновления карты триггеров, т.е. в интервале от сразу до 2 минут.
Второй - постоянно сканирует карту на предмет наступления времени срабатывания триггера и делает запрос на вызов триггера (меняя состояние, чтобы исключить повторные вызовы)
Доступные операции:
- GET http://домен/проект/gui/triggers/map - просмотреть карту триггеров (статусы: stopped-завершен; completed - выполнена отправка; wait - ожидает отправвки; error - ошибка вызова)
- GET, POST http://домен/проект/gui/triggers/reload - перезагрузить карту триггеров.
- GET, POST http://домен/проект/gui/trigger/ид-триггера - вызвать триггер