通知メッセージのテンプレートを使うと、サードパーティの送信先に送信する前に、通知イベントデータをカスタマイズすることができます。テンプレートは、お客様のカスタム値をサードパーティの送信先で使用される値にマッピングします。
これにより、どのようなデータがどこに送信されるかを完全にコントロールすることができ、お客様が利用するサービスを十分に活用することができます。
メッセージテンプレートの変数 メッセージテンプレートとは、New Relic のイベントデータをサードパーティサービスで利用可能なデータに変換するために使用するものです。変数は、サードパーティサービスのデータフィールドにマッピングされる特定の属性です。
メッセージ テンプレートは、 Handlebars と呼ばれる単純なテンプレート言語で記述されます。メッセージ テンプレート内の変数は、二重中括弧{{ }}
内の式 として記述されます。
通知メッセージテンプレートを使用して、New Relic の通知を外部サービスのフィールドにマッピングします。
New Relic の変数名は、メッセージテンプレートの変数メニューに記載されています。変数はサブカテゴリーに分類されています。
変数メニューで{{
と入力して、変数のリストから選択します。入力すると、オートコンプリートによって変数名が表示されます。変数の型は右側に書かれています。これらの変数に強化されたデータを追加できます。
変数メニューには、New Relic の通知フィールドを外部サービスのフィールドにマッピングする際のオプションが表示されます。
Handlebarsの構文を使う イベントで通知が発生すると、メッセージテンプレートはハンドルバー変数を使用して、通知データをサードパーティサービスが使用するフィールドにマッピングします。
Handlebars 言語は、基本的な変数置換に加えて、反復 (ループ)、条件ステートメントなど、 ネストされた入力オブジェクト と関数の評価を含む多くの機能を提供します。 ハンドルバーでは、これらの関数はヘルパーと呼ばれます。ワークフローで使用される変数の説明については 、ここをクリック してください。
ヘルパー機能 私たちのメッセージテンプレートは、Handlebars 組み込みヘルパー をサポートしています。
さらに、あなたの役に立つかもしれない他のヘルパーも追加しました。
JSON {{json}}
ヘルパーは、テキストを JSON 要素に変換します。
JSON構文を使用するWebhookのペイロードを設定する場合や、JSON形式のデータを渡したい場合などに使用します。
たとえば、 data
という変数を使用します。
"tags" : [ "infra, team-a" ]
tags
配列を JSON 要素として取得するには、 {{json}}
ヘルパーを使用します。
を得ることができます。
平等性 等値{{#eq}}
ヘルパーを使用して変数を比較します。
Compares variables a and b, renders 'yes' or 'no':
{{ #eq a b }} yes {{ else }} no {{ /eq }}
Compares string value "a" to variable b, renders 'yes' or 'no':
{{ #eq "a" b }} yes {{ else }} no {{ /eq }}
Renders 'true' or 'false':
{{ eq a b yes = 'y' no = 'n' }}
収録内容 {{#contains}}
ヘルパーを使用して変数を比較します。
Asserts that b contains a, renders 'yes' or 'no':
{{ #contains a b }} yes {{ else }} no {{ /contains }}
Asserts that variable b contains string value "a", renders 'yes' or 'no':
{{ #contains "a" b }} yes {{ else }} no {{ /contains }}
Renders 'true' or 'false':
{{ contains a b yes = 'y' no = 'n' }}
算数 単純な数学演算を実行するには、 {{#math}}
を使用します。
Renders addition of two number values:
{{ #math openIncidentsCount '+' closedIncidentsCount }} {{ /math }}
Renders subtraction of two number values:
{{ #math createdAt '-' closedAt }} {{ /math }}
Renders multiplication of two number values:
{{ #math 3 '*' 3 }} {{ /math }}
Renders division of two number values:
{{ #math 9 '/' 3 }} {{ /math }}
タイムゾーン {{#timezone}}
を使用して、エポック時間を「yyyy-MM-dd HH:mm:ss zzz」形式の日付に変換します。tz データベースのタイムゾーンのリストは 、ここで 見つけることができます。
例 #1: エポック時間の createdAt を米国東部タイムゾーンに変換します。
{{ #timezone createdAt 'US/Eastern' }} {{ /timezone }}
を得ることができます。
"2023-06-06 09:45:07 EDT"
例 #2: エポックタイムをパリのタイムゾーンに変換します::
{{ #timezone 1686059107319 'Europe/Paris' }} {{ /timezone }}
を得ることができます。
"2023-06-06 15:45:07 GMT+2"
交換 replace
ヘルパーは、2 番目のパラメーターの最初のパラメーターのインスタンスを子ブロックに置き換えます。
else
句を使用して、最初のパラメーターのインスタンスが見つからない場合の処理を指定します。省略した場合、空の文字列が生成されます。
例 #1: 文The dog likes to eat
の単語dog
をcat
に置き換えます。
{{ #replace "dog" "The dog likes to eat" }} cat {{ /replace }}
を得ることができます。
例 #2: 文The dog likes to eat
の単語cat
をmouse
に置き換えます。
{{ #replace "cat" "The dog likes to eat" }} mouse {{ /replace }}
をクリックすると、空の文字列が表示されます。
例 #3: else
句を使用して、文The dog likes to eat
内の単語cat
をmouse
に置き換えます。
{{ #replace "cat" "The dog likes to eat" }} mouse {{ else }} There is no cat to replace {{ /replace }}
を得ることができます。
There is no cat to replace
例 #4: 大文字と小文字を区別せずに、文The DOG likes to eat
の単語dog
をcat
に置き換えます。
{{ #replace "/dog/i" "The DOG likes to eat" }} cat {{ /replace }}
を得ることができます。
例 #5: 変数{{haystack}}
内の変数{{needle}}
を変数{{replacement}}
に置き換えます。
{{ #replace needle haystack }} {{ replacement }} {{ /replace }}
このデータを使って
"haystack" : "The DOG likes to eat" ,
を得ることができます。
ヘルパー関数はネストすることもできます。次に例を示します。
{{ #eq "a" b }} yes1 {{ else }} {{ #eq "a" c }} yes2 {{ else }} no {{ /eq }} {{ /eq }}
使用例 例は、 data
という変数に基づいています。
"tags" : [ "infra, team-a" ] ,
data
値は、同等のドット表記形式です。
"data.tags" : [ "infra, team-a" ]
データの検証 id
が123456789
と等しい場合、出力はvalid
です。そうでない場合、出力はnot valid
です。
{{ eq data . name "Alice" yes = 'valid' no = 'not valid' }}
name
がAlice
と等しい場合、出力はvalid
です。
JSONを返す tags
とオブジェクトのプロパティを JSON 形式で取得します。
そうすると、次のようなJSONが返ってきます。
配列からの値の取得 tags
配列から最初のタグを取得します。
これは、配列から最初の値を返すことになります。
配列の反復処理 配列型の変数をイテレートし、その値を文字列に集約します。
{{ #each tags }} {{ this }} {{ #unless @ last }} , {{ /unless }} {{ /each }}
結果には、カンマで区切られたタグが含まれます(末尾のカンマは省略されます)。
同様に、 data
変数を反復し、オブジェクトの値を集計して、JSON 要素を出力します。
{{ #each ( json data ) }} {{ this }} {{ /each }}
これは次のようなJSONを返します。
"tags" : [ "infra, team-a" ] ,
data
変数を反復処理してから、オブジェクトのエントリを文字列に集約します。
{{ #each data }} {{ @ key }} : {{ this }} {{ #unless @ last }} , {{ /unless }} {{ /each }}
これは次のような文字列を返します。
tags: infra,team-a, name: Alice, id: 123456789
欠落した属性の処理 以前の号には存在しなかったタグなど、場合によっては、属性が変数メニュー にないか、まったく存在しないことがあります。
#if
ステートメントを使用して、次のようなフォールバックを設定できます。
{{ #if data . type }} {{ json data . type }} {{ else }} "N/A" {{ /if }}
これにより、文字列"N/A"
が返されます。