爱游一直使用的企业微信应用号做推送服务,也是自建的,当时因为某些场景需要用到,就使用php做了中转。
前段时间才发现这个推送服务,比我自己写的高大上太多太多了。
Message-Pusher 是一款多功能消息推送服务,支持多种推送方式,包括邮件、微信、QQ、企业微信、飞书、钉钉、Bark App、WebSocket、Telegram、Discord 和腾讯云自定义告警。它支持自定义 Webhook、Markdown、异步消息发送、用户管理、Cloudflare Turnstile 用户校验、公告发布和 API 兼容性。可以通过 Docker 或手动部署,并提供详细的部署教程。
原版在接收到推送时排版有点乱,主要是换行的问题,爱游稍微修改了下。
爱游修改开源地址:https://github.com/vipxkw/message-pusher
以下以爱游打包的docker镜像。
//arm架构 docker run -d \ --name message-pusher \ -p 3000:3000 \ -v /DATA/AppData/message-pusher:/data \ -e tz=asia/shanghai \ vipiu/message-pusher:arm0.4.14 \ //amd架构 docker run -d \ --name message-pusher \ -p 3000:3000 \ -v /DATA/AppData/message-pusher:/data \ -e tz=asia/shanghai \ vipiu/message-pusher:amd0.4.14 \
原作者开源地址:https://github.com/songquanpeng/message-pusher
整合进自己的博客系统,每当有人登录时发微信消息提醒。
在进行深度学习模型训练时,在每个 epoch 结束后将关键数据发送到微信以方便及时监控。
在各种脚本运行结束后发消息提醒,例如监控 GitHub Star 数量的脚本,又例如自动健康填报的脚本,用来通知运行结果。
为其他系统提供消息推送功能。
- 多种消息推送方式:邮件消息,
微信测试号,
QQ,
企业微信应用号,
企业微信群机器人
飞书自建应用
飞书群机器人,
钉钉群机器人,
Bark App,
WebSocket 客户端(官方客户端,接入文档),
Telegram 机器人,
Discord 群机器人,
腾讯云自定义告警:免费的短信提醒,
群组消息:可以将多个推送通道组合成一个群组,然后向群组发送消息,可以实现一次性推送到多个渠道的功能,
自定义消息:可以自定义消息请求 URL 和请求体格式,实现与其他服务的对接,支持众多第三方服务 - 支持自定义 Webhook,反向适配各种调用平台,你可以接入各种已有的系统,而无需修改其代码。
- 支持在 Web 端编辑 & 管理发送的消息,新消息发送后 Web 端即时刷新。
- 支持异步消息发送。
- 支持用户管理,支持多种用户登录注册方式:邮箱登录注册以及通过邮箱进行密码重置。
- GitHub 开放授权。
- 微信公众号授权(需要额外部署 WeChat Server)。
- 支持 Markdown。
- 支持 Cloudflare Turnstile 用户校验。
- 支持在线发布公告,设置关于界面以及页脚。
- API 兼容其他消息推送服务,例如 Server 酱。
系统本身仅需要下载一个可执行文件即可开始使用,无其他依赖。
你可以通过设置环境变量或者命令行参数进行配置。
等到系统启动后,使用 root 用户登录系统并做进一步的配置,默认密码为 123456。
消息推送 API URL:https://<domain>/push/<username>将上面的 <domain> 以及 <username> 替换为真实值,例如:https://push.mydomain.cn/push/admin
GET 请求方式:https://<domain>/push/<username>?title=<标题>&description=<描述>&content=<Markdown 文本>&channel=<推送方式>&token=<推送 token>title:选填,受限于具体的消息推送方式,其可能被忽略。
description:必填,可以替换为 desp。
content:选填,受限于具体的消息推送方式,Markdown 语法的支持有所区别。
channel:选填,如果不填则系统使用你在后台设置的默认推送通道。注意,此处填的是消息通道的名称,而非类型。可选的推送通道类型有:email:通过发送邮件的方式进行推送(使用 title 或 description 字段设置邮件主题,使用 content 字段设置正文,支持完整的 Markdown 语法)。
test:通过微信测试号进行推送(使用 description 字段设置模板消息内容,不支持 Markdown)。
corp_app:通过企业微信应用号进行推送(仅当使用企业微信 APP 时,如果设置了 content 字段,title 和 description 字段会被忽略;使用微信中的企业微信插件时正常)。
lark_app:通过飞书自建应用进行推送。
corp:通过企业微信群机器人推送(设置 content 字段则将渲染 Markdown 消息,支持 Markdown 的子集;设置 description 字段则为普通文本消息)。
lark:通过飞书群机器人进行推送(注意事项同上)。
ding:通过钉钉群机器人进行推送(注意事项同上)。
bark:通过 Bark 进行推送(支持 title 和 description 字段)。
client:通过 WebSocket 客户端进行推送(支持 title 和 description 字段)。
telegram:通过 Telegram 机器人进行推送(description 或 content 字段二选一,支持 Markdown 的子集)。
discord:通过 Discord 群机器人进行推送(注意事项同上)。
one_api:通过 OneAPI 协议推送消息到 QQ。
group:通过预先配置的消息推送通道群组进行推送。
custom:通过预先配置好的自定义推送通道进行推送。
tencent_alarm:通过腾讯云监控告警进行推送,仅支持 description 字段。
none:仅保存到数据库,不做推送。
token:如果你在后台设置了推送 token,则此项必填。另外可以通过设置 HTTP Authorization 头部设置此项。注意令牌有两种,一种是全局鉴权令牌,一种是通道维度的令牌,前者可以鉴权任何通道,后者只能鉴权指定通道。
url:选填,如果不填则系统自动为消息生成 URL,其内容为消息详情。
to:选填,推送给指定用户,如果不填则默认推送给自己,受限于具体的消息推送方式,有些推送方式不支持此项。@all:推送给所有用户。
user1|user2|user3:推送给多个用户,用户之间使用 | 分隔。
async:选填,如果设置为 true 则消息推送将在后台异步进行,返回结果包含 uuid 字段,可用于后续[获取消息发送状态](./docs/API.md#通过消息 UUID 获取消息发送状态)。
render_mode:选填,如果设置为 code,则消息体会被自动嵌套在代码块中进行渲染;
如果设置为 raw,则不进行 Markdown 解析;
默认 markdown,即进行 Markdown 解析。
POST 请求方式:字段与上面 GET 请求方式保持一致。如果发送的是 JSON,HTTP Header Content-Type 请务必设置为 application/json,否则一律按 Form 处理。
POST 请求方式下的 token 字段也可以通过 URL 查询参数进行设置。
请先 !