Event Notifications テンプレートの作成

IBM Cloud Event Notifications テンプレートは、通知(メール、Webhook、Slackなど)のレイアウトと内容を定義します。 テンプレートには、画像、静的テキスト、イベントに基づく動的コンテンツ(変数、条件ロジック)を含めることができます。

Event Notifications は2種類のテンプレートをサポートしている:

  1. ユーザー定義のテンプレート:通知メッセージを構成するために独自のテンプレートを設計することができます。

  2. あらかじめ定義されたテンプレート :特定のソースとデスティネーションのペアに対して定義された標準テンプレートです。 あらかじめ定義されたテンプレートをカスタマイズして、ユーザー定義のテンプレートを作成することができます。

ユーザー定義テンプレートの作成

  1. IBM Cloud コンソールで、 メニューアイコンの ハンバーガーアイコン > Platform Automation > Event notifications をクリックします。

  2. Event Notifications インスタンスの名前をクリックしてください。

  3. 左のパネルから Templatesを選択し、 Createをクリックする。

  4. テンプレート名や説明などの詳細を入力し、テンプレートタイプを選択します。 Event Notifications 現在、以下のユーザー定義テンプレートをサポートしている:

  5. 「 追加 」をクリックして変更内容を保存してください。

Handlebarsとの連携

Handlebarsは、テンプレート内で動的なコンテンツ生成を可能にするテンプレート言語です。 Handlebars を使用すると、テンプレート変数、条件分岐、およびその他のさまざまなヘルパーを活用して、通知メッセージをカスタマイズすることができます。

テンプレート変数

テンプレート変数は、通知メッセージテンプレート内のプレースホルダーであり、通知がトリガーされた際に実際のデータに置き換えられます。 これらの変数を使用することで、メッセージをカスタマイズしたり、通知対象のイベントに関する関連情報を盛り込んだりすることができます。

使用法

{{variable_name}}

次に例を示します。

Event Name: {{event_name}}

条件分岐ヘルパー

条件分岐機能を使用すると、メッセージテンプレート内で条件を定義でき、変数の値に基づいて動的にコンテンツを生成することが可能になります。 この機能は、さまざまなシナリオに対応する柔軟な通知メッセージを作成するのに役立ちます。

使用法

{{#if condition}}
   
{{else}}
   
{{/if}}

次に例を示します。

{{#if severity}}
   Severity: {{severity}}
{{else}}
   No severity information available
{{/if}}

ヘルパーが含まれています

「contains」ヘルパーを使用すると、ペイロードのいずれかのフィールドに特定の単語が含まれているかどうかを確認できます。

例

"data":
{
	"message": "this is test alert from dev account"
}

などのヘルパーが含まれている:

{
{{#contains data.message "dev"}}
"environment": "development"
{{/contains}}
}

利用可能なヘルパーの完全な一覧については、 raymond の組み込みヘルパーのリファレンスを参照してください。

例

ペイロード:

"data":
{
	"message": "this is test alert from dev account",
	"secrets": [
	{
		"event_time": "2025-01-24T00:45:01Z",
		"event_triggered_by": "SecretsManager",
		"secret_expiration": "2025-04-24T00:45:01Z"
	}
],
}

条件分岐ヘルパーと「contains」ヘルパーの併用

{{#if (contains data.message "dev")}}
"color":"#1E90FF"
{{else if (contains ibmendefaultlong "prod")}}
"color":"#dc143c"
{{else}}
"color":"#097969"
{{/if}}

マップの配列から各キーの値を出力するforループ

{
	{{#each data.secrets}}
	  {
	"type": "TextBlock",
	"text": "{{@key}}: {{this}}",
	"wrap": true
	},
	{{/each}}
}

マップの配列から特定の値を出力するforループ

{{#each data.secrets}}
	{
	"secret_expiration": "{{secret_expiration}}",
	 "event_time": "{{event_time}}"
	 }
{{/each}}

キーに特殊文字が含まれるペイロードから値を取得する

ペイロード:

"toolchain.tool-instance":{
	"name":"sample-date"
}

アクセス名:

{{[toolchain.tool-instance].name}}

キーが" toolchain.tool-instance "であるJSONペイロードから name 値にアクセスするには、構文{{toolchain[.tool-instance].name}}が使用される。これは、キーに特殊文字が含まれており、ドット記法で直接アクセスできないためである。