Разработка кастомных сценариев Make
Кастомные сценарии Make выходят за рамки простых триггер → действие: включают трансформацию данных, условную логику, вызовы нескольких API, итерацию по массивам и обработку ошибок.
Работа с данными через функции Make
Make имеет встроенный функциональный язык для трансформаций:
# Строки
{{upper(1.name)}} → "ИВАН"
{{substring(1.email; 0; indexOf(1.email; "@"))}} → "ivan"
{{replace(1.phone; " "; "")}} → "+79001234567"
# Числа
{{round(1.price * 1.19; 2)}} → 1190.00 (с НДС 19%)
{{formatNumber(1.total; 2; "."; " ")}} → "1 234 567.89"
# Даты
{{formatDate(now; "DD.MM.YYYY HH:mm")}} → "28.03.2026 14:30"
{{addDays(1.created_at; 30)}} → дата + 30 дней
# Массивы
{{length(1.items)}} → 5
{{map(1.items; "product_id")}} → [1, 2, 3, 4, 5]
{{sum(map(1.items; "price"))}} → сумма цен
Сценарий: синхронизация заказов между системами
Задача: каждый час синхронизировать новые заказы из WooCommerce в 1С через REST API, с уведомлением о ошибках в Telegram.
[Schedule: каждый час]
│
[WooCommerce: Get Orders
status=processing
after={{addHours(now; -1)}}]
│
[Router]
├── [Фильтр: order_count > 0]
│ │
│ [Iterator: по каждому заказу]
│ │
│ [HTTP POST: 1С API
│ /api/orders/create]
│ │
│ [Router: по статусу ответа]
│ ├── [201: обновить WooCommerce
│ │ meta _synced_to_1c = true]
│ └── [Ошибка: Telegram
│ orderId + error message]
│
└── [Фильтр: order_count == 0]
│
[игнорировать]
Custom App (HTTP + OAuth2)
Для API без встроенного модуля Make — кастомный HTTP с авторизацией:
// OAuth2 конфигурация
{
"type": "oauth2",
"clientId": "{{connection.clientId}}",
"clientSecret": "{{connection.clientSecret}}",
"authorizeUrl": "https://api.example.com/oauth/authorize",
"accessTokenUrl": "https://api.example.com/oauth/token",
"scope": "read write",
"tokenPlacement": "header",
"tokenHeaderName": "Authorization",
"tokenHeaderPrefix": "Bearer "
}
Работа с JSON и XML
// Parse JSON в Data Store сценарии
// Входящий текст: '{"orders": [{"id": 1}, {"id": 2}]}'
// Используем parseJSON функцию Make
{{parseJSON(1.response_body).orders}}
// Для XML — модуль XML → JSON
// Затем работаем как с объектом
{{2.root.order[].id}}
Data Store (встроенное хранилище)
Make Data Store — простая key-value БД для хранения состояния между запусками:
// Хранить timestamp последней синхронизации
// При каждом запуске:
1. Читаем last_sync_at из Data Store
2. Делаем запрос с after=last_sync_at
3. Обрабатываем данные
4. Записываем current time в Data Store
Обработка rate limits
[HTTP Request]
│
[Router: статус 429]
│
[Sleep: 60 секунд] ←── (встроенный модуль ожидания)
│
[HTTP Request] ←── повторная попытка
Сроки
Кастомный сценарий средней сложности (10–15 модулей) — 2–4 дня. Сложный с Data Store, несколькими API и обработкой ошибок — 1 неделя.







