Skip to Content
Automatyzacje

Zmienne i szablony

Używaj danych ze zdarzenia i z wcześniejszych kroków w tytułach, wiadomościach i żądaniach

Ostatnio zaktualizowano

Za pomocą zmiennych tworzysz teksty, które w każdym przypadku wyglądają inaczej. Zmienną piszesz w nawiasach klamrowych, a Tillor wstawia prawdziwą wartość, gdy tylko automatyzacja działa.

Przykład tytułu zadania:

Controleer {occupation.terrain.name}

Jeśli zajęcie kończy się na terenie 12, zadanie nazywa się Controleer 12.

Wstawianie zmiennej

Nad każdym polem tekstowym, w którym działają zmienne, jest przycisk Zmienna. Kliknij go, a zobaczysz listę wszystkich dostępnych danych, pogrupowanych według rekordu. Wpisz, aby wyszukać (Szukaj zmiennych), i kliknij wiersz. Tillor wstawia zmienną w miejscu kursora.

Przycisk Zmienna przy polu Tytuł z otwartą listą dostępnych zmiennych

Zmienną możesz też po prostu wpisać samodzielnie. Pod polem szary blok pokazuje, jak tekst wygląda z przykładowymi danymi, więc od razu widzisz, czy się zgadza.

Zmienne działają w polach tekstowych, takich jak tytuły, opisy, podzadania, wiadomości, ID klienta, faktury lub innego rekordu, ścieżka lub URL żądania API, treść, ładunek webhooka, nazwa zdarzenia webhooka i wartości nagłówków. Przy dwóch ostatnich brakuje przycisku Zmienna, ale zmienna wpisana samodzielnie jest uzupełniana. Tillor nie sprawdza tych dwóch pól pod kątem błędów i nie pokazuje przy nich podglądu.

W polach, w których wybierasz dane do porównania, zmienną piszesz bez nawiasów klamrowych. Dotyczy to Tylko gdy, Jeśli / w przeciwnym razie i Aż przy Czekaj, aż (na przykład invoice.status), pola Pole w Rozgałęzienie oraz Data w Opóźnienie.

Jakie są zmienne

ZmiennaDostępnaZawartość
{occupation.…}, {invoice.…}, {task.…}, {reservation.…} i innePo zdarzeniuPola rekordu, którego dotyczy zdarzenie. Nazwa rekordu jest też początkiem zmiennej
{occupation.terrain.name}Po zdarzeniuPola rekordów, do których odwołuje się rekord, takich jak klient lub teren. Działa to na jeden poziom w głąb
{triggeredBy.name}, {triggeredBy.id}ZawszeKolega, który wywołał zdarzenie. Puste, jeśli zrobił to system
{invoice.…}Przy Faktura przeterminowanaPola przeterminowanej faktury i klienta
{reservation.…}, {task.…} i innePrzy Nadeszła dataPola rekordu, którego data nadeszła, oraz rekordów, do których się odwołuje
{now}, {today}ZawszeMoment, w którym krok działa, i północ tego dnia w strefie czasowej organizacji. Razem z przesunięciem (poniżej) {today + 1 day} daje jutro
{threadId}, {messageId}Przy zdarzeniach dotyczących wiadomości w skrzynce, takich jak inbox:message-createdID rozmowy i wiadomości
Pola zdarzeniaPo Czekaj na zdarzenie, przez OdebranoDane zdarzenia, na które czekano. Zastępują dane tych samych rekordów z początku przepływu
{createdTask.id}, {createdTask.name}Po Utwórz zadanieZadanie, które właśnie zostało utworzone
{foundTask.id}, {foundTask.name}, {foundTask.priority}, {foundTask.status}Po Znajdź zadanie, przez ZnalezionoZadanie, które znalazł krok
{updatedTask.id}, {updatedTask.status}Po Ustaw statusZadanie, którego status został zmieniony
{updatedTask.id}, {updatedTask.priority}Po Ustaw priorytet zadaniaZadanie, którego priorytet został zmieniony
{updatedTask.id}Po Zaktualizuj zadanieZadanie, które zostało zmienione
{foundDocument.id}, {foundDocument.name}, {foundDocument.status}, {foundDocument.userMetadata.documentType}, {foundDocument.userMetadata.insuranceExpiryDate}Po Znajdź dokument, przez ZnalezionoDokument, który znalazł krok
{updatedDocument.id}Po Zaktualizuj dokumentDokument, który został zmieniony
{response.status}, {response.body}, {response.data.…}Po Żądanie APIOdpowiedź na żądanie
{foundCustomer.…}, {foundInvoice.…}, {foundReservation.…} i innePo Wyszukaj rekord, przez ZnalezionoPola rekordu, który znalazł krok, oraz rekordów, do których się odwołuje. Nazwa to found plus typ rekordu: foundCustomer, foundReservation, foundOccupation, foundInvoice, foundPayment, foundTerrain, foundTask, foundDocument, foundAccessMethod, foundNfcTag, foundMeter, foundInboxThread lub foundInboxMessage
{body.…}, {query.…}, {receivedAt}Po Webhook przychodzącyTreść JSON, parametry zapytania i moment odebrania wywołania webhooka
Każda nazwa celu z Mapuj zmiennePo Mapuj zmienneTo, co wpiszesz w tym kroku jako cel, na przykład {invoice.displayId} po invoice ← {foundInvoice}
{item.…}W krokach za Dla każdegoPola elementu, dla którego krok właśnie działa, takie jak {item.id}
{approvalTask.id}, {approval.decision}, {approval.label}, {approval.note}, {approval.decidedBy.name}Po Poproś o decyzję, przez opcjęZadanie, wybrana opcja, nazwa tej opcji, notatka i kolega, który wybrał
{task.…}, {action.label}, {note}Przy Wybrano akcję zadaniaZadanie, wybrany przycisk i wpisana do niego notatka
{createdComment.id}Po Dodaj komentarzKomentarz, który właśnie został dodany
{bookedInvoice.displayId}Po Zaksięguj fakturę, przez GotoweNumer zaksięgowanej faktury
{paymentLink.url}Po Utwórz link do płatności, przez GotoweLink, którym klient może zapłacić online
{consumptionInvoice.id}Po Zafakturuj zużycieFaktura za zużycie licznika
{extendInvoice.id}Po Robocza faktura przedłużeniaRobocza faktura, która przedłuża zajęcie
{createdAccessMethod.id}, {createdAccessMethod.value}Po Utwórz metodę dostępuNowy środek dostępu i jego wartość, taka jak kod QR lub PIN
{error.message}, {error.step}Po akcji z Kontynuuj, gdy ten krok się nie powiedzie, przez BłądKomunikat o błędzie i nazwa kroku, który się nie powiódł

Jakie dokładnie pola ma rekord, widzisz na liście za przyciskiem Zmienna. Przy wyzwalaczu jest też przegląd Dane, które dostarcza to zdarzenie.

Tylko to, co jest wcześniej w przepływie

Krok może używać tylko zmiennych z wyzwalacza, który do niego dociera, i z kroków znajdujących się wcześniej na tej samej drodze. Jeśli do tego samego kroku docierają różne wyzwalacze, dostępne są tylko zmienne, które dostarcza każdy z nich. Pole z wcześniejszego kroku się liczy, jeśli każdy z tych wyzwalaczy też przechodzi przez ten krok. Jeśli użyjesz zmiennej, która w tym miejscu nie istnieje, Tillor zgłasza [Pole]: zmienna [zmienna] nie jest dostępna w tym kroku. Przepływu z takim komunikatem nie można włączyć.

Niektóre rekordy przechowują dodatkowe dane w jednym polu, jak dane dokumentu w userMetadata. Każdy klucz pod nim jest zmienną: {document.userMetadata.documentType}, {document.userMetadata.insuranceExpiryDate} albo inny klucz. Znane klucze, takie jak typ i termin ważności dokumentu, są też na liście i możesz je porównywać jako datę. Data bez godziny, taka jak 2026-10-07, pojawia się w wiadomości jako 07-10-2026.

Zmienne z Dla każdego ({item.…}) istnieją tylko w krokach za wyjściem Dla każdego, nie za Gotowe. Zmienne z wyjścia, którym nie poszedłeś, też nie istnieją: {paymentLink.url} jest tylko wtedy, gdy krok przeszedł przez Gotowe, a {foundTask.id} tylko po Znaleziono.

Przy zdarzeniach, których dane nie są opisane, Tillor nie może sprawdzić, jakie zmienne istnieją. Wtedy nie dostajesz tego komunikatu. Takie przepływy sprawdź więc szczególnie dokładnie uruchomieniem testowym.

Nowa wartość zastępuje starą

Drugie Żądanie API w tym samym przepływie zastępuje response pierwszego. To samo dotyczy createdTask po drugim Utwórz zadanie, foundTask po drugim Znajdź zadanie lub Wyszukaj rekord dla Zadanie oraz error po drugim nieudanym kroku. Dane z odpowiedzi używaj więc w kroku, który następuje zaraz po niej.

Jak wartości są uzupełniane

Tillor dostosowuje notację do rodzaju pola.

W zwykłym tekście (tytuły, opisy, podzadania):

  • Daty są w strefie czasowej Twojej organizacji, na przykład 05-10-2026. Jeśli moment nie wypada dokładnie o północy, obok jest też godzina, na przykład 05-10-2026 14:30
  • Puste pole daje pusty tekst
  • Zmienna, której Tillor nie zna, pozostaje tak, jak ją napisałeś, na przykład {occupation.terain.name}. Literówka od razu rzuca się w oczy w zadaniu lub wiadomości
  • Jeśli powiązanego rekordu nie ma, zmienna pozostaje pusta. Zajęcie bez rezerwacji daje więc nic dla {occupation.reservation.displayId}, a zdarzenie wywołane przez system daje nic dla {triggeredBy.name}. Jeśli w takim przypadku chcesz innego tekstu, postaw przed tym Jeśli / w przeciwnym razie z jest puste

W JSON (Ładunek webhooka i Treść żądania API):

  • Tekst jest wstawiany bezpiecznie. Cudzysłowy, nowe wiersze i inne znaki specjalne w wartości nie mogą zepsuć JSON
  • Liczby i wartości tak/nie trafiają bez cudzysłowów, więc nie dodawaj ich wokół. Tekst natomiast ujmujesz w cudzysłowy
  • Daty idą jako międzynarodowa data i godzina, taka jak 2026-10-05T08:00:00.000Z, aby system odbierający dobrze sobie z nią radził
{
  "reservation": "{reservation.displayId}",
  "adults": {reservation.numberOfAdults}
}

Jeśli po uzupełnieniu JSON nie jest prawidłowy, na przykład dlatego, że liczba jest pusta, wykonanie zatrzymuje się z komunikatem o błędzie.

W ścieżce lub URL (przy żądaniu API):

  • Wartości są przekształcane tak, aby mieściły się w adresie. Nazwa ze spacją nie daje więc zepsutego adresu
  • Daty też tutaj idą jako międzynarodowa data i godzina
  • To, co wpiszesz sam, pozostaje takie, jak wpiszesz. Jeśli chcesz spację w wyszukiwanym haśle, wpisz sam %20

Przesuwanie daty

Za zmienną daty może stać przesunięcie: {reservation.checkOut + 1 day}, {today - 2 weeks}, {invoice.dueDate + 3 hours|date}. Jednostki to minutes, hours, days, weeks i months (liczba pojedyncza też jest dozwolona). Dni i tygodnie mają stałą długość, więc ważność trwa tyle samo mimo zmiany czasu letniego i zimowego; miesiące idą za kalendarzem, więc 31 stycznia plus miesiąc to 28 lub 29 lutego. Na wartości, która nie jest datą, przesunięcie nic nie robi, a nieistniejąca jednostka to błąd kroku. Pola dat, takie jak Ważne do, akceptują ten sam zapis.

Formatowanie wartości

Po zmiennej postaw | i format, na przykład {invoice.amountOutstanding|currency}. Bez formatu kwota wygląda surowo, jak 1295.3. Z |currency staje się € 1.295,30.

FormatPrzykładWynik
currency{invoice.amountOutstanding|currency}€ 1.295,30
currency:USD{invoice.amountOutstanding|currency:USD}US$ 1.295,30
number{invoice.amountOutstanding|number}1.295,3
number:2{invoice.amountOutstanding|number:2}1.295,30 (stała liczba miejsc po przecinku)
date{invoice.dueDate|date}30-06-2026
datetime{invoice.createdAt|datetime}01-06-2026 16:04
time{invoice.createdAt|time}16:04
upper / lower{customer.lastName|upper}VAN DEN BROECKE
  • Liczby i kwoty są zawsze w notacji belgijskiej: kropka dla tysięcy i przecinek dla ułamków
  • Daty i godziny są w strefie czasowej Twojej organizacji
  • Jeśli format nie może odczytać wartości, na przykład |currency na tekście, wartość po prostu pozostaje bez formatu
  • Format, którego Tillor nie zna, pozostaje tak, jak go napisałeś, a edytor pokazuje o tym komunikat
  • W JSON i w URL sformatowana wartość jest wstawiana jako tekst. W JSON ujmij ją więc w cudzysłowy

Używanie odpowiedzi API

Po Żądanie API możesz używać pól z odpowiedzi za pomocą {response.data.…}. Odpowiedź na wyszukiwanie zadań wygląda na przykład tak:

{
  "items": [
    { "id": "task_1", "priority": "LOW" }
  ]
}

Wtedy {response.data.items.0.id} daje ID pierwszego zadania (pierwszy na liście ma numer 0), a {response.data.items.0.priority} jego priorytet.

Tillor może zaoferować pola odpowiedzi jako zmienne dopiero wtedy, gdy wie, jak odpowiedź wygląda. Możliwe są dwa sposoby:

  • Pozwól automatyzacji raz naprawdę zadziałać. Tillor używa wtedy odpowiedzi z ostatniego wykonania
  • Wklej przykład na karcie Uruchomienie testowe, w polu Przykładowa odpowiedź API. To pole pojawia się, gdy tylko przepływ zawiera Żądanie API. Pod nim są Pola w tej odpowiedzi. Kliknij pole, aby je skopiować, razem z nawiasami klamrowymi

Potem pola są na liście za przyciskiem Zmienna i na liście przy Pole w Rozgałęzienie.

Jeśli sam wpiszesz ścieżkę pod response.data, jest ona zawsze akceptowana, także bez przykładu. Poza tym:

  • {response.body} zawiera pierwsze 4000 znaków odpowiedzi. Jeśli odpowiedź jest dłuższa, reszta jest obcinana
  • {response.data} jest puste, jeśli odpowiedź nie jest JSON albo jest bardzo duża (ponad 100 000 znaków)
  • Przy wyszukiwaniu bez wyniku {response.data.items.0.id} nie istnieje. Rozgałęzienie na takim polu idzie wtedy przez Domyślne

Przykład w teście

Na karcie Uruchomienie testowe wpisujesz też przykładowe dane zdarzenia. Dzięki temu w uruchomieniu testowym widzisz, jakie wartości wstawiłby Tillor. Zobacz Testowanie i uruchomienia.

Co dzieje się potem?

  • Gdy tylko automatyzacja działa, Tillor zastępuje każdą zmienną prawdziwą wartością. Zmienna, której Tillor nie zna, pozostaje tak, jak ją napisałeś.
  • Jeśli jakaś dana jest pusta, miejsce pozostaje puste. Jeśli wtedy chcesz innego tekstu, postaw przed tym Jeśli / w przeciwnym razie z jest puste.

Problemy?

Czy ta strona była pomocna?

Na tej stronie