Студія трансформацій
«Студія трансформацій» показує, на що трансформація перетворює вміст і що отримав би ендпоінт. Запуск нічого не надсилає, тож він безпечний і на робочій трансформації.
У панелі керування це Розробка → Студія трансформацій. В API це POST /api/v1/projects/{projectId}/transform-preview і POST /api/v1/projects/{projectId}/transform-preview/delivery-dry-run; див. довідник API.
Два режими
Section titled “Два режими”| Режим | На що відповідає | Що потрібно |
|---|---|---|
| Попередній перегляд | Що трансформація робить із цим вмістом. | Вміст події та збережена трансформація, шаблон або скрипт. |
| Пробний запуск | Який HTTP-запит пішов би на вказаний ендпоінт: тіло, заголовки й підпис. | Те саме плюс ендпоінт. |
Попередньому перегляду достатньо доступу на читання. Пробний запуск повертає справжній підпис, обчислений секретом підпису ендпоінта, а з ним можна підробити тіло, яке ендпоінт прийме. Тому він вимагає доступу на запис і API-ключа READ_WRITE. Див. Автентифікацію.
Попередній перегляд шаблона
Section titled “Попередній перегляд шаблона”-
Задайте вміст. Вставте його або натисніть «Завантажити подію» і візьміть справжню подію з проєкту. Справжній вміст знаходить помилки, яких не покаже вигаданий приклад.
-
Виберіть, що запускати. Візьміть збережену трансформацію або впишіть у поле виразу:
- Поле, що починається з
{або[, вважається JSON-шаблоном, тим самим шаблоном із${$.path}, який має трансформація. Див. Трансформації. - Будь-що інше вважається одним витягом, наприклад
$.data, у формі, яку приймаєpayloadTransformпризначення. - Порожнє поле означає прохід без змін: вміст повертається відформатованим і незміненим.
- Поле, що починається з
-
Запустіть. Панель результату показує, що вийшло, чи це відрізняється від вхідного вмісту, і всі помилки. Витяг, що нічого не знайшов, повертає
nullі повідомляє про це: у шаблоні це не помилка, тож помітити це можна саме тут.
Як запустити трансформацію на JavaScript
Section titled “Як запустити трансформацію на JavaScript”Перемикач «Мова» вибирає «Шаблон» або JavaScript. У режимі JavaScript поле стає редактором коду, а студія виконує рушій воркера з тією самою пісочницею й обмеженнями TRANSFORM_SCRIPT_*, тож скрипт, який працює тут, працює й на доставці. Що отримує й має повернути handler(webhook), описано в контракті JavaScript.
- ⌘/Ctrl+Enter запускає, ⌘/Ctrl+S зберігає.
- Чотири вкладки: «Вхід», «Вихід», «Різниця» і «Консоль». Успішний запуск відкриває «Вихід», невдалий відкриває «Консоль».
console.log,info,warn,errorіdebugпотрапляють на вкладку «Консоль», зокрема й те, що скрипт записав перед помилкою.- У разі невдачі студія називає причину й підсвічує рядок у вашому скрипті.
- Скрипт, який повернув
{ cancel: true }, показано як скасування, а не помилку. На справжній доставці нічого не було б надіслано, повторено чи додано до «Недоставлених повідомлень».
Пробний запуск доставки
Section titled “Пробний запуск доставки”Перемкніть режим на «Пробний запуск» і виберіть цільовий ендпоінт. Результат — запит, який він отримав би:
- трансформоване тіло,
- заголовки, зокрема ваші власні,
X-Signatureнад цим тілом, обчислений поточним секретом підпису ендпоінта,- адреса ендпоінта, а також назва й версія застосованої трансформації.
Нічого не надсилається. Вимкнений ендпоінт теж можна запустити пробно, з попередженням.
Як зберегти результат
Section titled “Як зберегти результат”Запуск нічого не змінює; збереження є окремою дією.
- «Зберегти скрипт» записує вміст редактора у вибрану трансформацію. Це публікує нову версію, як і збереження через API; див. історію версій.
- «Зберегти як трансформацію» створює в цьому проєкті нову трансформацію під назвою, яку ви дасте. Після цього її можуть використовувати підписки й призначення.
- Якщо трансформацію не вибрано, написане лишається чернеткою і зникає разом зі сторінкою.
Чого вона не вміє
Section titled “Чого вона не вміє”- Вона не вибирає трансформацію, яку взяла б справжня доставка. Вона застосовує ту, яку ви назвали. Налаштування підписки й правила не враховуються, тож правило, що підміняє трансформацію, тут не видно.
- Пробний запуск не відтворює запит байт у байт. Справжня доставка несе ще
X-Event-Id,X-Delivery-Id,X-Sequence-NumberтаIdempotency-Key, які з’являються лише разом із доставкою. Перевіряйте ним тіло й секрет підпису. - Підпис завжди у формі
t=…,v1=…. Ендпоінт зі схемою Standard Webhooks підписується заголовкамиwebhook-id,webhook-timestampіwebhook-signature, яких пробний запуск не формує. Див. Підписи. - Нічого не надсилається, тож нічого не підтверджено. Пробний запуск не скаже, чи ендпоінт прийме тіло. Для справжнього запиту скористайтеся тестовою консоллю або надішліть тестову подію.
- Ендпоінт має бути в цьому ж проєкті. Ендпоінт із сусіднього проєкту повертається як «не знайдено», як і ендпоінт чужої організації, тож пробним запуском не з’ясувати, які ідентифікатори існують.