当前位置: 首页 > news >正文

Node.js 实现企业内部消息通知系统(钉钉/企业微信机器人)

💬 Node.js 实现企业内部消息通知系统(钉钉/企业微信机器人)

🧩 关键词:Node.js / Webhook / 自动化通知 / 企业微信 / 钉钉机器人


🔍 一、写在前面

在企业内部系统中,我们经常需要自动推送各种消息:

  • 系统监控报警(CPU过高、接口异常)
  • 每日报表通知(销售日报、库存统计)
  • 审批结果提醒(订单通过、发货完成)

以前这些消息都要人工发送,现在我们用 Node.js + 企业微信机器人(Webhook) 就能轻松搞定。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

👉 核心目标:
让 Node.js 脚本能自动向钉钉或企业微信发送结构化消息(文本、卡片、Markdown等)。


🧠 二、系统架构思路

整个系统逻辑非常简单👇

┌─────────────────────┐
│    数据源 / 系统事件   │
│  (监控 / 日报 / API) │
└──────────┬──────────┘│▼
┌─────────────────────┐
│ Node.js 通知脚本      │
│ - 组装消息内容        │
│ - 调用 Webhook 接口    │
└──────────┬──────────┘│▼
┌─────────────────────┐
│ 企业微信 / 钉钉机器人   │
│ - 接收消息并展示         │
└─────────────────────┘

⚙️ 三、环境准备

1️⃣ 创建企业微信机器人

  1. 进入 企业微信 → 应用管理 → 群机器人
  2. 添加一个机器人,复制生成的 Webhook地址

示例地址:

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx-xxxxxx

💻 四、Node.js 代码实战

创建一个项目:

mkdir wechat-bot-demo
cd wechat-bot-demo
npm init -y
npm install axios

创建文件 notify.js

const axios = require('axios');// 你的企业微信机器人 Webhook 地址
const WEBHOOK_URL = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx-xxxxxx';// 封装一个发送函数
async function sendMessage(content) {try {const res = await axios.post(WEBHOOK_URL, {msgtype: 'markdown',markdown: {content: content}});console.log('✅ 消息发送成功:', res.data);} catch (error) {console.error('❌ 消息发送失败:', error);}
}// 示例:推送日报
const today = new Date().toLocaleDateString();
const markdown = `
**📊 每日报告通知**
> 日期:${today}
> 销售额:¥123,450  
> 新增客户:32  
> 异常订单:<font color="warning">3</font>  [查看详细报表](https://yourdomain.com/report)
`;sendMessage(markdown);

运行脚本:

node notify.js

👉 群里会收到一条漂亮的 Markdown 卡片消息。


🔁 五、进阶应用场景

1️⃣ 自动推送系统监控结果

function getSystemHealth() {return {cpu: 85,memory: 72};
}const sys = getSystemHealth();
const content = `
**⚠️ 系统告警**
CPU使用率:${sys.cpu}%
内存使用率:${sys.memory}%
> 请尽快检查服务器状态!
`;sendMessage(content);

可以搭配 cron 实现定时检测与通知

crontab -e
*/30 * * * * node /home/app/notify.js

2️⃣ 推送日报自动化

将数据从数据库读取并发送:

const mysql = require('mysql2/promise');async function getDailyReport() {const conn = await mysql.createConnection({host: 'localhost', user: 'root', database: 'sales'});const [rows] = await conn.execute('SELECT COUNT(*) as orders, SUM(amount) as total FROM orders WHERE DATE(created_at)=CURDATE()');return rows[0];
}async function sendDailyReport() {const data = await getDailyReport();const msg = `**📅 销售日报**> 订单数:${data.orders}  > 销售额:¥${data.total}  `;sendMessage(msg);
}sendDailyReport();

🧩 六、支持钉钉版本

钉钉机器人调用方式基本一致,只需更换 Webhook 地址:

const WEBHOOK_URL = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxx';await axios.post(WEBHOOK_URL, {msgtype: 'markdown',markdown: {title: '系统通知',text: '### 🚀 钉钉机器人消息测试\n> 一切正常 ✅'}
});

🔒 七、安全与配置建议

风险建议措施
Webhook 泄露放在服务器端环境变量,不要写死在前端
消息频繁加入防抖机制或限频逻辑
内容过长Markdown消息有字数限制(2000字内)

🧭 八、结语

自动化通知是企业信息流转的关键一步。
用简单的 Node.js 脚本,你就能让系统自动发出提醒、日报、监控告警,
从被动汇报变为主动通知,真正实现“信息到人”。


🏭 九、业务实战案例:自动推送库存预警通知

企业日常中,库存管理是最容易被忽视但又最关键的部分。
很多公司使用 ERP 或 WMS 系统记录库存,当某个商品库存低于安全线时,需要及时通知采购或仓库人员。
过去都是人工导出表格、手动通知,现在我们让系统自动监测库存并推送企业微信消息👇


🎯 业务目标

当数据库中某个商品库存低于安全库存时,
系统自动检测到并推送通知到企业微信群。

触发条件通知内容
库存 < 安全线“⚠️ 库存告警:产品XXX 当前库存仅剩5件”

🧩 系统流程

┌────────────────────────────┐
│     MySQL库存数据表         │
│  product(id, name, stock, min_stock) │
└──────────────┬────────────┘│ 定时任务检查库存▼
┌────────────────────────────┐
│   Node.js 脚本             │
│  - 查询低库存商品          │
│  - 拼接告警消息 Markdown   │
│  - 调用 Webhook 接口发送   │
└──────────────┬────────────┘▼
┌────────────────────────────┐
│ 企业微信机器人              │
│ 自动推送消息至群组           │
└────────────────────────────┘

💻 实战代码实现

1️⃣ 数据库设计(MySQL)

CREATE TABLE products (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),stock INT,min_stock INT
);INSERT INTO products (name, stock, min_stock) VALUES
('试剂盒A', 8, 10),
('酶标板B', 22, 15),
('离心管C', 4, 10);

2️⃣ Node.js 实现库存检测与消息推送

安装依赖:

npm install mysql2 axios

创建文件 inventory_alert.js

const mysql = require('mysql2/promise');
const axios = require('axios');const WEBHOOK_URL = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx-xxxxxx';// 连接数据库
async function getLowStockProducts() {const conn = await mysql.createConnection({host: 'localhost',user: 'root',password: '123456',database: 'warehouse'});const [rows] = await conn.execute('SELECT name, stock, min_stock FROM products WHERE stock < min_stock');return rows;
}// 发送企业微信消息
async function sendAlert(products) {if (products.length === 0) {console.log('✅ 库存正常,无需告警。');return;}let markdown = '**⚠️ 库存告警通知**\n\n';products.forEach(p => {markdown += `> ${p.name}:剩余 <font color="warning">${p.stock}</font> 件(最低安全库存 ${p.min_stock})\n`;});markdown += `\n[点击查看库存详情](https://yourdomain.com/inventory)`;await axios.post(WEBHOOK_URL, {msgtype: 'markdown',markdown: { content: markdown }});console.log('🚨 已发送库存告警消息');
}// 主流程
async function main() {const lowStocks = await getLowStockProducts();await sendAlert(lowStocks);
}main();

3️⃣ 定时运行(实现自动化)

在服务器上添加定时任务(crontab):

crontab -e

添加任务,每小时执行一次库存检测:

0 * * * * /usr/local/bin/node /home/app/inventory_alert.js >> /home/app/logs/inventory.log 2>&1

📲 效果演示

运行脚本后,企业微信群自动收到消息:

⚠️ 库存告警通知
试剂盒A:剩余 8 件(最低安全库存 10)
离心管C:剩余 4 件(最低安全库存 10)

点击查看库存详情

自动化通知


🧠 技术要点总结

模块技术说明
数据源MySQL存储库存与安全线
检测逻辑Node.js + 定时任务定时检查低库存
通知推送企业微信机器人Markdown 消息卡片
可扩展性支持钉钉 / 邮件 / Slack仅替换 Webhook 接口即可

🚀 拓展方向

  • ✅ 添加“采购自动下单”功能
  • ✅ 集成 Elasticsearch 实时监控库存变化
  • ✅ 结合 Grafana 展示库存趋势

http://www.dtcms.com/a/572859.html

相关文章:

  • 赤峰建设局网站wordpress主题制作工具
  • 告别混乱文本:基于深度学习的 PDF 与复杂版式文档信息抽取
  • 嵌入式Linux C语言程序设计五
  • 笔记:现代操作系统:原理与实现(8)
  • HashiCorp Vault 镜像拉取与 Docker 部署全指南
  • Oracle数据库常用视图:dba_datapump_jobs
  • WordPress wpForo Forum插件漏洞CVE-2025-11740复现
  • JAVA115回顾:Leecode 两数之和、无重复字符的最长字串、翻转二叉树、 最长公共前缀
  • 机器学习 大数据情境下blending-示例
  • 企业网站制作模板深圳坪山最新消息
  • Java进阶之多线程
  • idea2025版本设置springboot加载热部署
  • 合肥电子商务开发网站建设手机html5网站开发
  • 高速摄像机、科学相机赋能燃烧与多相流研究
  • 扣子大数据节点说明
  • Opencv图像畸变校正---个人学习笔记(待完善版)
  • Java设计模式精讲---02抽象工厂模式
  • 【ChatGPT系列】ChatGPT Atlas:未来浏览器的智慧体验
  • AWS实现S3配置私钥以及上传
  • C++ opencv拟合直线
  • TDengine IDMP 1.0.5.0 及近期更新总览:模型计算、可视化、异常检测全面升级
  • Melotopia For HarmonyOS 的 HAP 签名安装包在 DevEco Studio 中安装的详细步骤
  • 网页遇到ddos网络攻击,应该如何应对
  • LlamaFactory微调效果与vllm部署效果不一致
  • 国外营销网站求一个旅游网站的代码
  • Opencv(八) :ROI 切割
  • 计算机网络自顶向下方法34——网络层 排队论 缓存大小调节 分组调度 网络中立性
  • 网站怎么做适配南通网站建设培训
  • 本地缓存与分布式缓存:深入解析与多级缓存架构实践
  • 【C语言实战(73)】深入C语言网络编程:UDP与TCP的实战对决