Echobell

チャンネル条件 - スマートな通知フィルタリング

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
&&論理 ANDisAdmin && isActive
||論理 ORisError || isWarning

条件変数

Webhook を通じてチャネルがトリガーされる場合、以下にアクセスできます:

  1. URL からのクエリパラメータ
  2. POST リクエストからのJSON ボディ
  3. 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–12
  • monthName: 月名 January–December
  • dayOfMonth: 月内の日 1–31
  • dayOfWeek: 曜日 0–6(日曜 = 0)
  • dayOfWeekName: 曜日名 Sunday–Saturday
  • hour: 時 0–23
  • minute: 分 0–59
  • second: 秒 0–59
  • date: 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

ベストプラクティス

  1. シンプルに始める - 基本的な条件から始め、必要に応じて複雑さを追加する
  2. 徹底的にテストする - 期待通りに動作することを確認するために様々な入力でテストする
  3. 条件を文書化する - 複雑な条件を説明するためにチャネルのメモフィールドにコメントを追加する
  4. エッジケースを考慮する - 不足している変数や予期しない値を考慮する

特定のエラーに対してのみ警告する

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

条件を効果的に使用することで、通知のノイズを減らし、購読者が自分にとって関連性があり行動可能なアラートのみを受け取ることを確保できます。

目次