チャンネル条件 - スマートな通知フィルタリング
Echobellの条件システムをマスターして、通知をインテリジェントにフィルタリング。条件式、演算子、時間ベースのフィルタリング、アラート疲労を減らすベストプラクティスの完全ガイド。
チャンネル条件
チャンネル条件は、通知をいつ送信するかを決定する強力な式です。チャンネルに条件を設定することで、変数やHTTPヘッダーの内容に基づいて通知をフィルタリングし、購読者が関連するアラートのみを受け取るようにできます。これは、アラート疲労を減らし、通知システムで高い信号対ノイズ比を維持するために不可欠です。
条件の理解
条件は true または false のどちらかに評価される式です。チャネルがトリガーされたとき:
- 条件が設定されていない(空)場合、通知はすべての購読者に送信されます。
- 条件が設定されている場合、式が
trueと評価された場合にのみ通知が送信されます。
条件の記述
条件はテンプレートで使用される {{}} ラッパーなしの式として記述されます。例えば:
status == "active"この条件は、status 変数が "active" に等しい場合にのみ通知が送信されることを許可します。
一般的な使用例
条件を使用する方法についての実用的な例をいくつか示します:
基本的な変数チェック
amount > 100"amount" 変数が 100 より大きい場合にのみ通知します。
message != """message" 変数が空でない場合にのみ通知します。
isUrgent == true"isUrgent" 変数が真の場合にのみ通知します。
HTTP ヘッダーのチェック
特別な header 変数を使用して HTTP ヘッダーにアクセスできます:
header["user-agent"].includes("Mozilla")リクエストが Mozilla ブラウザからのものである場合にのみ通知します。
header["content-type"] == "application/json"コンテンツタイプが JSON の場合にのみ通知します。
header["x-priority"] == "high"カスタム優先度ヘッダーが "high" に設定されている場合にのみ通知します。
複雑な条件
論理演算子を使用して複数の条件を組み合わせることができます:
(temperature > 30 || pressure > 100) && status == "monitoring"温度が 30 を超えるか圧力が 100 を超え、かつ状態が "monitoring" の場合にのみ通知します。
environment == "production" && (errorLevel == "critical" || errorLevel == "high")本番環境で重大または高レベルのエラーの場合にのみ通知します。
サポートされている演算子
条件式では以下の演算子がサポートされています:
| 演算子 | 説明 | 例 |
|---|---|---|
== | 等しい | status == "active" |
!= | 等しくない | status != "inactive" |
! | 論理 NOT | !isCompleted |
< | より小さい | count < 10 |
> | より大きい | price > 99.99 |
<= | 以下 | battery <= 20 |
>= | 以上 | confidence >= 0.95 |
&& | 論理 AND | isAdmin && isActive |
|| | 論理 OR | isError || isWarning |
条件変数
Webhook を通じてチャネルがトリガーされる場合、以下にアクセスできます:
- URL からのクエリパラメータ
- POST リクエストからのJSON ボディ
headerオブジェクトを通じたHTTP ヘッダー
電子メールトリガーの場合、以下にアクセスできます:
from:メール送信者アドレスto:受信者アドレスsubject:メールの件名text:プレーンテキストの本文内容html:HTML 本文内容
システム時刻変数(UTC)
これらの読み取り専用変数は、条件とテンプレートの両方で常に利用できます。すべて UTC で計算されます。
timezone: 常に"UTC"now/iso: ISO‑8601 タイムスタンプ(例2025-05-06T12:34:56.789Z)epochMs: Unix エポックからのミリ秒(数値)epochSeconds: Unix エポックからの秒(数値)year: 西暦(4 桁)month: 月1–12monthName: 月名January–DecemberdayOfMonth: 月内の日1–31dayOfWeek: 曜日0–6(日曜 = 0)dayOfWeekName: 曜日名Sunday–Saturdayhour: 時0–23minute: 分0–59second: 秒0–59date:YYYY-MM-DD形式の文字列time:HH:mm:ss形式の文字列
例:
// 平日の 09:00–17:00(UTC)のみ
hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5
// 週末のみ
dayOfWeek == 0 || dayOfWeek == 6
// 毎月 1 日のちょうど 00 分
dayOfMonth == 1 && minute == 0ベストプラクティス
- シンプルに始める - 基本的な条件から始め、必要に応じて複雑さを追加する
- 徹底的にテストする - 期待通りに動作することを確認するために様々な入力でテストする
- 条件を文書化する - 複雑な条件を説明するためにチャネルのメモフィールドにコメントを追加する
- エッジケースを考慮する - 不足している変数や予期しない値を考慮する
例
特定のエラーに対してのみ警告する
errorType == "database" && severity == "high"営業時間内にのみ通知する
hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5ユーザータイプによるフィルタリング
userType == "admin" || userRole == "supervisor"リクエスト元の確認
header["origin"] == "https://trusted-site.com" || header["referer"].includes("trusted-domain.com")しきい値違反の監視
metricValue > threshold && isMonitoring == true条件を効果的に使用することで、通知のノイズを減らし、購読者が自分にとって関連性があり行動可能なアラートのみを受け取ることを確保できます。