Webhook - カスタムリクエストの送信 - Trimouテンプレートエンジンガイド
前提条件
概要
Trimouは、JSON入力とテンプレート定義に基づいてドキュメントのレンダリングを可能にするオープンソースのテンプレートエンジンです。このガイドでは、一般的な構文と、Tealium AudienceStreamに特有の拡張について説明します。
詳細は、Trimou 2.3.0 ドキュメンテーションを参照してください。
Webhooks
AudienceStreamで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,
1.0,
2.0
]
},
"flag_lists": { --arrays of booleans
"Test Array Booleans [arrb]": [
true,
true,
false
]
}
}
Trimouテンプレートで使用したい入力訪問プロファイルからすべての属性をマップします。マッピングされた属性の値はTrimouレンダリングエンジンで利用可能になります。
以下に、テンプレート変数の構成時にマッピング可能なデータタイプを示します:
構文
以下のセクションの構文例は、訪問プロファイルを参照しています。
変数の置換
変数の名前はそのデータ値のプレースホルダーです。変数の置換は、{{var}}
のような二重中括弧でこの値を参照します。
以下の例では、String変数{{str}}
がその値Hello
で置換されます。
テンプレート | レンダリングされた値 |
---|---|
{{str}} |
Hello |
{{str}} world |
Hello world |
次の例では、数値の配列{{arrn}}
の最初の値を取得し、インデックスを指定して参照します。
テンプレート | レンダリングされた値 |
---|---|
The value is {{arrn.0}} |
The value is 1.0 |
The value is {{arrn.1}} |
The value is 1.0 |
The value is {{arrn.2}} |
The value is 2.0 |
セクション
開始{{#var}}
と終了{{/var}}
タグで囲まれたコンテンツのセクションは、指定されたキーのオブジェクトが見つかった場合にレンダリングされます。これには、値がtrue
のBoolean
、空でないIterable
、空でない配列が含まれます。
以下の例では、Boolean
変数bln
がtrue
であるため、コンテンツがレンダリングされます。変数がfalse
であった場合、コンテンツはレンダリングされません。
テンプレート | レンダリングされた値 |
---|---|
{{#bln}} Section of content{{/bln}} |
Section of content |
以下の例では、Stringsの配列arrsが空でないため、コンテンツが3回レンダリングされます。それぞれの配列要素に対して1回ずつです。変数がfalse
であった場合、コンテンツはレンダリングされません。
テンプレート | レンダリングされた値 |
---|---|
{{#arrs}} Section of content {{/arrs}} |
Section of content Section of content Section of content |
反転セクション
開始{{#var}}
と終了{{/var}}
タグで囲まれたコンテンツのセクションは、コンテキストにオブジェクトが見つからない場合にレンダリングされます。これには、値がfalse
のBoolean
、要素がないIterable
、空の配列が含まれます。
以下の例では、bln
がtrue
であるため、コンテンツはレンダリングされません。変数がfalse
であった場合、コンテンツはレンダリングされます。
テンプレート | レンダリングされた値 |
---|---|
{{^bln}} Section of content{{/bln}} |
以下の例では、変数missing
が訪問プロファイルで定義されていないため、コンテンツがレンダリングされます。
テンプレート | レンダリングされた値 |
---|---|
{{^missing}} Section of content{{/missing}} |
Section of content |
反復
Trimouは、配列を反復処理するためのいくつかのヘルパー関数を提供します。反復内のネストされた属性は名前で参照されます。Trimouは、それらが属するコンテキストと親(反復要素)を決定します。
上記の例では、文字列のセットを変数"object.ss"に、文字列の配列を変数"object.arrs"に、数値の配列を変数"object.arrn"に、最後にブール値の配列を変数"object.arrb"にマッピングしました。これにより、Trimouを使用してこれらの属性をまとめて反復処理し、変数"object"を反復処理することで、それらを整列した配列として扱うことができます。以下の例を参照してください。
以下は、Trimouの組み込み反復ヘルパーです:
-
iter.index
(最初の要素はインデックス1にあります) -
iter.isFirst
-
iter.isLast
-
iter.hasNext
-
{{#object}}
と{{/object}}
は、私たちが"object.“というプレフィックスをつけた4つの変数を反復処理していることを意味します。 -
{{iter.index}}
は現在の反復インデックスで、1から始まります。 -
{{#iter.isFirst}}"first":"true",{{/iter.isFirst}}
は、最初の反復であれば内部のテキストをレンダリングします -
{{#iter.isLast}}"last":"true",{{/iter.isLast}}
は、最後の反復であれば内部のテキストをレンダリングします -
{{ss}}
は{{#object}}
内部で、私たちがこの位置の文字列のセットのアイテムを参照していることを意味します。なぜなら、私たちは文字列のセットを"object.ss"にマッピングしたからです。 -
同様に、
{{arrs}}
,{{arrn}}
および{{arrb}}
はそれぞれ、文字列の配列、数値の配列、ブール値の配列を参照します -
{{#iter.hasNext}}, {{/iter.hasNext}}
は、反復が他の要素を持っている場合(iterHasNextがtrue
である場合)にカンマをレンダリングします
テンプレート
"MyData":[
{{#object}}
{
"idx":{{iter.index}},
{{#iter.isFirst}}"first":"true",{{/iter.isFirst}}
{{#iter.isLast}}"last":"true",{{/iter.isLast}}
"ss": "{{ss}}",
"arrs": "{{arrs}}",
"arrn": "{{arrn}}",
"arrb": "{{arrb}}",
}{{#iter.hasNext}}, {{/iter.hasNext}}
{{/object}}
]
レンダリングされた値
"MyData": [{
"idx": 1,
"first": "true",
"ss": "A",
"arrs": "A",
"arrn": "1.0",
"arrb": "true",
}, {
"idx": 2,
"ss": "B",
"arrs": "A",
"arrn": "1.0",
"arrb": "true",
}, {
"idx": 3,
"last": "true",
"ss": "C",
"arrs": "B",
"arrn": "2.0",
"arrb": "false",
}]
集計を反復処理するためには(上記の例では、集計を"tly"にマッピングしました)、entrySet
と呼ばれる特別なイテレータを使用できます。これを使用すると、以下の例のように、キーと値を参照できます。
テンプレート | レンダリングされた値 |
---|
テンプレート
"MyTally":{
{{#each tly.entrySet}}
"{{key}}": "{{value.toInteger}}"{{#iter.hasNext}},{{/iter.hasNext}}
{{/each}}
}
レンダリングされた値
"MyTally": {
"A": "1",
"B": "2",
"C": "3"
}
ヘルパー関数
テンプレートは、Tealiumが提供するヘルパー関数を通じて追加のカスタム機能を提供します。これにより、データの変換が可能になり、希望するドキュメント形式の生成が容易になります。
castIntegers
Customer Data Hubは、さまざまな数値を小数で保存します。このヘルパーは、コレクションの出力を整数値に強制します。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 formattingに対応しています。完全なテーブルリストについては、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,1.0,2.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
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}} |
4.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}} |
4.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 documentationを参照してください。
テンプレート | レンダリングされた値 |
---|---|
{{unixTimestamp}} |
1599859440 |
{{unixTimestamp format="yyyy-MM-dd HH:mm a"}} |
2020-09-11 21:24 PM |
unixTimestampMs
コネクタの発火時間をエポックからのミリ秒で表示します。これは認証ヘッダーに便利です。オプションで、指定したパターンに従って日付変数をフォーマットします。パターンの構文はJavaのSimple Dateフォーマットに対応しています。完全なテーブルリストは、Java Simple Date Format documentationを参照してください。
テンプレート | レンダリングされた値 |
---|---|
{{unixTimestampMs}} |
1599859605838 |
{{unixTimestampMs format="yyyy-MM-dd HH:mm a"}} |
2020-09-11 21:26 PM |
unless
パラメータが存在しないか、内容がない場合に内容を表示します。
テンプレート | レンダリングされた値 |
---|---|
{{#unless str}}str doesn't exist or no content{{/unless}} |
|
{{#unless str2}}str2 doesn't exist or no content{{/unless}} |
str2 doesn’t exist or no content |
uuid
ランダムに生成されたUUIDを表示します。ノンスの作成に便利です。
テンプレート | レンダリングされた値 |
---|---|
{{uuid}} |
4d61f298-2a8d-461d-a3bf-b153892a7b49 |
最終更新日 :: 2024年June月12日