1.0.0 • Published 4 months ago

node-red-contrib-feishu v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

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环境中,通过以下命令安装:

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:可动态覆盖配置的消息类型

注意事项

  1. 所有节点在发送失败时会将错误信息输出到Node-RED的调试面板
  2. 短信服务需要在相应的云服务平台开通并配置模板
  3. 企业通讯工具的机器人需要在各平台管理界面创建并获取Webhook地址
  4. 邮件服务可能需要在邮箱设置中开启SMTP服务并获取授权码

未来展望

本项目将持续发展和完善,未来计划包括:

功能扩展

  • 更多通知渠道:计划支持Slack、Microsoft Teams、Telegram等国际化平台
  • 消息模板系统:提供可视化的消息模板编辑和管理功能
  • 定时发送:支持预设时间发送消息,实现定时通知
  • 消息队列集成:与主流消息队列系统(如RabbitMQ、Kafka)集成,提高消息处理可靠性
  • 消息历史记录:保存和查询历史消息记录,便于追踪和审计

技术优化

  • 性能优化:提高大批量消息处理能力
  • 安全增强:增加消息加密和权限控制功能
  • 国际化支持:完善多语言支持,适应国际化团队需求
  • 更智能的错误处理:提供自动重试和故障转移机制

生态建设

  • 社区贡献:鼓励社区参与,共同完善和扩展功能
  • 插件系统:设计插件架构,使第三方开发者可以轻松扩展新的通知渠道
  • 集成案例:提供更多实际应用场景的集成案例和最佳实践
  • 文档完善:持续改进文档和教程,降低使用门槛

通过以上计划,我们希望将这个项目发展成为Node-RED生态系统中最全面、最易用的消息通知解决方案,满足从个人开发者到大型企业的各类通知需求。

许可证

MIT