# 消息中心 消息中心集成了一整套灵活且现代的消息分发引擎,支持多场景自动推送到外部 IM 工具。 ## 消息通道 - **企业 IM**:支持集成 **企业微信** (WeCom)、**钉钉** (DingTalk)、**飞书** (Lark)。 - **个人推送到位**:支持 **Telegram** Bot、**Bark** (支持自建)、**VoceChat** (支持自建) 以及基于 **Wpush** 的推送服务。 - **公共渠道**:标准的 **SMTP 邮件** 及 **Webhook** 回调。 ## 事件通知规则 - **多事件配置**:您可以灵活定义在哪些场景下触发通知,包括但不限于: - **任务失败**:定时任务在 Cron 触发后运行报错。 - **任务超时**:任务由于运行过长被系统中止。 - **登录安全**:检测到异地登录或多次密码错误。 - **服务下线**:Agent 节点掉线提醒。 ## 推送使用路径 白虎面板提供了两种不同层面的通知推送方式,满足从“自动报警”到“程序内自定义推送”的全场景需求。 --- ### 路径一:任务绑定通知(零代码自动化) 这是最常用的方式,用于在定时任务执行完成后,根据结果自动发送通知。 1. **入口**:在 **「定时任务」** 页面,点击任务右侧的 **「编辑」**。 2. **配置**:在弹窗底部的 **「通知配置」** 栏目中: - **选择渠道**:指定发送消息的 IM 渠道。 - **触发时机**:勾选 `成功时`、`失败时` 或 `超时时`(建议至少勾选失败和超时)。 - **附带日志**:开启后可在消息中直接预览报错日志,支持设置截取长度。 3. **生效**:保存后,该任务每次运行结束都会按设定的逻辑自动推信。 --- ### 路径二:脚本手动调用 (内置助手库 - 推荐) 白虎面板提供了一套**零配置**的内建助手库(Built-in SDK),支持 Python 和 Node.js。它会自动读取系统注入的环境变量,让您在脚本中只需一行代码即可实现通知投递。 #### 1. 环境初始化 在开始编写脚本前,您需要在终端执行以下命令,为面板管理的所有语言环境安装 `baihu` 包: ```bash baihu builtininstall ``` *该操作会将助手库安装到 mise 管理的所有版本中,确保 import 成功。* #### 2. 代码示例 ##### Python (同步调用) ```python import baihu # 内部自动通过环境变量鉴权,无需填 TOKEN 和 URL baihu.notify("任务标题", "通知正文内容") ``` ##### Node.js (异步调用) ```javascript const baihu = require('baihu'); // 极简调用,支持在 CommonJS/ESM 中使用 baihu.notify("任务标题", "通知正文内容"); ``` --- ### 路径三:其他语言/高级调用 (原始 API) 如果您使用 Shell 或其他尚未提供助手库的语言,可以通过标准 HTTP POST 请求调用。 #### 1. 快速获取代码 进入 **「消息推送」** -> **「脚本调用说明」** 标签,页面会根据您的配置自动生成包含 **通知 Token** 和 **默认渠道 ID** 的完整代码。 #### 2. 代码参考示例 ##### Shell (Curl) ```bash curl -X POST "http://localhost:8052/api/v1/notify/send" \ -H "notify-token: 您的_NOTIFY_TOKEN" \ -d '{"channel_id":"渠道ID", "title":"标题", "text":"内容"}' ``` ##### 基础 Python (requests) ```python import requests def send_notify(title, content): url = "http://localhost:8052/api/v1/notify/send" headers = { "notify-token": "您的_NOTIFY_TOKEN" } data = {"channel_id": "您的_渠道_ID", "title": title, "text": content} requests.post(url, headers=headers, json=data) ``` --- ## 消息中心管理 除了配置发送路径,您还可以在消息中心进行以下操作: - **发送记录 (审计)**:实时记录每一条通过白虎面板发送至外部的消息,方便追溯。 - **回执查询**:在 **「消息日志」** 页面查看到每条推送的详细状态,如果发送失败,会提供原始的错误响应代码以供排查。