前言¶
DSH 的很多能力来自插件:定时任务、外部工具、自定义脚本跑完后,往往还需要把结果送到 Server酱、PushPlus、Telegram Bot、飞书/Lark 机器人或自定义 Webhook。如果每个插件各自维护渠道配置、字段、测试和开关,后续维护会比较分散。
chicheng-push 把这部分能力集中到 DSH Web 设置界面:在左侧栏新增「推送插件」入口,可配置管理多个推送渠道,并通过 pushNotifier 服务与 /push/api/send HTTP 接口暴露给其他插件调用。
这是什么¶
chicheng-push 是一个 DSH 消息推送插件,由 534119219 维护,License: MIT。
它解决的是 DSH 场景下“插件完成任务后如何统一通知”的问题:在 Web 设置界面维护多个推送渠道,并提供 host 侧服务和 HTTP 接口,方便其他插件或脚本调用。
核心功能¶
设置界面¶
- 在 Web 设置界面左侧栏新增「推送插件」入口。
- 可配置管理多个推送渠道。
- 支持启用/停用、编辑、删除渠道。
- 支持对单个渠道发送测试消息。
- 支持中文 / English UI 随浏览器语言切换。
支持的渠道¶
- Server酱
- PushPlus
- Bark
- 钉钉机器人
- 企业微信群机器人
- 企业微信应用消息
- Telegram Bot
- 飞书/Lark 机器人
- ntfy
- iGot
- PushDeer
- Gotify
- 自定义 Webhook
- 邮件(SMTP)
给其他插件调用¶
插件提供两类调用方式:
- host 侧
pushNotifier服务。 /push/api/*HTTP 接口。
pushNotifier 服务提供:
push.list()
push.types()
push.send()
push.sendText()
push.test()
HTTP 接口包括:
/push/api/list
/push/api/types
/push/api/save
/push/api/remove
/push/api/toggle
/push/api/test
/push/api/send
渠道数据持久化在:
$DSH_HOME/push/channels.json
安装与启用¶
1、安装插件:
dsh plugin --profile web add chicheng-push
2、确认 profile 清单中的 dsh.profile.bundles 数组已包含 chicheng-push。如果未自动加入,手动补一行。
3、手动重启 dsh web 服务。
重启后打开:
设置 → 推送插件
典型用法¶
配置渠道¶
1、选择渠道类型。
2、填写表单字段。必填项会标 *。
3、保存。
保存后,可以对单个渠道发送一条测试消息。这是真实推送,用来验证当前渠道配置是否可用。
其他 host 插件调用¶
其他 host 插件可以通过 ctx.get('pushNotifier') 读取服务,然后调用 push.send:
const push = ctx.get("pushNotifier");
if (push) {
await push.send({
title: "任务完成",
content: "exit 0",
channels: "all",
});
}
也可以根据具体渠道调用 push.test(id) 发送测试消息,或调用 push.sendText(title, content, channels) 发送文本消息。
HTTP 接口调用¶
任意允许访问的位置都可以向 /push/api/send 发送 POST JSON 请求,例如:
curl -X POST http://127.0.0.1:3080/push/api/send \
-H "content-type: application/json" \
-d '{"title":"定时任务完成","content":"exit 0","channels":"all"}'
/push/api/* 接口有 fence 保护,仅允许同源、loopback 或受信 host 访问。
开发与测试¶
插件的 host 半为零第三方运行时依赖,HTTP 渠道使用 Node 内置 fetch。email 渠道仅在配置且可动态加载 nodemailer 时使用。
开发时注意:
- 修改
lib/index.js后需重启生效。 - 修改
lib/client.js后刷新页面即可。
运行集成测试:
node smoke.mjs
该测试包含 19 项断言,覆盖真实 HTTP 发送链路。
适用场景与注意¶
适合以下情况:
- 需要在 DSH Web 设置界面统一管理多个推送渠道。
- 其他 host 插件需要在任务完成后调用推送。
- 脚本或外部工具需要通过 HTTP 接口触发推送。
- 需要中文 / English UI,并随浏览器语言切换。
使用前需要注意:
- 插件会以当前
dsh进程权限运行。安装前建议检查源码和许可证。 - 渠道配置(含 SendKey / Token / 授权码)明文存储在
$DSH_HOME/push/channels.json,请确保该目录仅当前用户可读写。 /push/api/*接口有 fence 保护(仅同源 / loopback / 受信 host)。- 对渠道发送的测试消息是真实推送,发送前确认配置无误。
链接¶
- 目录页:https://www.skillhub.cn/plugins/534119219/chicheng-push
- GitHub:https://github.com/534119219/chicheng-push