消息免打扰使用指南
什么是消息免打扰?
消息免打扰允许你为接口(Endpoint)设置静默时间段。在设定的时间段内,推送到该接口的消息不会被发送到任何渠道,但推送记录仍会正常保存。
简单来说:让消息在特定时段安静下来,不打扰你休息或工作。
典型使用场景
| 场景 | 说明 |
|---|---|
| 夜间静默 | 深夜 22:00 到次日 08:00 不接收通知 |
| 午休时间 | 中午 12:00-13:30 不推送 |
| 工作专注 | 上班时间不接收非紧急告警 |
| 周末模式 | 特定时间段只保留关键通知 |
工作原理
在消息流程中的位置
外部请求 → 关键词过滤 → 更新时间 → 获取渠道列表
↓
遍历每个渠道:
├─ 免打扰检查 ← 在这里判断
│ ├─ 在时段内 → 记录日志(状态: 已静默),跳过发送
│ └─ 不在时段 → 继续正常推送
├─ 创建推送日志
├─ 发送到渠道
└─ 更新日志状态核心特点
| 特性 | 说明 |
|---|---|
| 按接口配置 | 每个接口可以设置不同的免打扰时间 |
| 按渠道逐一判断 | 如果一个接口绑定了多个渠道,每个渠道独立判断是否在免打扰时段 |
| 记录保留 | 被静默的消息不会发送,但会生成一条已静默的推送记录,可在日志中查看 |
| 服务端时间 | 以服务器当前时间为准进行判断 |
全局开关与接口配置
消息免打扰功能有两层控制:
第一层:全局开关(管理员)
位置:「系统设置」页面 →「消息免打扰」开关
- 只有管理员可以看到和操作此开关
- 全局关闭时,所有接口的免打扰配置都不生效
- 全局开启时,各接口的免打扰配置才生效
这相当于一个总闸。关闭后即使各接口配了时间段也会照常推送。
第二层:接口级别配置
位置:「接口管理」→ 接口卡片 →「消息免打扰」或下拉菜单选择「消息免打扰」
- 为单个接口设置具体的时间段
- 需要全局开关开启才生效
配置方法
第一步:确保全局开关已开启
- 进入「系统设置」页面(需要管理员权限)
- 找到「消息免打扰」区域
- 确认开关处于开启状态
- 如果关闭了,打开它并保存
提示:关闭全局开关后所有接口的免打扰配置暂时失效,适合调试时快速恢复全部推送。
第二步:为接口设置时间段
- 进入「接口管理」页面
- 找到要配置的接口卡片
- 点击卡片右上角「...」按钮,选择「消息免打扰」
- 或者直接点击卡片下方的「消息免打扰」区域中的「未配置 / N 个时段」
第三步:填写配置
开启开关
打开「启用消息免打扰」开关后,显示时间段设置:
设置时间段
- 每个时间段由一个开始时间和一个结束时间组成
- 时间格式:
HH:mm(24 小时制,如22:00、08: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 → 标准消息),发生在免打扰之前。免打扰检查的是转换后的最终消息内容。
日志查看
被静默的消息可以在「日志」页面找到:
- 进入「日志」页面
- 状态筛选中选择**「已静默」**
- 可以看到所有因免打扰而被拦截的消息记录
- 每条记录包含完整的标题、正文、时间和来源渠道信息
常见问题
Q:免打扰是按什么时间判断的?我的手机还是服务器?
按服务器的时间判断。确保服务器的时区设置正确。
Q:为什么我设置了免打扰但还是收到了消息?
请依次排查:
- 全局开关是否开启:进入「系统设置」确认「消息免打扰」全局开关已打开
- 时间段是否正确:确认开始/结束时间的顺序和数值
- 当前时间确实在范围内:注意边界规则——包含起始时刻但不包含终止时刻
- 保存是否成功:确认点击了保存按钮且看到成功提示
Q:最多能设几个时间段?
最多 5 个。达到上限后「添加时间段」按钮会自动隐藏。
Q:免打扰期间的消息丢失了吗?
没有丢失。每条被静默的消息都会生成一条「已静默」状态的日志记录,包含完整的消息内容和元数据。你可以在日志页面查看这些被拦截的历史消息。
Q:能否只对部分渠道静默,其他渠道照常推送?
不能。免打扰是按接口设置的,对该接口绑定的所有渠道同时生效。如果你希望某个渠道始终不受影响,可以将该渠道从该接口解绑,单独创建一个不带免打扰配置的接口。
Q:修改配置后立即生效吗?
是的,保存后立即生效。不需要重启服务或重新部署。
Q:如何临时取消所有免打扰限制?
最快的方式是在「系统设置」中关闭「消息免打扰」全局开关。这样所有接口的免打扰配置都会暂时失效,且已配置的时间段不会被删除,随时可以重新打开。