Skip to content

消息免打扰使用指南

什么是消息免打扰?

消息免打扰允许你为接口(Endpoint)设置静默时间段。在设定的时间段内,推送到该接口的消息不会被发送到任何渠道,但推送记录仍会正常保存。

简单来说:让消息在特定时段安静下来,不打扰你休息或工作。

典型使用场景

场景说明
夜间静默深夜 22:00 到次日 08:00 不接收通知
午休时间中午 12:00-13:30 不推送
工作专注上班时间不接收非紧急告警
周末模式特定时间段只保留关键通知

工作原理

在消息流程中的位置

外部请求 → 关键词过滤 → 更新时间 → 获取渠道列表

                              遍历每个渠道:
                                ├─ 免打扰检查 ← 在这里判断
                                │   ├─ 在时段内 → 记录日志(状态: 已静默),跳过发送
                                │   └─ 不在时段 → 继续正常推送
                                ├─ 创建推送日志
                                ├─ 发送到渠道
                                └─ 更新日志状态

核心特点

特性说明
按接口配置每个接口可以设置不同的免打扰时间
按渠道逐一判断如果一个接口绑定了多个渠道,每个渠道独立判断是否在免打扰时段
记录保留被静默的消息不会发送,但会生成一条已静默的推送记录,可在日志中查看
服务端时间以服务器当前时间为准进行判断

全局开关与接口配置

消息免打扰功能有两层控制

第一层:全局开关(管理员)

位置:「系统设置」页面 →「消息免打扰」开关

  • 只有管理员可以看到和操作此开关
  • 全局关闭时,所有接口的免打扰配置都不生效
  • 全局开启时,各接口的免打扰配置才生效

这相当于一个总闸。关闭后即使各接口配了时间段也会照常推送。

第二层:接口级别配置

位置:「接口管理」→ 接口卡片 →「消息免打扰」或下拉菜单选择「消息免打扰」

  • 为单个接口设置具体的时间段
  • 需要全局开关开启才生效

配置方法

第一步:确保全局开关已开启

  1. 进入「系统设置」页面(需要管理员权限)
  2. 找到「消息免打扰」区域
  3. 确认开关处于开启状态
  4. 如果关闭了,打开它并保存

提示:关闭全局开关后所有接口的免打扰配置暂时失效,适合调试时快速恢复全部推送。

第二步:为接口设置时间段

  1. 进入「接口管理」页面
  2. 找到要配置的接口卡片
  3. 点击卡片右上角「...」按钮,选择「消息免打扰
  4. 或者直接点击卡片下方的「消息免打扰」区域中的「未配置 / N 个时段」

第三步:填写配置

开启开关

打开「启用消息免打扰」开关后,显示时间段设置:

设置时间段

  • 每个时间段由一个开始时间和一个结束时间组成
  • 时间格式:HH:mm(24 小时制,如 22:0008:30
  • 使用时间选择器选取,也可以手动输入
  • 默认提供一个时间段(22:00 ~ 08:00
  • 最多支持 5 个时间段

支持两种时段类型

不跨天:开始时间 < 结束时间

09:00 ~ 18:00    → 白天工作时间内的消息被静默
12:00 ~ 13:30    → 午休时间静默

跨天:开始时间 > 结束时间

22:00 ~ 08:00    → 从晚上10点到次日早上8点静默(最常用)
23:30 ~ 06:00    → 深夜到清晨静默

添加更多时间段

点击底部的「添加时间段」按钮增加新的时段行。适用于需要多个不同静默区间的场景。

第四步:保存

点击底部「保存配置」按钮生效。

保存成功后,接口卡片的「消息免打扰」区域会显示当前已配置的时间段数量(如"2 个时段")。


配置示例

示例一:夜间静默(最常用)

只在晚上到第二天早上之间不接收通知,白天正常接收。

配置

  • 启用:开
  • 时间段:
    • 开始:22:00
    • 结束:08:00

效果

时间是否在免打扰时段行为
21:59正常推送 ✅
22:00静默,记录「已静默」 🤫
03:30静默,记录「已静默」 🤫
07:59静默,记录「已静默」 🤫
08:00正常推送 ✅

示例二:多段静默(夜间 + 午休)

晚上和中午两个时间段都不想被打扰。

配置

  • 启用:开
  • 时间段 1:22:00 ~ 08:00
  • 时间段 2:12:00 ~ 13:30

效果

时间是否在免打扰时段行为
10:00正常推送 ✅
12:00是(命中时段2)静默 🤫
14:00正常推送 ✅
23:00是(命中时段1)静默 🤫

示例三:仅工作日白天接收

反向思路——大部分时间静默,只在指定时段允许推送。

配置(覆盖除工作日白天的其他时间):

  • 时间段 1:18:00 ~ 09:00(下班后到上班前)
  • 时间段 2:12:00 ~ 13:00(午休)

注意:免打扰不支持按星期几区分(如"仅周末")。如果需要更复杂的规则,可以组合多个时间段来逼近目标效果。


示例四:会议期间静默

临时设置一个较短的静默窗口。

配置

  • 时间段:14:00 ~ 15:30

效果:只有下午 2 点到 3 点半之间的消息会被静默,其余时间正常推送。


时间判断规则详解

判断逻辑

系统将当前服务器时间转换为当天分钟数(0~1439),然后与每个时间段比较:

当前时间 = 14:30 → 870 分钟

时间段 A: 09:00(540) ~ 18:00(1080)
  → 540 <= 870 < 1080 → 在时段内 ✓

时间段 B: 22:00(1320) ~ 08:00(480)
  → 870 >= 1320? No. 870 < 480? No → 不在时段内 ✗

边界行为

边界情况处理方式
刚好在开始时间(如 22:00:00)在时段内,触发静默(>= start
刚好在结束时间(如 08:00:00)不在时段内,正常放行(< end
开始 = 结束(如 09:00 ~ 09:00)视为无效配置,自动跳过该时段
时间格式错误视为无效配置,自动跳过

简单记忆:包含起始时刻,不含终止时刻

时区说明

免打扰判断使用的是服务器的本地时区。如果你的服务器部署在 UTC+8 时区,那么 22:00 ~ 08:00 就是北京时间晚 10 点到次日早 8 点。


被静默时的行为

当消息处于免打扰时段内时:

对调用方的影响

  • 接口返回成功响应(不是错误)
  • 返回结果中标记 skippedDnd: true,表示该条消息已被静默
  • 调用方不会收到任何报错

对渠道的影响

  • 不会向任何渠道发送消息
  • 手机、邮件、微信等都不会收到通知

对日志的影响

  • 会创建一条推送记录,状态显示为**「已静默」(skipped_dnd)**
  • 日志中完整记录标题、正文、来源 IP、渠道信息
  • 可在「日志查询」页面查看所有被静默的消息

这是免打扰与关键词过滤的关键区别:关键词过滤直接返回错误且不留日志;免打扰则返回成功但标记为已静默,并保留完整日志供事后查阅。


与其他功能的关系

与关键词过滤的关系

消息到达 → [关键词过滤] → [更新使用时间] → [获取渠道] → [免打扰检查] → [推送]
              ↑ 先执行                                      ↑ 后执行

关键词过滤先执行,如果被拦截,消息根本走不到免打扰环节。两者是串行的,不是互斥的。

与入站配置的关系

入站配置负责格式转换(原始 JSON → 标准消息),发生在免打扰之前。免打扰检查的是转换后的最终消息内容。


日志查看

被静默的消息可以在「日志」页面找到:

  1. 进入「日志」页面
  2. 状态筛选中选择**「已静默」**
  3. 可以看到所有因免打扰而被拦截的消息记录
  4. 每条记录包含完整的标题、正文、时间和来源渠道信息

常见问题

Q:免打扰是按什么时间判断的?我的手机还是服务器?

服务器的时间判断。确保服务器的时区设置正确。

Q:为什么我设置了免打扰但还是收到了消息?

请依次排查:

  1. 全局开关是否开启:进入「系统设置」确认「消息免打扰」全局开关已打开
  2. 时间段是否正确:确认开始/结束时间的顺序和数值
  3. 当前时间确实在范围内:注意边界规则——包含起始时刻但不包含终止时刻
  4. 保存是否成功:确认点击了保存按钮且看到成功提示

Q:最多能设几个时间段?

最多 5 个。达到上限后「添加时间段」按钮会自动隐藏。

Q:免打扰期间的消息丢失了吗?

没有丢失。每条被静默的消息都会生成一条「已静默」状态的日志记录,包含完整的消息内容和元数据。你可以在日志页面查看这些被拦截的历史消息。

Q:能否只对部分渠道静默,其他渠道照常推送?

不能。免打扰是按接口设置的,对该接口绑定的所有渠道同时生效。如果你希望某个渠道始终不受影响,可以将该渠道从该接口解绑,单独创建一个不带免打扰配置的接口。

Q:修改配置后立即生效吗?

是的,保存后立即生效。不需要重启服务或重新部署。

Q:如何临时取消所有免打扰限制?

最快的方式是在「系统设置」中关闭「消息免打扰」全局开关。这样所有接口的免打扰配置都会暂时失效,且已配置的时间段不会被删除,随时可以重新打开。

基于 MIT 许可证开源