1.0.0 • Published 4 months ago
node-red-contrib-feishu v1.0.0
Node-RED 消息通知节点集合
这是一个Node-RED节点集合,提供多种消息通知方式,包括飞书、钉钉、企业微信、阿里云短信、腾讯云短信和电子邮件等。通过这些节点,您可以轻松地在Node-RED流程中发送各类消息通知。
项目背景
在现代企业环境中,消息通知是业务流程自动化的重要组成部分。然而,不同的团队和场景可能使用不同的通讯工具,导致系统集成时面临以下挑战:
- 多平台碎片化:企业内部同时使用多种通讯工具(飞书、钉钉、企业微信等)
- 开发成本高:为每个平台单独开发和维护集成代码耗时费力
- 使用门槛高:需要了解各平台API的开发人员才能实现消息推送
- 缺乏统一管理:难以集中配置和管理各类消息通知
本项目旨在解决这些问题,为Node-RED用户提供一站式的消息通知解决方案。
设计思路
模块化设计
项目采用高度模块化的设计理念,每个通知渠道(飞书、钉钉、企业微信、短信等)都是独立的节点,具有以下特点:
- 统一接口:所有节点遵循相似的配置和使用方式,降低学习成本
- 松耦合架构:各节点之间相互独立,可以单独安装和使用
- 可扩展性:便于添加新的通知渠道和功能
配置灵活性
为了适应不同的使用场景,每个节点都支持两种配置方式:
- 静态配置:通过Node-RED界面配置面板设置参数
- 动态配置:通过消息属性在运行时动态覆盖配置
这种设计使得用户可以根据需要灵活选择配置方式,既可以简单固定使用,也可以实现复杂的动态场景。
错误处理
所有节点都实现了完善的错误处理机制:
- 参数验证:检查必要参数是否提供
- 异常捕获:捕获并处理API调用过程中的异常
- 状态反馈:通过节点状态和调试输出提供清晰的错误信息
项目结构
├── feishu.js # 飞书消息节点实现
├── feishu.html # 飞书节点配置界面
├── dingtalk.js # 钉钉消息节点实现
├── dingtalk.html # 钉钉节点配置界面
├── wecom.js # 企业微信群机器人节点实现
├── wecom.html # 企业微信群机器人节点配置界面
├── wecom-app.js # 企业微信应用消息节点实现
├── wecom-app.html # 企业微信应用消息节点配置界面
├── aliyun-sms.js # 阿里云短信节点实现
├── aliyun-sms.html # 阿里云短信节点配置界面
├── tencent-sms.js # 腾讯云短信节点实现
├── tencent-sms.html # 腾讯云短信节点配置界面
├── email.js # 电子邮件节点实现
├── email.html # 电子邮件节点配置界面
└── package.json # 项目配置和依赖管理
每个功能模块通常包含两个文件:
.js
文件:包含节点的业务逻辑实现.html
文件:定义节点在Node-RED编辑器中的配置界面和帮助信息
功能特点
- 多平台支持:支持飞书、钉钉、企业微信等主流企业通讯工具
- 短信服务:集成阿里云短信和腾讯云短信服务
- 邮件发送:支持HTML和纯文本格式的电子邮件发送
- 灵活配置:所有节点均支持通过配置面板或消息属性动态设置参数
- 丰富的消息格式:支持文本、Markdown、富文本等多种消息格式
- 统一错误处理:所有节点采用一致的错误处理机制,提供清晰的状态反馈
- 低代码实现:无需编写代码,通过拖拽和配置即可实现复杂的消息通知流程
- 可视化管理:在Node-RED流程中直观地管理和监控消息发送状态
安装
在Node-RED环境中,通过以下命令安装:
npm install node-red-contrib-feishu
或者在Node-RED界面中,通过「管理面板」→「安装」搜索并安装 node-red-contrib-feishu
。
节点说明
飞书消息节点
用于向飞书机器人发送消息通知。
配置
- 名称:节点显示名称(可选)
- Webhook URL:飞书机器人的Webhook地址(必填)
- 消息类型:支持text(纯文本)和rich_text(富文本)
输入
- msg.payload:消息内容
- msg.title:消息标题(仅富文本消息有效)
- msg.webhookUrl:可动态覆盖配置的Webhook URL
- msg.messageType:可动态覆盖配置的消息类型
示例
// 发送纯文本消息
msg.payload = "这是一条测试消息";
return msg;
// 发送富文本消息
msg.messageType = "rich_text";
msg.title = "通知标题";
msg.payload = "这是一条**富文本**消息";
return msg;
钉钉消息节点
用于向钉钉机器人发送消息通知。
配置
- 名称:节点显示名称(可选)
- Access Token:钉钉机器人的访问令牌(必填)
- 加签密钥:钉钉机器人的安全设置密钥(可选)
- 消息类型:支持text(纯文本)和markdown(Markdown格式)
输入
- msg.payload:消息内容
- msg.title:Markdown消息的标题
- msg.accessToken:可动态覆盖配置的Access Token
- msg.secret:可动态覆盖配置的加签密钥
- msg.messageType:可动态覆盖配置的消息类型
企业微信消息节点
用于向企业微信机器人发送消息通知。
配置
- 名称:节点显示名称(可选)
- Webhook URL:企业微信机器人的Webhook地址(必填)
- 消息类型:支持text(纯文本)和markdown(Markdown格式)
输入
- msg.payload:消息内容
- msg.webhookUrl:可动态覆盖配置的Webhook URL
- msg.messageType:可动态覆盖配置的消息类型
阿里云短信节点
用于通过阿里云短信服务发送短信。
配置
- 阿里云配置:选择或创建阿里云SMS配置节点
- 签名名称:短信签名名称
- 模板代码:短信模板ID
阿里云SMS配置节点
- AccessKey ID:阿里云访问密钥ID
- AccessKey Secret:阿里云访问密钥密码
- 接入点:阿里云SMS服务接入点,默认为
dysmsapi.aliyuncs.com
输入
- msg.phoneNumber:接收短信的手机号码,可以是单个号码或号码数组
- msg.templateParam:模板参数,JSON对象或字符串
- msg.smsUpExtendCode:上行短信扩展码(可选)
- msg.outId:外部流水扩展字段(可选)
示例
// 发送阿里云短信
msg.phoneNumber = "13800138000";
msg.templateParam = {code: "123456", product: "测试产品"};
return msg;
腾讯云短信节点
用于通过腾讯云短信服务发送短信。
配置
- 名称:节点显示名称(可选)
- Secret ID:腾讯云访问密钥ID
- Secret Key:腾讯云访问密钥密码
- 地区:腾讯云区域,默认为
ap-guangzhou
- 应用ID:短信应用ID
- 签名:短信签名
- 模板ID:默认短信模板ID
输入
- msg.phoneNumber:接收短信的手机号码,可以是单个号码或号码数组
- msg.templateParams:模板参数,数组或对象
- msg.templateId:可动态覆盖配置的模板ID
- msg.sessionContext:用户自定义的上下文信息(可选)
示例
// 发送腾讯云短信
msg.phoneNumber = "13800138000";
msg.templateParams = ["123456", "5"];
return msg;
电子邮件节点
用于发送电子邮件。
配置
- 名称:节点显示名称(可选)
- 邮件配置:选择或创建邮件配置节点
- 收件人:默认收件人邮箱地址
- 主题:默认邮件主题
- 消息类型:支持text(纯文本)和html(HTML格式)
邮件配置节点
- SMTP服务器:邮件服务器地址
- 端口:SMTP服务器端口
- 安全连接:是否使用SSL/TLS
- 用户名:SMTP服务器用户名
- 密码:SMTP服务器密码
输入
- msg.payload:邮件内容
- msg.to:可动态覆盖配置的收件人
- msg.subject:可动态覆盖配置的邮件主题
- msg.messageType:可动态覆盖配置的消息类型
注意事项
- 所有节点在发送失败时会将错误信息输出到Node-RED的调试面板
- 短信服务需要在相应的云服务平台开通并配置模板
- 企业通讯工具的机器人需要在各平台管理界面创建并获取Webhook地址
- 邮件服务可能需要在邮箱设置中开启SMTP服务并获取授权码
未来展望
本项目将持续发展和完善,未来计划包括:
功能扩展
- 更多通知渠道:计划支持Slack、Microsoft Teams、Telegram等国际化平台
- 消息模板系统:提供可视化的消息模板编辑和管理功能
- 定时发送:支持预设时间发送消息,实现定时通知
- 消息队列集成:与主流消息队列系统(如RabbitMQ、Kafka)集成,提高消息处理可靠性
- 消息历史记录:保存和查询历史消息记录,便于追踪和审计
技术优化
- 性能优化:提高大批量消息处理能力
- 安全增强:增加消息加密和权限控制功能
- 国际化支持:完善多语言支持,适应国际化团队需求
- 更智能的错误处理:提供自动重试和故障转移机制
生态建设
- 社区贡献:鼓励社区参与,共同完善和扩展功能
- 插件系统:设计插件架构,使第三方开发者可以轻松扩展新的通知渠道
- 集成案例:提供更多实际应用场景的集成案例和最佳实践
- 文档完善:持续改进文档和教程,降低使用门槛
通过以上计划,我们希望将这个项目发展成为Node-RED生态系统中最全面、最易用的消息通知解决方案,满足从个人开发者到大型企业的各类通知需求。
许可证
1.0.0
4 months ago