前言¶
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