テンプレートシステム - 動的な通知コンテンツ
Echobellのテンプレートシステムをマスターして、動的で情報豊富な通知を作成。変数置換、式、演算子、システム変数、通知テンプレートのベストプラクティスの完全ガイド。
Echobellのテンプレートを使用すると、変数を通知タイトルと本文に組み込むことで、動的でコンテキスト豊かな通知を作成できます。この強力な機能により、トリガーデータに基づいて適応するパーソナライズされた情報豊富なアラートが可能になり、一般的な通知をアクション可能なインテリジェンスに変換します。
基本的なテンプレート構文
Echobell テンプレートでは、変数を二重中括弧で囲むことで使用できます:
{{変数名}}
チャネルがトリガーされると、これらの変数はトリガーを通じて渡された実際の値に置き換えられます。例えば、タイトルテンプレートが${{金額}}を受け取りましたで、金額の値が 100 のチャネルをトリガーすると、結果の通知は$100を受け取りましたと表示されます。
高度なテンプレート式
Echobell テンプレートは、より複雑なシナリオのためのさまざまな式をサポートしています:
- オブジェクトプロパティへのアクセス
{{ユーザー.名前}}
{{データ["値"]}}
- 配列要素へのアクセス
{{アイテム[0]}}
- 比較演算子の使用
{{ステータス == "アクティブ"}}
{{年齢 > 18}}
- 論理演算子
{{購読中 && !一時停止中}}
{{緊急 || 高優先度}}
すべての標準的な演算子がサポートされています:==、!=、<、>、<=、>=、&&、||、!。
異なるトリガーからのテンプレート変数
Webhook トリガー
Webhook を通じてトリガーする場合、以下の方法で変数を提供できます:
-
クエリ文字列パラメータ:
GET https://hook.echobell.one/t/<channel-token>?金額=100&ステータス=完了 -
JSON ボディ(POST リクエスト用):
POST https://hook.echobell.one/t/<channel-token> Content-Type: application/json { "金額": 100, "ステータス": "完了", "ユーザー": { "名前": "田中", "id": 12345 } } -
特別な変数:
externalLink:通知レコード内でクリック可能なリンクを提供しますbodyAsText:Content-Typeがtext/plainの場合のリクエストボディのプレーンテキストコンテンツheader:HTTP リクエストヘッダーへのアクセスを提供します(例:{{header["content-type"]}})
メールトリガー
チャネルがメールを介してトリガーされる場合、以下の変数が自動的に利用可能になります:
from:送信者のメールアドレスto:受信者のメールアドレスsubject:メールの件名text:メールのプレーンテキスト内容html:メールの HTML 内容
テンプレートの使用例
比較とブール値
比較演算子または論理演算子を使用する式は、そのブール結果をテキスト true または false としてレンダリングします:
$1000 を超える支払い:{{amount > 1000}}
高優先度:{{isUrgent || isImportant}}
Echobell テンプレートは、インラインの if/else(三項)ロジックをサポートしていません。状況に応じて異なるコンテンツを送信するには、チャネルの条件を使用してトリガーをルーティングするか、生の値を直接挿入してください。
チャネル条件
通知コンテンツでテンプレートを使用することに加えて、チャネルの詳細設定で通知を送信するかどうかを決定する条件を設定できます。これらの条件は同じ式構文(中括弧なし)を使用します。
例えば、閾値を超える金額に対してのみ通知を送信するには:
金額 > 100
リンクテンプレート
チャネルの詳細設定でカスタムリンクテンプレートを設定して、通知レコード内にクリック可能なリンクを作成します:
https://dashboard.example.com/orders/{{注文ID}}
リンクテンプレートが設定されていない場合、デフォルトでexternalLink変数の値が使用されます。
システム時刻変数(UTC)
これらの変数はテンプレート(および条件)で常に利用でき、UTC で計算されます。
以下の値は直接(フラットに)注入され、名前で使用できます:
year,month(1–12)dayOfMonth,dayOfWeek(0–6、日曜 = 0)hour(0–23),minute,seconddate(YYYY-MM-DD),time(HH:mm:ss)iso: ISO‑8601 タイムスタンプ(例:2025-05-06T12:34:56.789Z)
その他の値は sys. 名前空間の下でのみ利用できます(フラットな名前としては注入されません):
sys.timezone: 常に"UTC"sys.now: ISO‑8601 タイムスタンプ(isoと同じ値)sys.epochMs,sys.epochSeconds: 現在時刻(Unix エポックからの経過)sys.monthName: 月名(January–December)sys.dayOfWeekName: 曜日名(Sunday–Saturday)
sys. 名前空間はすべてのフラット値もミラーリングします(例:sys.year、sys.hour)。
例:
送信時刻 {{date}} {{time}} {{sys.timezone}}
今日は {{sys.dayOfWeekName}}、{{sys.monthName}} {{dayOfMonth}}, {{year}}
Epoch: {{sys.epochSeconds}}
ベストプラクティス
-
欠落した変数を処理する:Echobell にはデフォルト値演算子がありません。
||演算子は純粋に論理演算です——両側をブール値として評価し、trueまたはfalseをレンダリングします。そのため{{username || "匿名ユーザー"}}はユーザー名やフォールバック文字列ではなく、リテラルテキストtrueまたはfalseをレンダリングします。変数が欠落している場合、{{variable}}は単に空文字列としてレンダリングされます。確実な値が必要な場合は、テンプレートのフォールバックに頼るのではなく、トリガーのペイロードで明示的に送信してください:ユーザー:{{username}} サーバー:{{serverName}} 検出されたエラー:{{errorCount}} -
情報豊かなテンプレート:通知をアクション可能にするために、テンプレートに重要な情報を含めてください:
{{サービス}}:{{ステータス}} - {{メッセージ}} -
テンプレートを簡潔に:通知はタイトルと本文が明確で簡潔なときに最も効果的に表示されます。
-
テスト:テンプレートを様々な変数の組み合わせでテストして、期待通りにレンダリングされることを確認してください。
テンプレートは、ユーザーが必要なときに必要な情報を正確に提供する、動的で情報豊かな通知を作成する強力な方法です。