Трансформації
Трансформація перетворює payload події на тіло, якого очікує конкретний отримувач. Збережена подія не змінюється; змінюється лише тіло доставки.
Шаблон
Section titled “Шаблон”Трансформація — це JSON-документ, рядкові значення якого можуть містити вирази JSONPath у плейсхолдерах ${…}. Плейсхолдери обчислюються відносно payload події; усе інше копіюється як є.
{ "id": "${$.orderId}", "customer": { "email": "${$.customer.email}", "plan": "${$.subscription.plan_name}" }, "amount_cents": "${$.amount}", "note": "Order ${$.orderId} from Railhook"}| Як записано | Результат |
|---|---|
Рядок, що є рівно одним виразом, "${$.amount}" |
Значення зі своїм типом: число лишається числом, об’єкт — об’єктом. |
Вираз усередині іншого тексту, "Order ${$.orderId} from Railhook" |
Рядок із підставленим значенням. |
| Шлях, що нічого не знаходить | null для виразу на все значення, порожній рядок усередині тексту. Не помилка. |
Шаблон — це не скрипт. Він може прочитати payload і переставити поля; він не може циклитися, звертатися назовні чи обчислювати.
До чого кріпиться трансформація
Section titled “До чого кріпиться трансформація”| До чого | Дія |
|---|---|
Підписка, transformationId |
Збережена трансформація для кожної доставки, яку створює підписка. |
Підписка, payloadTemplate |
Вбудований шаблон, використовується, коли transformationId не задано. |
Правило, дія TRANSFORM |
Перекриває трансформацію підписки для подій, що збіглися з правилом. Якщо трансформують кілька правил, діє останнє. Див. Правила. |
Призначення, transformationId |
Збережена трансформація для пересланих вхідних вебхуків. |
Призначення, payloadTransform |
Один вираз JSONPath, наприклад $.data, використовується, коли transformationId не задано. |
Воркфлоу, вузол transform |
Змінює дані всередині воркфлоу. Див. Воркфлоу. |
Коли вона виконується
Section titled “Коли вона виконується”Трансформація застосовується всередині кожної спроби, до обчислення підпису. Підпис покриває вже трансформовані байти, тож отримувач, перевіряючи підпис, перевіряє саме те, що отримав.
Збережену трансформацію шукають у момент спроби. Тому виправлення зламаного шаблону допомагає спробам, які ще попереду.
Створення та перевірка трансформації
Section titled “Створення та перевірка трансформації”-
Створіть її.
nameіtemplateобов’язкові; шаблон може мати до 65536 символів.Terminal window curl -X POST "$RAILHOOK_URL/api/v1/projects/$PROJECT_ID/transformations" \-H "X-API-Key: $API_KEY" \-H "Content-Type: application/json" \-d '{"name":"Orders to CRM","template":"{\"id\":\"${$.orderId}\",\"amount_cents\":\"${$.amount}\"}"}' -
Перегляньте результат на вставленому payload через
POST /api/v1/projects/{projectId}/transform-preview. НадішлітьinputPayloadі абоtransformationId, або вбудованийtemplate. Нічого не доставляється. -
Виконайте сухий прогін доставки через
POST /api/v1/projects/{projectId}/transform-preview/delivery-dry-run. Надішлітьpayload, трансформацію абоpayloadTemplateіendpointId. Відповідь показує трансформоване тіло, заголовки й підпис, які було б надіслано, а також назву й версію трансформації. Нічого не надсилається. -
Підключіть її, задавши
transformationIdу підписці.
У панелі «Студія трансформацій» показує payload і результат поруч та оновлює результат під час набору.
Зміна шаблону трансформації збільшує її версію.