一键构建消息推送平台

在企业日常开发中,随着告警、通知和定时提醒等消息的增多,需要发送的消息也越来越多。然而,常见的消息软件如微信、飞书和钉钉在接入方面使用不同的API,这就需要花费大量时间和精力去查阅文档进行对接。为了解决这个问题,我们的messenger应用着重于提供一种简化接入流程的解决方案。

01 开源工具

messenger是一个简单轻量的消息发送服务,目前支持邮件、微信、飞书、钉钉,同时支持配置动态修改,使用简单灵活。

messenger提供了统一的接口,使得您无需关心不同消息软件的API差异和文档查阅,您可以通过messenger的API快速发送告警、通知和定时提醒等各种消息,极大地简化了开发过程。

开源地址:

github.com/veops/ops-t...

02 快速上手

1. 启动服务

messenger部署非常简单,支持源码和docker启动,下面我们使用最简单的源码方式启动为例。因ops-tools是个工具集合,所以你只需要关注messenger目录即可。

bash 复制代码
git clone https://github.com/veops/ops-tools.gitcd ops-tools/messengercp confTemplate.yaml conf.yamlsh build.sh./messenger

支持动态修改配置文件,所以不需要一开始就配置好sender,上述操作中我们仅拷贝了一份配置模板而已,我们还需修改具体的配置。

2. 平台对接

各种IM软件的应用和机器人接入流程均比较相似,这里我们演示一个钉钉机器人的配置。

1. 在群设置中选择机器人,添加一个自定义机器人

一般顺序为 群设置->添加机器人->自定义。

2.配置机器人

配置机器人名称,安全设置选择加签并复制(后续配置的token),点击完成。

复制webhook地址地址。

3.配置messenger

将上一步骤中获取的token和webhook地址配置到messenger的conf.yaml中的dingdingBot下,由于conf的senders下内容修改后无需重启服务,直接生效。

yaml 复制代码
app:  ip:  port: 8888
senders:  - type: dingdingBot    name: dingdingBot # 名称随意填写,发送时sender填写该名称即可    url: https://oapi.dingding.com/robot/send?access_token=xxxx # 第二步复制的webhook    token: # 第二步复制的加签token

4 .发送

03 深入一下

鉴权

默认可以不使用鉴权,即配置中的auths的内容注释掉即可,如果需要有鉴权功能,目前支持IP、token、sign三种鉴权方式

1 . IP

发送请求的客户端ip需匹配pattern

bash 复制代码
auths:  - type: ip    pattern: 192.168.*.*
  1. token

发送请求中需要添加请求头 X-Token = xxxxxx

bash 复制代码
auths:  - type: token    token: xxxxxx
  1. sign

签名鉴权需要添加请求头 X-TS = 当前unix秒数时间戳 X-Nonce = 随机内容 X-Sign = 根据签名算法生成的签名,详细的生成算法可以参考仓库的说明文档。

matlab 复制代码
auths:  - type: sign    secret: yyyyyy

多种发送方式

发送方式在senders里面配置,支持动态修改,无需重启服务,目前支持主流的消息类型。

wechatBot dingdingAppsenders email
wechatApp feishuBot
dingdingBot feishuApp

自定义发送方式

通常情况下,以上7中方式能满足大部分需求,但是如果你想要定制自己的sender,可以按如下步骤进行开发。

  1. 在send目录下创建你的sender文件,如mysender.go

  2. 定义mysender类并实现sender接口

scss 复制代码
typesenderinterface{    send(*message) error    getConf() map[string]string}
  1. 新增init方法,将sender注册到后台goroutine中,registered的关键字mysender即为新的sender类型,可以在配置文件中使用,建议将文件名、结构体名、类型名保持一致。
go 复制代码
func init(){    registered["mysender"] = func(conf map[string]string) sender {    return &feishuBot{conf: conf}   }}

04 结语

以上即为我们messenger的使用介绍,如果您在企业日常开发中需要频繁发送消息,不妨试试messenger,相信它会给您带来便利和效益。

开源地址(github.com/veops/ops-t...%25E3%2580%2582 "https://github.com/veops/ops-tools)%E3%80%82")

相关推荐
怕浪猫6 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
miofly8 小时前
Aleph Alpha 开源 78B 参数 MoE 模型 Kolibri
开源·github
JackSparrow4149 小时前
和AI一起将全部CSDN博文迁移到个人博客站
人工智能·程序人生·ai·github·cloudflare·astro·静态博客
resh_people12 小时前
开源鸿蒙平台 KMP_CMP 三方库「Kermit」适配全流程
华为·开源·harmonyos
长弓三石13 小时前
用纯 Java 做一个企业级 Agent Harness 平台:BizBuddy 的设计与取舍
开源·agent·ai编程
不悔哥13 小时前
开源RDK-B:国外光猫和路由器里面跑的系统
开源
CoderJia程序员甲17 小时前
GitHub 热榜项目 - 周榜(2026-10-03)
ai·大模型·llm·github·ai教程
miofly17 小时前
GitHub 今日推荐|lipflow:无麦克风唇读文字输入工具
python·开源·github
寺中人17 小时前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具
用户43014522630617 小时前
# 向量库没装好,RAG 检索还能不能用——从 AI工厂管家社区版的三级降级链说起先把结论摆前面:**RAG 做降级本身不难,难的是降级的时候不返回“看着像那么
开源