Руководтсво администратора/разработчика

Документация

Автоматизация бизнес-процессов

Триггеры


Возможности

Автоматизация реализуется таким инструментом как Buildbox Automator, который позволяет обрабатывать цепочки связанных задач.

Что автоматизируем?

Работа в системе в основном происходит через личные кабинеты операторов или при использовании доступного API.

Все действия с любого рода информацией можно оценить четырьмя словами:

  • Создать
  • Изменить
  • Удалить
  • Запросить (получить данные)

Вот именно на эти события с элементами шаблона и настраиваются события автоматизации, а именно выполнения последовательности дополнительных операций.

Например, при регистрации пользователя создается объект в шаблоне "Пользователи". На событие "Создание объекта" настроен триггер, который добавляет новый адрес рассылки во внешний сервис (например Unisender). Для этого создается триггер на событие Создание для шаблона, который отправляет (согласованный с внешним API Unisender) запрос по указанному адресу, таким образом добавляя email только что созданного пользователя в список рассылки.


Как работает триггер

Параметры триггера и как с ним работать

Триггеры создаются и привязываются как правило к событиям либо над шаблонами, либо над объектами одного из шаблонов. Однако любой триггер можно запустить используя прямой адрес с его названием

http://система/automator/название_триггера

Триггер может быть вызван как GET-запросом, так и POST-запросом, и в том и в другом случае входными данными триггера будут данные, параметры которых мы передадим в запросе.

Если триггер стартуется при событии "Создания объекта" шаблона, то входными данными является данные созданного объекта (json-документ сериализованого созданого объекта)

На данный момент триггеры являются post-обработчиками событий, т.е. срабатывают после произошедшего события (просмотра объекта, создания, удаления и т.д.)


Создание триггера

Триггер - это обычный объект шаблона "Триггеры". Создать триггер можно двумя способами:

  1. Перейти в шаблон "Триггеры" и создать объект шаблона, заполнив поля



     
  2. Перейти в шаблон, на события с элементами которого мы будем создавать триггер, и добавить в список назначенных триггеров новый триггер.

 

При создании объекта триггера необходимо заполнить следующие поля:
 

Базовые настройки

  • Название - название триггера (обязательно)
  • Идентификатор - ид-триггера, по которому в дальнейшем можно будет вызывать триггер из строки запроса (обязательно)
  • Описание



Раздел "Действия"

Настраиваем те действия, которые будут происходить при активации работы триггера.
 

  • Тип запроса - выбор 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

  1. 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-тело преобразовано в строку запроса не будет, поскольку возможно пересечение передаваемых в строке и в теле запроса параметров.

  2. POST

    Отправка POST-запроса происходит после преобразования тела запроса из JSON-формата в формат, необходимый для получения данных POST-запроса в стандартном для сервера виде.
     
  3. OPTIONS

    Данный метод подразумевает отправку тела запроса без преобразования в JSON-формате как он есть.


Вызов по-времени

Триггеры могут вызываться через заданные интервалы времени.

Для выполнения триггера через заданные интервалы времени необходимы включить эту возможность в настройках сервиса:

А также задать следующие параметры:

 

Разработчику на заметку:

Для обработки триггеров по-времени работают два демона.

Первый - раз в 2 минуты делает запрос на получения объектов триггеров, которые обрабатываются по-времени и формирует карту актуальных состояний. (в карте содержится время следующего срабатывания триггера и другое). Если вы создали/изменили триггер, что изменения будут достуны для демона-отправки триггеров только после обновления карты триггеров, т.е. в интервале от сразу до 2 минут.

Второй - постоянно сканирует карту на предмет наступления времени срабатывания триггера и делает запрос на вызов триггера (меняя состояние, чтобы исключить повторные вызовы)

Доступные операции:

  • GET  http://домен/проект/gui/triggers/map - просмотреть карту триггеров (статусы: stopped-завершен; completed - выполнена отправка; wait - ожидает отправвки; error - ошибка вызова)
  • GET, POST  http://домен/проект/gui/triggers/reload - перезагрузить карту триггеров.
  • GET, POST  http://домен/проект/gui/trigger/ид-триггера - вызвать триггер