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 | | && | 論理 AND | isAdmin && isActive | | | | | 論理 OR | isError | | isWarning |

条件変数

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

  1. URL からのクエリパラメータ
  2. POST リクエストからのJSON ボディ
  3. header オブジェクトを通じたHTTP ヘッダー

電子メールトリガーの場合、以下にアクセスできます:

  • from:メール送信者アドレス
  • to:受信者アドレス
  • subject:メールの件名
  • text:プレーンテキストの本文内容
  • html:HTML 本文内容

ベストプラクティス

  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

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