Echobell

频道条件

了解Echobell中频道条件的工作原理

频道条件

频道条件是强大的表达式,用于确定何时应发送通知。通过在频道上设置条件,您可以根据变量或 HTTP 标头的内容过滤通知,确保订阅者只收到相关警报。

了解条件

条件是计算结果为 truefalse 的表达式。当频道被触发时:

  • 如果条件未设置(为空),通知将发送给所有订阅者。
  • 如果条件已设置,只有当表达式计算为 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"
!逻辑非!isCompleted
<小于count < 10
>大于price > 99.99
<=小于或等于battery <= 20
>=大于或等于confidence >= 0.95
&&逻辑与isAdmin && isActive
||逻辑或isError || 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:四位年份
  • 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
  • dateYYYY-MM-DD 字符串
  • timeHH:mm:ss 字符串

示例:

// 工作日的 09:00–17:00(UTC)
hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5

// 仅周末
dayOfWeek == 0 || dayOfWeek == 6

// 每月第一天的整点
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

通过有效使用条件,您可以减少通知噪音,确保订阅者只收到对他们有相关性和可操作性的警报。