无侵入式通知集成:Qinglong平台通过Webhook实现VoceChat消息推送
你是否还在为定时任务执行状态无法及时获知而困扰?当重要脚本执行失败时,是否希望立即收到通知?本文将介绍如何在Qinglong定时任务管理平台中通过Webhook实现VoceChat通知集成,让你随时随地掌握任务动态。读完本文,你将获得:
- 理解Qinglong通知系统架构
- 掌握Webhook自定义通知配置方法
- 实现VoceChat消息推送的完整步骤
- 常见问题排查与解决方案
通知系统架构概览
Qinglong作为支持Python3、JavaScript、Shell、Typescript的定时任务管理平台,提供了灵活的通知机制。其通知系统核心实现位于back/services/notify.ts,采用了策略模式设计,通过modeMap维护不同通知渠道的实现:
private modeMap = new Map([
['gotify', this.gotify],
['goCqHttpBot', this.goCqHttpBot],
['serverChan', this.serverChan],
// ... 其他内置通知渠道
['webhook', this.webhook], // Webhook通知模式
]);
系统默认提供了二十多种通知渠道,但当需要集成如VoceChat这样的新兴通讯工具时,Webhook模式成为最佳选择。
Webhook通知原理与优势
Webhook本质是一种HTTP回调机制,允许应用程序在特定事件发生时主动向预设的URL发送HTTP请求。在Qinglong中,Webhook通知模块实现于back/services/notify.ts,其核心优势在于:
- 无侵入性:无需修改平台源码即可扩展新通知渠道
- 灵活性高:支持自定义请求方法、 headers 和请求体
- 适配广泛:可对接任何支持HTTP API的服务
Webhook通知的工作流程如下:
实现VoceChat通知的步骤
步骤1:获取VoceChat Webhook URL
在VoceChat中创建机器人并获取Webhook URL,格式通常为: https://your-vocechat-domain/api/v1/chat/webhook/{hook_id}
步骤2:配置Qinglong Webhook参数
- 登录Qinglong管理界面,进入系统设置 -> 通知设置
- 选择通知方式为Webhook
- 填写以下配置项:
| 参数名称 | 配置值 | 说明 |
|---|---|---|
| Webhook URL | https://your-vocechat-domain/api/v1/chat/webhook/{hook_id}?title=$title&content=$content | VoceChat的Webhook地址,包含$title和$content占位符 |
| 请求方法 | POST | VoceChat通常接受POST请求 |
| Content-Type | application/json | 发送JSON格式数据 |
| 请求头 | Authorization: Bearer your_token | 根据VoceChat要求配置认证信息 |
| 请求体 | {"text":"[$title] $content"} | 定义消息格式,使用$title和$content占位符 |
配置界面位置对应前端代码:src/pages/setting/notification.tsx
步骤3:编写参数替换逻辑
Qinglong的Webhook模块会自动替换请求中的$title和$content占位符,实现代码位于back/services/notify.ts:
const body = parseBody(webhookBody, webhookContentType, (v) =>
v?.replaceAll('$title', this.title)?.replaceAll('$content', this.content),
);
步骤4:测试通知配置
- 创建一个测试脚本sample/ql_sample.js:
console.log("测试VoceChat通知");
- 设置定时任务并手动触发执行
- 检查VoceChat频道是否收到通知消息
- 若未收到,查看通知日志:src/pages/log/index.tsx
高级配置:自定义消息格式
VoceChat支持富文本消息,通过自定义Webhook请求体可以实现更丰富的通知样式:
{
"title": "$title",
"content": "$content",
"color": "#4CAF50",
"timestamp": true
}
其中:
$title:任务通知标题(如"脚本执行成功")$content:任务详细信息(如脚本名称、执行时间、结果)
常见问题与解决方案
问题1:通知发送失败
排查步骤:
- 检查Webhook URL是否正确:确保包含
$title和$content占位符 - 验证请求方法和Content-Type设置
- 查看系统日志:src/pages/log/index.tsx
解决方案: 确保URL格式正确,参考back/services/notify.ts的参数校验逻辑:
if (!webhookUrl?.includes('$title') && !webhookBody?.includes('$title')) {
throw new Error('Url 或者 Body 中必须包含 $title');
}
问题2:VoceChat接收不到消息
可能原因:
- VoceChat服务未开启Webhook功能
- 网络限制阻止了Qinglong服务器的出站请求
- 请求格式不符合VoceChat API要求
解决方案:
- 验证VoceChat Webhook URL可访问性:
curl -X POST "https://your-vocechat-domain/api/v1/chat/webhook/{hook_id}" \
-H "Content-Type: application/json" \
-d '{"text":"测试消息"}'
- 检查Qinglong服务器网络连接:
# 在Qinglong服务器执行
wget https://your-vocechat-domain/api/v1/chat/webhook/{hook_id}
总结与扩展应用
通过Webhook实现VoceChat通知集成,不仅解决了即时消息推送问题,更为Qinglong平台与其他系统集成提供了通用方案。这种方法可进一步扩展到:
- 与企业内部系统集成,如OA、CRM
- 对接DevOps工具链,如Jenkins、GitLab
- 连接AI服务,实现智能通知摘要
Qinglong的Webhook模块设计为开发者提供了无限可能,只需发挥想象力,就能将定时任务管理平台与更多服务连接起来,构建属于自己的自动化生态系统。
本文配置的所有参数均可在sample/config.sample.sh中找到对应环境变量,便于Docker部署时直接配置。
希望本文能帮助你更好地利用Qinglong的通知系统,如有任何问题或优化建议,欢迎在项目仓库提交Issue或PR。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



