This post is also available in:
Poniżej znajdziesz listę wszystkich dostępnych podstawowych funkcji, a także helperów, które można wykorzystać podczas konstruowania treści żądania w definicji węzła Webhook w kampaniach Flow. Handlebars.js jest używany jako język szablonów.
Aby przetestować poprawność składni, możesz bezpośrednio użyć interfejsu testowego w definicji elementu Webhook w Sambie lub wersji demonstracyjnej z Handlebars.js.
Podstawowa funkcjonalność
if
Służy do tworzenia warunków. Jeśli argument zwraca wartość false
, undefined
, null
, ""
, 0
, lub []
, blok nie jest tworzony
Przykład
{{# if true}}
hello
{{/ if}}
{{# if false}}
bye
{{/ if}}
podstawia się jako
hello
unless
Jest używany jako przeciwieństwo funkcji if – blok jest tworzony tylko wtedy, gdy warunek nie jest spełniony.
Przykład 1
{{# unless true}}
hello
{{/ unless}}
{{# unless false}}
bye
{{/ unless}}
przedstawia się jako
bye
Przykład 2
{{# each customers}}
{{# unless @first }}
{{/ unless}}
{
...
}
{{/ each}}
wstawia znak nowej linii przed kodem JSON dla każdego klienta z wyjątkiem pierwszego.
Przykład 3
{{# each customers}}
{
...
}
{{# unless @last }},{{/ unless}}
{{/ each}}
wstawia przecinek po JSON z każdym klientem oprócz ostatniego.
each
Służy do iteracji po liście.
Przykład 1
{{# each customers}}
...
{{/ each}}
iteruje po liście klientów, którzy weszli do węzła Webhook. Jest to podstawowa konstrukcja służąca do tworzenia żądania w węźle elementu webhook.
Przykład 2
"parameters": [ {{~# each parameters }} { "name": {{ json-string @key }}, "value": {{ json-string . }} }{{# unless @last }},{{/ unless }}{{/ each }} ]
zapisuje wszystkie parametry niestandardowe do tablicy obiektów.
with
Tego pomocnika można użyć do oceny części bloku tylko wtedy, gdy zmienna istnieje i jednocześnie zmienić kontekst oceny. Aby obsłużyć przypadek, w którym zmienna nie istnieje, można użyć sekcji {{else}}
.
Przykład 1
...
"lastname": "{{ lastName }}"{{# with email }},
"email": "{{ . }}"{{/ with }},
"registration": {{ registeredOn }},
...
Tutaj adres e-mail jest wstawiany do JSON tylko wtedy, gdy jest określony przez klienta.
Przykład 2
...
"lastname": "{{ lastName }}",{{# with email }}
"email": "{{ . }}" {{else}}
"email": "unknown" {{/ with }},
"registration": {{ registeredOn }},
...
W takim przypadku wartość „nieznany” jest zawsze wstawiana, jeśli adres e-mail nie istnieje.
Przykład 3
...
"lastname": "{{ lastName }}",{{# with parameters.bonus_points }}
"points": "{{ . }}" {{else}}
"points": "0" {{/ with }},
"registration": {{ registeredOn }},
...
W takim przypadku, jeśli parametr niestandardowy bonus_points nie istnieje, zawsze wstawiana jest wartość co najmniej 0.
lookup
Tej funkcji można użyć do zanurzenia się w ścieżce wybranego parametru. Jest to szczególnie przydatne w przypadku parametrów, których nazwy wymagają zmiany znaczenia, a zatem nie można użyć standardowej notacji kropkowej.
Przykład
...
"bonus_points": "{{ lookup parameters "Bonus body" }}",
...
W ten sposób funkcja może służyć do wstawiania niestandardowego parametru klienta o nazwie Punkty bonusowe do treści wywołania interfejsu API.
W ten sposób funkcja może służyć do wstawiania niestandardowego parametru klienta o nazwie Bonus body do treści wywołania API.
and, or
Podstawowe operatory logiczne.
Przykład
{{ and (is-null a) (is-null b) (is-null c) }}
not
Służy do negowania wartości logicznej.
Przykład
{{ not (is-null a) }}
eq, neq, gt, gte, lt, lte
Służy do porównywania wartości.
Przykład
{{ eq (is-null a) (is-null b) }}
dot notation
Służy do zanurzenia się w wybranej ścieżce atrybutu, którego nazwa nie powoduje konfliktu z obsługiwanym formatem i nie wymaga zmiany znaczenia. W przypadku niekonwencjonalnych nazw parametrów należy użyć funkcji lookup.
Przykład
Znalezienie parametru Bonus_body w obiekcie parametrów.
...
"bonus_points": "{{ parameters.Bonus_body }}",
...
tilde ~
Użycie tyldy wewnątrz handlebar usuwa wszystkie białe znaki przed lub po handlebarze.
Przykład 1
{{~ let "today" "2023-01-05" }}
usuwa wszystkie białe znaki przed tym handlebarem.
Przykład 2
{{~ let "today" "2023-01-05" ~}}
usuwa wszystkie białe znaki przed i za tym handlebarem.
Funkcje pomocnicze
let
Tej funkcji można używać do definiowania zmiennych niestandardowych.
Przykład
{{ let "today" "2023-01-05" }}
W ten sposób możesz zdefiniować zmienną „today” na początku treści żądania, której można następnie użyć jako handlebara:
"today_is": "{{today}}"
is-null
Funkcja zwraca wartość true lub false, zwykle używaną podczas tworzenia warunków.
Przykład
...
"childrenNumber": {{#if (is-null childrenNumber)}}"no children"{{/if}}
...
W ten sposób dla wszystkich klientów z wartością null w polu „childrenNumber” można uwzględnić wybrany tekst zastępczy w wywołaniu API.
is-defined
Funkcja zwraca wartość true lub false, zazwyczaj używana podczas tworzenia warunków. W przeciwieństwie do funkcji is-null
, sprawdza ona, czy definicja parametru istnieje, a nie tylko, czy wartość jest null.
Przykład
...
"childrenNumber": {{#if (is-defined childrenNumber)}}"no children"{{/if}}
...
W ten sposób dla wszystkich klientów, którzy nie mają zdefiniowanego pola „childrenNumber”, wybrany tekst zastępczy może zostać podany w wywołaniu API.
is-undefined
Funkcja zwraca wartość true lub false, zwykle używana podczas tworzenia warunków. Jej wyjście jest zaprzeczeniem wyjścia funkcji is-defined
.
Przykład
Rozważmy następujący obiekt JSON
{"a":0,"b":null}
Poniższa tabela wyjaśnia różnice między funkcjami is-null
, is-defined
i is-undefined
.
Funkcja | Argument „a” | Argument „b” | Argument „c” |
is-null | false | true | niezdefiniowany |
is-defined | true | true | false |
is-undefined | false | false | true |
to-upper
Zmień wszystkie litery na wielkie.
Przykład
{{to-upper "hello"}}
zwraca
"HELLO"
to-lower
Zmienia wszystkie litery na małe.
Przykład
{{to-lower "HELLO"}}
zwraca
"hello"
capitalise/capitalize
Zmień pierwszą literę każdego słowa na wielką.
Przykład
{{capitalise "hello world"}}
zwraca
"Hello World"
md5
Tworzy skrót przy użyciu algorytmu MD5.
Przykład
{{md5 "hello world"}}
zwraca
5eb63bbbe01eeed093cb22bb8f5acdc3
sha256
Tworzy skrót przy użyciu algorytmu SHA-256.
Przykład
{{sha256 "hello world" encoding="base64url"}}
zwraca
uU0nuZNNPgilLlLX2n2r-sSE7-N6U4DukIj3rOLvzek=
base64
Tworzy skrót przy użyciu algorytmu base64.
Przykład
{{base64 "Dear user, how do you enjoy templating?"}}
zwraca
RGVhciB1c2VyLCBob3cgZG8geW91IGVuam95IHRlbXBsYXRpbmc/
base64url
Kodowanie przy użyciu algorytmu base64url.
Przykład
{{base64url "Dear user, how do you enjoy templating?"}}
zwraca
RGVhciB1c2VyLCBob3cgZG8geW91IGVuam95IHRlbXBsYXRpbmc_
date-format
Konwertuje znacznik czasu (ms) na wybrany format daty w YYYY-MM-ddTHH:mm:ss.sTZD (więcej informacji).
Przykład
...
"registrationDate": {{ json-string (date-format registeredOn format="YYYY-MM-dd") }},
"registrationTime": {{ json-string (date-format registeredOn format="HH:mm:ss") }},
"registrationDateTime": {{ json-string (date-format registeredOn format="YYYY-MM-dd HH:mm:ss") }},
...
date-parse
Konwertuje znacznik w formacie YYYY-MM-ddTHH:mm:ss.sTZD (więcej informacji) na znacznik czasu (ms).
Przykład
"registrationDate_timestamp": {{ json-string (date-parse registeredOn format="YYYY-MM-dd'T'HH:mm:ss") }}
silent
Ta funkcja powoduje, że zawartość wewnątrz bloku jest ignorowana. Jest to przydatne do komentowania podczas testowania.
Przykład
{{#silent}}
this will be never rendered
{{/silent}}
json-string
Interpretuje tekst jako ciąg JSON i odpowiednio go koduje. Może to być przydatne, gdy na przykład zmienna może zawierać cudzysłowy.
Przykład
"customer_id": {{ json-string id }}
jest bezpieczniejszą wersją tego zapisu
"customer_id": "{{ id }}"
regexp
Służy do tworzenia warunków przy użyciu wyrażeń regularnych.
filter
Jest to przydatne np. do wylistowania wszystkich parametrów klienta, które spełniają określony warunek.
Przykład 1
"parameters": [
{{~# each (filter (not is-date-param) parameters) }}
{
"name": {{ json-string @key }},
"value": {{ json-string . }}
}{{# unless @last }},{{/ unless }}
{{~/ each }}
]
Przykład 2
Jeśli na przykład chcesz filtrować wszystkich klientów według określonej właściwości, możesz użyć specjalnej funkcji _
. Na przykład, aby utworzyć dane wyjściowe, w których każdy wiersz będzie zawierał identyfikator klienta i jego „LOYALTY_CARD_NO” po dwukropku, a wynikowy obiekt JSON będzie zawierał tylko tych klientów, dla których zdefiniowano „LOYALTY_CARD_NO”, można użyć następującej konstrukcji:
{
{{~# each (filter (is-defined _.parameters.LOYALTY_CARD_NO) customers) }}
"{{ id }}": "{{ parameters.LOYALTY_CARD_NO }}"{{# unless @last }},{{/ unless }}
{{~/ each }}
}
now
Zwraca aktualny timestamp w milisekundach. Wartość jest generowana w momencie tworzenia batcha, czyli w przypadku wielokrotnego wystąpienia u poszczególnych klientów będzie miała taką samą wartość w ramach 1 batcha.
Możesz użyć tej zmiennej do stworzenia podpisu haszowanego przez helper sha256
z timestampa i hasła.
Przykład
{{ now }}
{{ date-format (now) format="YYYY-MM-dd HH:mm:ss" timezone="Europe/Prague" }}
uuid
Zwraca losowy identyfikator UUID dla dowolnego wystąpienia podanej zmiennej, czyli może być użyty do identyfikacji całej partii (jeśli jest użyty tylko raz w nagłówku) lub dla poszczególnych klientów (jeśli jest wstawiony do ciała żądania). Jeśli z jakiegoś powodu dana partia zostanie przetworzona ponownie w Sambie, nie jest gwarantowane, że identyfikatory UUID będą takie same. Jeśli potrzebujesz Microsoft GUID, możesz użyć helpera to-upper
.
Wersje
- version=”3″
- UUID jest zawsze taki sam przy użyciu parametru string (tzn. nie jest generowany losowo)
- version=”4″
- domyślnie
UUID jest zawsze losowy
- domyślnie
Przykład
{{ uuid }}
{{ uuid customers.[0].email version="3" }}