node-red-contrib-feishu
Version:
Node-RED节点用于发送飞书消息
282 lines (196 loc) • 10.1 kB
Markdown
# Node-RED 消息通知节点集合
这是一个Node-RED节点集合,提供多种消息通知方式,包括飞书、钉钉、企业微信、阿里云短信、腾讯云短信和电子邮件等。通过这些节点,您可以轻松地在Node-RED流程中发送各类消息通知。
## 项目背景
在现代企业环境中,消息通知是业务流程自动化的重要组成部分。然而,不同的团队和场景可能使用不同的通讯工具,导致系统集成时面临以下挑战:
- 多平台碎片化:企业内部同时使用多种通讯工具(飞书、钉钉、企业微信等)
- 开发成本高:为每个平台单独开发和维护集成代码耗时费力
- 使用门槛高:需要了解各平台API的开发人员才能实现消息推送
- 缺乏统一管理:难以集中配置和管理各类消息通知
本项目旨在解决这些问题,为Node-RED用户提供一站式的消息通知解决方案。
## 设计思路
### 模块化设计
项目采用高度模块化的设计理念,每个通知渠道(飞书、钉钉、企业微信、短信等)都是独立的节点,具有以下特点:
- **统一接口**:所有节点遵循相似的配置和使用方式,降低学习成本
- **松耦合架构**:各节点之间相互独立,可以单独安装和使用
- **可扩展性**:便于添加新的通知渠道和功能
### 配置灵活性
为了适应不同的使用场景,每个节点都支持两种配置方式:
1. **静态配置**:通过Node-RED界面配置面板设置参数
2. **动态配置**:通过消息属性在运行时动态覆盖配置
这种设计使得用户可以根据需要灵活选择配置方式,既可以简单固定使用,也可以实现复杂的动态场景。
### 错误处理
所有节点都实现了完善的错误处理机制:
- 参数验证:检查必要参数是否提供
- 异常捕获:捕获并处理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环境中,通过以下命令安装:
```bash
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**:可动态覆盖配置的消息类型
#### 示例
```javascript
// 发送纯文本消息
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**:外部流水扩展字段(可选)
#### 示例
```javascript
// 发送阿里云短信
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**:用户自定义的上下文信息(可选)
#### 示例
```javascript
// 发送腾讯云短信
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**:可动态覆盖配置的消息类型
## 注意事项
1. 所有节点在发送失败时会将错误信息输出到Node-RED的调试面板
2. 短信服务需要在相应的云服务平台开通并配置模板
3. 企业通讯工具的机器人需要在各平台管理界面创建并获取Webhook地址
4. 邮件服务可能需要在邮箱设置中开启SMTP服务并获取授权码
## 未来展望
本项目将持续发展和完善,未来计划包括:
### 功能扩展
- **更多通知渠道**:计划支持Slack、Microsoft Teams、Telegram等国际化平台
- **消息模板系统**:提供可视化的消息模板编辑和管理功能
- **定时发送**:支持预设时间发送消息,实现定时通知
- **消息队列集成**:与主流消息队列系统(如RabbitMQ、Kafka)集成,提高消息处理可靠性
- **消息历史记录**:保存和查询历史消息记录,便于追踪和审计
### 技术优化
- **性能优化**:提高大批量消息处理能力
- **安全增强**:增加消息加密和权限控制功能
- **国际化支持**:完善多语言支持,适应国际化团队需求
- **更智能的错误处理**:提供自动重试和故障转移机制
### 生态建设
- **社区贡献**:鼓励社区参与,共同完善和扩展功能
- **插件系统**:设计插件架构,使第三方开发者可以轻松扩展新的通知渠道
- **集成案例**:提供更多实际应用场景的集成案例和最佳实践
- **文档完善**:持续改进文档和教程,降低使用门槛
通过以上计划,我们希望将这个项目发展成为Node-RED生态系统中最全面、最易用的消息通知解决方案,满足从个人开发者到大型企业的各类通知需求。
## 许可证
[MIT](LICENSE)