+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

Message Nest - 打造个性化消息推送平台,整合邮件、钉钉、企业微信、自定义webhook等多种通知方式

Message Nest 是一个灵活而强大的消息推送整合平台,旨在简化并自定义多种消息通知方式。 项目名叫信息巢,意思是一个拥有各种渠道信息方式的集合站点。 如果你有很多消息推送方式,每次都需要调用各种接口去发送消息到各个渠道,或者不同的项目你都需要复制同样的发消息代码,这个项目可以帮你管理各种消息方式,并提供统一的发送api接入。你可以自由组合各种消息渠道,一个api推送到各种渠道,帮你省去接入的繁琐步骤。 特色 ✨ 🔄 整合性: 提供了多种消息推送方式,包括邮件、钉钉、企业微信等,方便你集中管理和定制通知。 🎨 自定义性: 可以根据需求定制消息推送策略,满足不同场景的个性化需求。 🛠 开放性: 易于扩展和集成新的消息通知服务,以适应未来的变化。 进度 🔨 项目还在不断更新中,欢迎大家提出各种建议。 关于日志,考虑到目前多数服务以收集控制台输出为主,暂时不支持写出日志文件。 2024.01.28 支持docker部署,从环境变量启动服务 2024.01.24 支持数据统计展示 2024.01.20 添加日志查看自动刷新 2024.01.07 支持站点信息自定义 2024.01.03 支持企业微信 单应用打包,直接运行,不用部署前端页面 支持邮件发送 用户密码设置 支持用户定时任务清理,更新定时时间 查看定时清理日志 单应用的html浏览器自动缓存 gin的日志使用logrus 支持异步发送 支持邮件发送 支持钉钉 支持自定义的webhook消息发送 企业微信 .... 项目来由 💡 自己常常写一些脚本需要消息推送,经常需要接入不同的消息发送,很不方便,于是就有了这个项目。 效果图 📺 使用方法 🚀 1. 直接运行最新的release打包的可执行文件(推荐,不用部署前端页面🍀🍀) 2. 前后端分离部署(待更新) 3. 开发调试运行 4. docker/docker-compose部署(推荐🍀🍀🍀) 关于EmbedHtml配置的说明 这个配置可以理解为单应用模式(或者前后端分离)的开关 取消这个配置的注释,表示前后端分离,表示go服务启动的时候只会有api服务,需要到web目录下,npm run dev启动前端项目。然后访问前端项目提示的端口服务,一般是127.0.0.1:5173。 或者使用npm run build,用Nginx部署前端。 注释这个配置,表示单应用,启动go服务,会把web/dist目录下文件作为前端静态资源。 如果目录下没有静态资源文件,需要到web目录下,npm run build构建生成。 两种方式各有优缺点,综合考虑下来,推荐直接使用release的打包执行文件(或者docker环境变量进行部署),其中已经内置了页面静态资源,只用运行一个服务。 关于InitData配置的说明 从功能上开启InitData=enable是使用gorm的model进行migrate表字段更改,是将代码中的定义的表结构自动完成sql语句进行表结构的维护。 为什么这么设计,不直接使用完成的建表sql?我想了很久,我觉得migrate目前能够满足现在的需求,而且不用手动维护sql的变动。 为什么初始化要单独加一个配置开关InitData=enable,而不是使用一个标识进行判断? 目前现在确实只需要判断是否初始化标识就可以满足,但是后面如果项目更新添加了新字段, 就不再适用了。也就是说这个配置设计上既可以完成初始化,也可以完成的后面的字段升级。 我一直指定InitData=enable运行项目有没影响,会不会数据错、丢失? 不会。一直指定InitData=enable,只是每次服务启动多一步会检查, 检查表字段变动。并且只是新增的表字段会进行添加,已经存在的字段不会进行变更,所以不用担心数据问题。 只要初始化指定InitData=enable进行了初始化,后续如果项目不升级,后面指不指定InitData=enable都没关系。 完整配置说明 ⚙️ 点击展开 [app] JwtSecret = message-nest ; 暂时无用 RuntimeRootPath = runtime/ LogLevel = INFO ; init table data, first run set enable ; 首次运行打开这个,会自动初始化表和数据 ; 项目升级需要打开这个进行检测新增表字段创建 InitData = enable [server] ; debug or release ; debug模式下会自动添加跨域headers RunMode = release HttpPort = 8000 ReadTimeout = 60 WriteTimeout = 60 ; use embed html static file ; 是否使用embed打包的静态资源 ; 如果运行release打包后的应用,请注释这个设置。 ; 如果取消这个注释,只会单独运行api服务,前端页面需要到web目录手动npm run dev, 运行前端服务 ; EmbedHtml = disable [database] Type = mysql User = root Password = password Host = 123.1.1.1 Name = db_name Port = 3306 ; 表前缀 TablePrefix = message_ ; 是否打开sql打印 ; SqlDebug = enable
你可能想看的