EchobellのUTC条件で時間帯を指定した通知を実現する

EchobellのビルトインUTC時刻変数を使って通知を業務時間、週末、メンテナンスウィンドウに絞り込む方法。すぐに使える条件レシピ付き。

EchobellのUTC条件で時間帯を指定した通知を実現する

Echobellに組み込まれたUTC時刻変数を使えば、チャンネルの条件で直接、通知を特定の時間帯(業務時間、オンコールシフト、メンテナンスウィンドウなど)に限定できます。外部フィルタリングレイヤーは不要です。

前提条件: 条件テンプレートWebhookメールトリガー

利用可能なUTC変数

以下はすべて読み取り専用で、常に利用可能で、UTCで計算されます:

  • timezone(常に"UTC")、now/isoepochMsepochSeconds
  • yearmonth(1〜12)、monthName
  • dayOfMonth(1〜31)
  • dayOfWeek(0〜6、日曜日=0)、dayOfWeekName
  • hour(0〜23)、minute(0〜59)、second(0〜59)
  • date(YYYY-MM-DD)、time(HH:mm:ss)

条件では直接使用します({{ }}は不要)。テンプレートでは{{ }}付きで使用します。

条件レシピ

平日の業務時間

hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5

週末のみ

dayOfWeek == 0 || dayOfWeek == 6

時間外(夜間と週末)

(hour < 9 || hour >= 17) || dayOfWeek == 0 || dayOfWeek == 6

メンテナンスウィンドウ(土曜01:00〜03:00)

dayOfWeek == 6 && hour >= 1 && hour < 3

毎月1日の正時

dayOfMonth == 1 && minute == 0

四半期末の業務時間(3月・6月・9月・12月)

(month == 3 || month == 6 || month == 9 || month == 12) && hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5

時間条件とコンテンツフィルターの組み合わせ

時間条件はデータ変数と標準の演算子で組み合わせられます:

  • 高重大度のみを時間外でエスカレーション:
    ((hour < 9 || hour >= 17) || dayOfWeek == 0 || dayOfWeek == 6) && (severity == "high" || severity == "critical")
  • 本番環境、平日のみ:
    environment == "production" && dayOfWeek >= 1 && dayOfWeek <= 5

条件は通常の式です — {{ }}で囲まないでください。条件 → サポートされる演算子を参照。

テンプレートでの時刻変数の使用

同じ変数を{{ }}付きでテンプレートに使用でき、監査レコードや人が読みやすい記録として役立ちます:

Sent at {{date}} {{time}} {{timezone}}
Today is {{dayOfWeekName}}, {{monthName}} {{dayOfMonth}}, {{year}}
Epoch: {{epochSeconds}}

Webhookまたはメールトリガーからのデータと組み合わせる:

{{service}} {{status}} at {{time}} ({{timezone}})

注意事項

  • すべてのシステム変数はUTCです。チームが複数のタイムゾーンにまたがる場合は、時間範囲設定時にオフセットを考慮してください。
  • まずシンプルな時間ウィンドウから始め、動作確認後にコンテンツフィルターを追加してください。
  • 条件ロジックを説明する短い説明をチャンネルに残しておきましょう(例:「平日09〜17 UTC、時間外は高重大度のみ」)。

次のステップ

  • 既存のチャンネルに時間ウィンドウ条件を追加する: 条件
  • 変数で通知内容をカスタマイズする: テンプレート
  • 業務時間用とオンコール時間帯用の別々のチャンネルを作成する
  • 時間外の緊急対応のためオンコールチャンネルの通知タイプを着信(Calling)に設定する