Webhook - カスタムリクエスト送信 - Trimouテンプレートエンジンガイド
Trimouは、JSON入力とテンプレート定義に基づいてドキュメントをレンダリングするオープンソースのテンプレートエンジンです。このガイドでは、一般的な構文とTealium固有の拡張について説明します。
詳細については、Trimou 2.3.0 ドキュメントを参照してください。
前提条件
Webhooks
Webhookを構成する際、訪問プロファイルには訪問と訪問属性があり、必要な出力にマッピングする必要があります。すべてのデータタイプがマッピング可能である訪問プロファイルの例を以下に示します:
{
"badges": [
"Test Badge"
],
"dates": {
"Test Date [dat]": 1600128000000
},
"flags": { --booleans
"Test Boolean [bln]": true
},
"metrics": { --numbers
"Lifetime visit count": 12
},
"metric_sets": { --tallies
"Test Tally [tly]": {
"A": 1,
"B": 2,
"C": 3
}
},
"properties": { --strings
"Test String [str]": "Hello"
},
"property_sets": { --sets of strings
"Test Set of Strings [ss]": [
"A",
"B",
"C"
]
},
"property_lists": { --arrays of strings
"Test Array Strings [arrs]": [
"A",
"A",
"B"
]
},
"metric_lists": { --arrays of numbers
"Test Array Numbers [arrn]": [
1.0,
2.0,
3.0
]
},
"flag_lists": { --arrays of booleans
"Test Array Booleans [arrb]": [
true,
true,
false
]
}
}
Trimouテンプレートで使用したい入力訪問プロファイルのすべての属性をマッピングします。マッピングされた属性の値はTrimouレンダリングエンジンで利用可能になります。
テンプレート変数を構成する際にマッピング可能なデータタイプを以下に示します:

構文
以下のセクションの構文例は、訪問プロファイルを参照しています。
変数の置換
変数名はそのデータ値のプレースホルダーです。変数置換は、この値を二重中括弧で参照します。例えば {{var}}
です。
次の例では、文字列変数 {{str}}
がその値 Hello
で置換されます。
テンプレート | レンダリングされた値 |
---|---|
{{str}} world |
Hello world |
次の例では、数値の配列 {{arrn}}
の最初の値を、インデックスを指定して参照します。
テンプレート | レンダリングされた値 |
---|---|
最初の値は {{arrn.0}} |
最初の値は 1.0 |
二番目の値は {{arrn.1}} |
二番目の値は 2.0 |
三番目の値は {{arrn.2}} |
三番目の値は 3.0 |
セクション
開始 {{#var}}
と終了 {{/var}}
タグに囲まれたコンテンツのセクションは、指定されたキーのオブジェクトが見つかった場合にレンダリングされます。これには Boolean
の値 true
、空でない Iterable
、空でない配列が含まれます。
次の例では、Boolean
変数 bln
が true
であるため、コンテンツがレンダリングされます。変数が false
だった場合、コンテンツはレンダリングされません。
テンプレート | レンダリングされた値 |
---|---|
{{#bln}}コンテンツのセクション{{/bln}} |
コンテンツのセクション |
次の例では、文字列の配列 arrs
が空でないため、配列の要素ごとに一度ずつ、合計三回コンテンツがレンダリングされます。変数が false
だった場合、コンテンツはレンダリングされません。
テンプレート | レンダリングされた値 |
---|---|
{{#arrs}}コンテンツのセクション {{/arrs}} |
コンテンツのセクション コンテンツのセクション コンテンツのセクション |
反転セクション
開始 {{^var}}
と終了 {{/var}}
タグに囲まれたコンテンツのセクションは、コンテキスト内でオブジェクトが見つからない場合にレンダリングされます。これには Boolean
の値 false
、要素のない Iterable
、空の配列が含まれます。
次の例では、bln
が true
であるため、コンテンツはレンダリングされません。変数が false
だった場合、コンテンツはレンダリングされます。
テンプレート | レンダリングされた値 |
---|---|
{{^bln}}コンテンツのセクション{{/bln}} |
コンテンツのセクション |
次の例では、訪問プロファイルで定義されていない変数 missing
のため、コンテンツがレンダリングされます。
テンプレート | レンダリングされた値 |
---|---|
{{^missing}}コンテンツのセクション{{/missing}} |
コンテンツのセクション |
繰り返し
Trimouは配列を繰り返し処理するためのいくつかのヘルパー関数を提供します。繰り返し内のネストされた属性は名前で参照されます。Trimouは、それらが属するコンテキストと親(繰り返し要素)を決定します。
以下は、Trimouの組み込み繰り返しヘルパーです:
iter.index
(最初の要素はインデックス1
で始まります)iter.isFirst
iter.isLast
iter.hasNext
次の例では、ブール値の配列を変数 object.arrb
にマッピングし、配列を繰り返し処理する方法を示しています:
テンプレート
{
"MyData": [
{{#object.arrb}}
{
"idx": {{iter.index}},
{{#iter.isFirst}}"first": true,{{/iter.isFirst}}
{{#iter.isLast}}"last": true,{{/iter.isLast}}
"val": {{.}}
}{{#iter.hasNext}},{{/iter.hasNext}}
{{/object.arrb}}
]
}
{{#object.arrb}}
と{{/object.arrb}}
は配列を繰り返し処理します。{{iter.index}}
は現在の繰り返しインデックスで、1から始まります。{{#iter.isFirst}}"first": true,{{/iter.isFirst}}
は最初の繰り返しであればテキスト内をレンダリングします。{{#iter.isLast}}"last": true,{{/iter.isLast}}
は最後の繰り返しであればテキスト内をレンダリングします。{{#iter.hasNext}}, {{/iter.hasNext}}
は繰り返しにさらに要素がある場合(iterHasNext
がtrue
の場合)コンマをレンダリングします。{{.}}
は配列を繰り返し処理する際に配列値を参照します。
レンダリングされた値
{
"MyData": [
{
"idx": 1,
"first": true,
"val": true,
},
{
"idx": 2,
"val": true,
},
{
"idx": 3,
"last": true,
"val": false,
}
]
}
集計を繰り返し処理するには、イテレータ entrySet
を使用し、key
と value
を参照します:
テンプレート
{
"MyTally": {
{{#each tly.entrySet}}
"{{key}}": "{{value.toInteger}}"{{#iter.hasNext}},{{/iter.hasNext}}
{{/each}}
}
}
レンダリングされた値
"MyTally": {
"A": "1",
"B": "2",
"C": "3"
}
ヘルパー関数
テンプレートは、Tealiumが提供するヘルパー関数を通じて追加のカスタム機能を提供します。これにより、データの変換が容易になり、望ましいドキュメント形式の生成が容易になります。
castIntegers
このヘルパーは、コレクションの出力を整数値に強制します。toJson
と共に使用できます。
テンプレート | レンダリングされた値 |
---|---|
tally |
{A=1.0, B=2.0, C=3.0} |
tally.castIntegers |
{A=1, B=2, C=3} |
tally.castIntegers.toJson |
{"A":1,"B":2,"C":3} |
encodeBase64
コンテンツをbase64でエンコードします。
テンプレート | レンダリングされた値 |
---|---|
{{#encodeBase64}} {{str}} world{{/encodeBase64}} |
wqDCoEhlbGxvIHdvcmxkCg== |
encodeUrl
コンテンツをURLエンコードします。
テンプレート | レンダリングされた値 |
---|---|
{{#encodeUrl}}https://www.google.com/search?q=tealium{{/encodeUrl}} |
https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dtealium |
escapeHtml
HTMLドキュメントで使用するために値をエスケープします。
テンプレート | レンダリングされた値 |
---|---|
{{#escapeHtml}}<hello>&"world{{/escapeHtml}} |
<hello>&"world |
escapeJson
JSONオブジェクト/配列で使用するために値をエスケープします。
テンプレート | レンダリングされた値 |
---|---|
{{#escapeJson}}{"foo":"bar"}{{/escapeJson}} |
{\"foo\":\"bar\"} |
escapeXml
XMLドキュメントで使用するために値をエスケープします。
テンプレート | レンダリングされた値 |
---|---|
{{#escapeXml}}<hello>&\"world{{/escapeXml}} |
<hello>&"world |
formatDate
指定されたパターンに従って日付変数をフォーマットします。パターンの構文はJavaのSimple Dateフォーマットに対応しています。全ての表記一覧については、Java Simple Date Format documentationを参照してください。
テンプレート | レンダリングされた値 |
---|---|
{{dat}} |
2020-09-15T00:00:00.000Z |
{{formatDate dat pattern="yyyy-MM-dd HH:mm a"}} |
2020-09-15 00:00 AM |
hash
HMACジェネレーターは、秘密鍵を使用してハッシュベースのメッセージ認証コード(HMAC)を計算します。HMACは、メッセージの性質を認証するのに役立つ小さなデータセットであり、メッセージの完全性と真正性を保護します。
秘密鍵は、HMACを計算するために使用される情報の一意の部分であり、メッセージの送信者と受信者の両方によって知られています。この鍵は使用するアルゴリズムによって長さが異なります。
次の例では、testKey
、timestamp
、ip
、lang
がTrimouテンプレートで有効な入力変数として存在すると仮定しています。
テンプレート | 説明 | レンダリングされた値 |
---|---|---|
{{hash algorithm="HmacSHA256" encodingCharset="UTF-8" binaryEncoding="hex" joinOn="" useSecretKey="true" testKey timestamp ip lang}} |
テンプレート変数: testKey , timestamp , ip , timestamp そして useSecretKey="true" が指定されているため、最初に提供された変数。例えば、testKey がHMAC計算の秘密鍵として使用されます。 |
例えば、timestamp , ip , lang の連結が: 2020-08-20T08:45:33.412127.0.0.1en-US そしてtestKeyがw8sZzy8EaPaxFKfaoTqUi6の場合 結果は: a0afb572e3fc174c2dea112e1a9922fb9903caa65e6aa9e50e47758b8a611542 |
オプション | 必須 | 可能な値 | 説明 |
---|---|---|---|
algorithm | はい | 例: HmacSHA256 |
利用可能なオプションは: - secretKey="true" の場合はJava Mac Algorithmsを参照- secretKey="false" の場合はJava MessageDigest Algorithmsを参照 |
encodingCharset | いいえ | UTF-8 (デフォルト), US-ASCII |
|
binaryEncoding | いいえ | base64 (デフォルト), hex |
|
binaryEncodingOptions | いいえ | lowercase (デフォルト), uppercase |
binaryEncoding="hex" の場合のみ適用 |
joinOn | いいえ | 入力の連結セパレータ; 空の値 "" を連結に使用する場合は提供 | |
useSecretKey | いいえ | false (デフォルト), true |
|
secretKey | いいえ | ||
variables | はい | 最後に指定されたオプションの後にすべての変数を配置します。例えば: - secretKey="true" の場合、すべてのオプションが指定された後の最初の変数がsecretKey として使用され、その他の変数はjoinOn オプションで結合される変数として使用されます。- secretKey="false" の場合、それらはすべてjoinOn オプションで結合される変数として使用されます。 |
if
変数が存在し、内容がある場合に内容を出力します。次の例では、lang
がTrimouテンプレートで有効な入力変数として存在すると仮定しています。
テンプレート | レンダリングされた値 |
---|---|
{{#if str}} {{str}} world! {{/if}} |
Hello world! |
{{#if arrn}} {{arrn.toJson}} {{/if}} |
[1.0,2.0,3.0] |
{{#if ss}} {{ss.toJson}} {{/if}} |
["A","B","C"] |
isEq
値が等しい場合に内容を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{#isEq bln true}}Boolean is true{{/isEq}} |
Boolean is true |
{{#isEq bln false}}Boolean is false{{/isEq}} |
|
{{#isEq str "Hello"}}String is Hello{{/isEq}} |
String is Hello |
{{#isEq str "Test"}}String is Test{{/isEq}} |
isNotEq
値が等しくない場合に内容を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{#isNotEq bln true}}Boolean is false{{/isNotEq}} |
|
{{#isNotEq bln false}}Boolean is true{{/isNotEq}} |
Boolean is true |
{{#isNotEq str "Hello"}}Hello world!{{/isNotEq}} |
|
{{#isNotEq str "Some string"}}Hello there!{{/isNotEq}} |
Hello there! |
join
リストをオプションのジョイナーを使用して文字列に変換します。empty_list
が空のリストであると仮定します。
テンプレート | レンダリングされた値 |
---|---|
{{join ss}} |
A,B,C |
{{join ss on=" and "}} |
A and B and C |
{{join ss on=""}} |
A B C |
{{join empty_list on=" and "}} |
jsonMinify
有効なJSONを含むコンテンツが提供された場合、それを最小化します(すべての空白を削除します)。コンテンツが有効なJSONでない場合、変更なしで元の値が表示されます。
テンプレート | レンダリングされた値 |
---|---|
{{#jsonMinify}} { "name" : "Bob", "status" : "He is hungry!", } {{/jsonMinify}} |
{“name”:“Bob”,“status”:“He is hungry!”} |
md5
コンテンツのMD5ハッシュを計算します。
テンプレート | レンダリングされた値 |
---|---|
{{#md5}}Hello World!{{/md5}} |
ed076287532e86365e841e92bfc50d8c |
sha1
コンテンツのSHA1ハッシュを計算します。
テンプレート | レンダリングされた値 |
---|---|
{{#sha1}}Hello world!{{/sha1}} |
d3486ae9136e7856bc42212385ea797094475802 |
sha256
コンテンツのSHA256ハッシュを計算します。
テンプレート | レンダリングされた値 |
---|---|
{{#sha256}}Hello World!{{/sha256}} |
7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069 |
substring
指定されたstart
インデックスから始まり、指定されたend
インデックス-1で終わる部分文字列を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{sequence}} |
“123456789” |
{{substring sequence start="0" end="5"}} |
“12345” |
substringAfter
指定されたセパレータ文字列の後の部分文字列を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{screensize}} |
“340x480x640” |
{{substringAfter screenSize separator="x"}} |
“480x640” |
substringAfterLast
指定されたセパレータ文字列の最後の出現後の部分文字列を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{screensize}} |
“340x480x640” |
{{substringAfterLast screenSize separator="x"}} |
“640” |
substringBefore
指定されたセパレータ文字列の前の部分文字列を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{screensize}} |
“340x480x640” |
{{substringBefore screenSize separator="x"}} |
“340” |
substringBeforeLast
指定されたセパレータ文字列の最後の出現前の部分文字列を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{screensize}} |
“340x480x640” |
{{substringBeforeLast screenSize separator="x"}} |
“340x480” |
substringBetween
指定されたopen
とclose
文字列の間の部分文字列を出力します。
テンプレート | レンダリングされた値 |
---|---|
{{animals}} |
“cat dog tiger duck” |
{{substringBetween animals open="cat" close="duck"}} |
" dog tiger " |
sum
リストまたは合計のすべての値を合計します。
テンプレート | レンダリングされた値 |
---|---|
{{tly.sum}} |
6.0 |
{{arrn.sum}} |
6.0 |
toInteger
変数の値を整数に変換します。
テンプレート | レンダリングされた値 |
---|---|
{{num}} |
1.0 |
{{num.toInteger}} |
1 |
toJson
変数をJSON形式で出力します。
テンプレート | レンダリングされた値 |
---|---|
{{tly}} |
{A=1.0, B=2.0, C=3.0} |
{{tly.toJson}} |
{"A":1.0,"B":2.0,"C":3.0} |
toList
JSON形式の配列文字列を配列に変換して、追加の操作を行います。
arrn: ["1","2","2"]
の場合:
テンプレート | レンダリングされた値 |
---|---|
{{arrn.toList.sum}} |
6.0 |
toTimestamp
日付変数の値をUnix秒タイムスタンプ形式に変換します。
テンプレート | レンダリングされた値 |
---|---|
{{dat}} |
2020-09-15T00:00:00.000Z |
{{dat.toTimestamp}} |
1600128000 |
toTimestampMs
日付変数の値をUnixミリ秒タイムスタンプ形式に変換します。
テンプレート | レンダリングされた値 |
---|---|
{{dat}} |
2020-09-15T00:00:00.000Z |
{{dat.toTimestampMs}} |
1600128000000 |
unixTimestamp
Unixエポックからの秒数でコネクタの発火時間を表示します。これは認証ヘッダーに便利です。オプションで、指定されたパターンに従って日付変数をフォーマットすることができます。パターンの構文はJavaのSimple Dateフォーマットに対応しています。完全な表のリストについては、Java Simple Date Formatのドキュメントを参照してください。
テンプレート | レンダリングされた値 |
---|---|
{{unixTimestamp}} |
1599859440 |
{{unixTimestamp format="yyyy-MM-dd HH:mm a"}} |
2020-09-11 21:24 PM |
unixTimestampMs
Unixエポックからのミリ秒数でコネクタの発火時間を表示します。これは認証ヘッダーに便利です。オプションで、指定されたパターンに従って日付変数をフォーマットすることができます。パターンの構文はJavaのSimple Dateフォーマットに対応しています。完全な表のリストについては、Java Simple Date Formatのドキュメントを参照してください。
テンプレート | レンダリングされた値 |
---|---|
{{unixTimestampMs}} |
1599859605838 |
{{unixTimestampMs format="yyyy-MM-dd HH:mm a"}} |
2020-09-11 21:26 PM |
unless
パラメータが存在しないか内容がない場合にコンテンツを表示します。これはif
の逆です。
テンプレート | レンダリングされた値 |
---|---|
{{#unless str}}strが存在しないか内容がありません{{/unless}} |
|
{{#unless str2}}str2が存在しないか内容がありません{{/unless}} |
str2が存在しないか内容がありません |
uuid
ランダムに生成されたUUIDを表示します。これは、リソースを識別するためや分散システムでの一意性を保証するために一般的に使用される、全世界で一意の識別子です。
テンプレート | レンダリングされた値 |
---|---|
{{uuid}} |
4d61f298-2a8d-461d-a3bf-b153892a7b49 |
最終更新日 :: 2025年May月22日