无侵入式通知集成:Qinglong平台通过Webhook实现VoceChat消息推送

无侵入式通知集成:Qinglong平台通过Webhook实现VoceChat消息推送

【免费下载链接】qinglong 支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript) 【免费下载链接】qinglong 项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong

你是否还在为定时任务执行状态无法及时获知而困扰?当重要脚本执行失败时,是否希望立即收到通知?本文将介绍如何在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通知的工作流程如下: mermaid

实现VoceChat通知的步骤

步骤1:获取VoceChat Webhook URL

在VoceChat中创建机器人并获取Webhook URL,格式通常为: https://your-vocechat-domain/api/v1/chat/webhook/{hook_id}

步骤2:配置Qinglong Webhook参数

  1. 登录Qinglong管理界面,进入系统设置 -> 通知设置
  2. 选择通知方式为Webhook
  3. 填写以下配置项:
参数名称配置值说明
Webhook URLhttps://your-vocechat-domain/api/v1/chat/webhook/{hook_id}?title=$title&content=$contentVoceChat的Webhook地址,包含$title和$content占位符
请求方法POSTVoceChat通常接受POST请求
Content-Typeapplication/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:测试通知配置

  1. 创建一个测试脚本sample/ql_sample.js
console.log("测试VoceChat通知");
  1. 设置定时任务并手动触发执行
  2. 检查VoceChat频道是否收到通知消息
  3. 若未收到,查看通知日志:src/pages/log/index.tsx

高级配置:自定义消息格式

VoceChat支持富文本消息,通过自定义Webhook请求体可以实现更丰富的通知样式:

{
  "title": "$title",
  "content": "$content",
  "color": "#4CAF50",
  "timestamp": true
}

其中:

  • $title:任务通知标题(如"脚本执行成功")
  • $content:任务详细信息(如脚本名称、执行时间、结果)

常见问题与解决方案

问题1:通知发送失败

排查步骤

  1. 检查Webhook URL是否正确:确保包含$title$content占位符
  2. 验证请求方法和Content-Type设置
  3. 查看系统日志: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要求

解决方案

  1. 验证VoceChat Webhook URL可访问性:
curl -X POST "https://your-vocechat-domain/api/v1/chat/webhook/{hook_id}" \
  -H "Content-Type: application/json" \
  -d '{"text":"测试消息"}'
  1. 检查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。

【免费下载链接】qinglong 支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript) 【免费下载链接】qinglong 项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值