Webhook - カスタムリクエストの送信 - Trimouテンプレートエンジンガイド
Trimouテンプレートエンジンを使用して、JSON入力とテンプレート定義に基づいてドキュメントをレンダリングする方法について説明します。
前提条件
概要
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}}
です。
次の例では、文字列変数 {{str}}
がその値 Hello
に置き換えられます。
テンプレート | レンダリングされた値 |
---|---|
{{str}} |
Hello |
{{str}} world |
Hello world |
次の例では、数値の配列 {{arrn}}
の最初の値を、インデックスを指定することで参照します。
テンプレート | レンダリングされた値 |
---|---|
値は {{arrn.0}} です |
値は 1.0 です |
値は {{arrn.1}} です |
値は 1.0 です |
値は {{arrn.2}} です |
値は 2.0 です |
セクション
開始タグ {{#var}}
と終了タグ {{/var}}
で囲まれたコンテンツのセクションは、指定されたキーのオブジェクトが見つかった場合にレンダリングされます。これには、値が true
の Boolean
、空でない Iterable
、および空でない配列が含まれます。
次の例では、Boolean
変数 bln
が true
であるため、コンテンツがレンダリングされます。変数が false
であった場合、コンテンツはレンダリングされません。
テンプレート | レンダリングされた値 |
---|---|
{{#bln}} コンテンツのセクション{{/bln}} |
コンテンツのセクション |
次の例では、文字列の配列 arrs が空でないため、コンテンツが3回レンダリングされます。各配列要素ごとに1回です。変数が false
であった場合、コンテンツはレンダリングされません。
テンプレート | レンダリングされた値 |
---|---|
{{#arrs}} コンテンツのセクション {{/arrs}} |
コンテンツのセクション コンテンツのセクション コンテンツのセクション |
反転セクション
開始タグ {{^var}}
と終了タグ {{/var}}
で囲まれたコンテンツのセクションは、コンテキスト内でオブジェクトが見つからない場合にレンダリングされます。これには、値が false
の Boolean
、要素がない Iterable
、または空の配列が含まれます。
次の例では、bln
が true
であるため、コンテンツはレンダリングされません。変数が false
であった場合、コンテンツはレンダリングされます。
テンプレート | レンダリングされた値 |
---|---|
{{^bln}} コンテンツのセクション{{/bln}} |
次の例では、訪問プロファイルで変数 missing
が定義されていないため、コンテンツがレンダリングされます。
テンプレート | レンダリングされた値 |
---|---|
{{^missing}} コンテンツのセクション{{/missing}} |
コンテンツのセクション |
反復処理
Trimouは配列を反復処理するためのいくつかのヘルパー関数を提供します。反復処理内のネストされた属性は名前で参照されます。Trimouは、それらが属するコンテキストと親(反復要素)を決定します。
上記の例では、文字列のセットを変数 “object.ss” に、文字列の配列を変数 “object.arrs” に、数値の配列を変数 “object.arrn” に、最後にブール値の配列を変数 “object.arrb” にマッピングしました。これは、変数 “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}}
は、最後の反復であれば内部のテキストをレンダリングします -
{{#object}}
内の{{ss}}
は、この位置での文字列のセット内のアイテムを参照しています。なぜなら、文字列のセットを “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フォーマットに対応しています。完全な表リストについては、Java Simple Date Formatドキュメントを参照してください。
テンプレート | レンダリングされた値 |
---|---|
{{dat}} |
2020-09-15T00:00:00.000Z |
{{formatDate dat pattern="yyyy-MM-dd HH:mm a"}} |
2020-09-15 00 |
最終更新日 :: 2024年March月29日