Сценарии в Make: роутеры, итераторы и фильтры
Практика3 минРедакция Innovialabs
Коротко
Сценарий в Make — цепочка модулей, по которой идут пакеты данных (bundles): роутер делит поток на ветки, фильтры решают, какой пакет пройдёт дальше, итератор разбивает массив на отдельные пакеты, а агрегатор собирает их обратно.
Как работает сценарий Make
Сценарий (scenario) в Make — это визуальная цепочка модулей. Каждый модуль — одно действие в каком-то сервисе: получить письма, создать строку, отправить сообщение.
Данные между модулями идут пакетами (bundles). Если триггер нашёл пять новых заказов, он выдаёт пять пакетов, и каждый следующий модуль выполнится пять раз — по разу на пакет.
Ключевое понятие для тарифа — операция: одно выполнение одного модуля. Пять пакетов через три модуля — это примерно пятнадцать операций. В актуальных тарифах Make расход может выражаться в кредитах, но логика та же: чем больше пакетов и модулей, тем больше расход.
Фильтры: пропускать только нужное
Фильтр ставится на связь между модулями. Пакет проходит дальше, только если выполнено условие: сумма заказа больше нуля, поле email не пустое, статус равен «оплачен».
- Фильтры можно комбинировать через AND и OR.
- Ставьте фильтр как можно ближе к началу, чтобы не тратить операции на лишние пакеты.
Роутер: несколько веток
Router делит поток на несколько маршрутов. Каждый пакет проверяется фильтром каждой ветки.
Пример — обработка заявок:
- Ветка 1: источник «сайт» → создать сделку в CRM.
- Ветка 2: источник «Telegram» → отправить в чат отдела продаж.
- Ветка 3 (fallback route): всё остальное → записать в таблицу для ручного разбора.
Важно: если пакет подходит под несколько веток, он пойдёт во все подходящие. Чтобы ветки не пересекались, делайте условия взаимоисключающими, а для «всего остального» используйте fallback.
Итератор и агрегатор: работа с массивами
Часто модуль возвращает массив: товары в заказе, вложения письма, строки ответа API.
- Iterator разбивает массив на отдельные пакеты. Заказ с тремя товарами превращается в три пакета, и следующий модуль выполнится для каждого товара.
- Aggregator собирает пакеты обратно в один. Варианты:
- Array aggregator — в массив (например, чтобы передать список в один запрос);
- Text aggregator — в одну строку текста (например, список товаров для сообщения);
- Numeric aggregator — в число: сумма, среднее, количество.
У агрегатора есть настройка Source module — с какого модуля начинать сборку. Обычно это итератор или триггер, который выдал пакеты. Если указать не тот модуль, получите не один итоговый пакет, а несколько.
Типичная схема: триггер → итератор → обработка каждого элемента → агрегатор → одно итоговое действие.
Обработка ошибок
По умолчанию ошибка в модуле останавливает сценарий, а при повторяющихся ошибках Make может его отключить. Чтобы управлять этим, к модулю добавляют error handler:
| Обработчик | Что делает |
|---|---|
| Ignore | Пропускает ошибку, сценарий продолжает работу |
| Resume | Подставляет запасное значение и продолжает |
| Break | Сохраняет незавершённое выполнение для повторной попытки |
| Commit | Останавливает выполнение, сохраняя уже сделанное |
| Rollback | Останавливает и пытается откатить изменения, где это поддерживается |
Для внешних API, которые иногда отвечают ошибкой, удобен Break с автоматическими повторами. Ignore используйте осторожно: ошибки просто исчезнут из поля зрения.
Расписание
Сценарий запускается одним из способов:
- По расписанию: через интервал, раз в день, в определённые дни недели или месяца.
- Мгновенно: через вебхук или instant-триггер — сценарий срабатывает, когда сервис сам присылает данные.
- Вручную — для разовых задач и тестов.
Помните: проверка по расписанию тоже расходует операции, даже если новых данных нет. Слишком частый интервал для редких событий — частая причина перерасхода.