UNPKG

node-red-contrib-feishu

Version:

Node-RED节点用于发送飞书消息

282 lines (196 loc) 10.1 kB
# 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)