只在该提醒的时候提醒你 —— 用 UTC 条件实现时间窗口通知

借助 Echobell 内置的 UTC 时间变量,只在工作时间、周末或维护窗口内发送通知。文内提供常用条件示例,并说明如何在模板中复用这些变量。

用 UTC 条件实现时间窗口通知

只在“能处理”的时间收到提醒:工作时段、值班窗口、周末维护。现在,Echobell 的系统时间变量(UTC)让这一切变得简单。你可以在频道「条件」中直接写出诸如“工作日 09:00–17:00”“每月 1 日整点”这样的表达式。

你将获得:

  • 全局可用(条件与模板)的 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)

条件里直接使用(无需 {{ }});在模板里用 {{ }} 包裹引用。

直接可用的示例

工作日的工作时间(09:00–17:00)

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

提示:条件是普通表达式,不需要 {{ }}。运算符一览见:条件 → 支持的运算符

在模板里显示时间(附)

同样的变量在模板中也适用(使用 {{ }}):

发送时间 {{date}} {{time}} {{timezone}}
今天是 {{dayOfWeekName}},{{monthName}} {{dayOfMonth}},{{year}}
Epoch:{{epochSeconds}}

也可以与 Webhook电子邮件触发器 传入的数据混用:

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

最佳实践

  • 关于 UTC:统一用 UTC 可确保跨设备一致、可预测。
  • 先用时间降噪,再用内容细化:分步优化规则。
  • 记录意图:在频道备注写明 “工作日 09–17 UTC;非工作时段仅 high/critical”。

下一步

  • 给你的频道加上时间窗口条件:条件
  • 用变量润色通知内容:模板
  • 将工作时段与值班时段拆分成不同频道
  • 紧急的非工作时段建议用“来电式通知”

有更好的时间窗口写法?欢迎分享你在 Echobell 中利用条件实现“安静、高效通知”的经验。

作者:

Nooc

发布于

2025年11月6日

只在该提醒的时候提醒你 —— 用 UTC 条件实现时间窗口通知 | 回声铃