Funkcje Handlebars.js

This post is also available in: Czeski Angielski

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ść falseundefinednull""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}}

Atrybuty opcjonalne

Tej funkcji należy używać podczas renderowania wszystkich opcjonalnych atrybutów, które zazwyczaj zawierają tylko identyfikator klienta.

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

Przykład

{{ uuid }}

{{ uuid customers.[0].email version="3" }}

This post is also available in: Czeski Angielski

Zaktualizowano na 22 listopada, 2024

Czy ten artykuł był pomocny?

Artykuły powiązane