三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

企业微信推送消息到微信免费方案:Wecom酱搭建与使用全攻略

企业微信推送消息到微信免费方案:Wecom酱搭建与使用全攻略

企业微信推送消息到微信免费方案:Wecom酱搭建与使用全攻略

【免费下载链接】wecomchan微信推送服务Server酱的开源替代。通过企业微信向微信推送消息的配置文档、直推函数和可自行搭建的在线服务代码。项目地址: https://gitcode.com/gh_mirrors/we/wecomchan

你是不是也遇到过这样的场景:服务器报警只能发邮件、监控通知要装一堆 App、想给自己微信发条定时提醒却找不到趁手工具?Wecom酱(wecomchan)就是为这类需求而生的开源项目——它通过企业微信向微信推送消息,一次配置即可长期使用,无需安装企业微信客户端,而且完全开源免费,是微信推送服务 Server酱 的开源替代方案。

为什么你需要一条"企业微信到微信"的免费推送通道

传统通知方式各有各的别扭:

  • 邮件通知:时效性差,容易被丢进垃圾箱
  • 短信推送:按条收费,成本居高不下
  • 专用 App:装机成本高,只为收个通知不值当

而企业微信有一个隐藏能力:应用消息可以同步到个人微信。Wecom酱 恰好把这套官方接口封装成了人人可用的推送函数,让你用最少的成本把消息送到自己(或团队成员)的微信上。

它的核心价值只有一句话:配置一次,长期使用;只要微信在手,通知随时收。

一条推送的完整链路:消息是怎么"穿越"到微信的

整个推送过程只有三步,逻辑并不复杂:

  1. 你的脚本携带企业 ID、应用 ID、应用 Secret,向企业微信接口换取access_token
  2. access_token调用消息发送接口,把内容投递给企业应用
  3. 企业微信将消息转发到绑定过的个人微信(通过"微信插件"关注实现)

Wecom酱 做的就是把这套 OpenAPI 流程打包成几十行的直推函数,你只需要填三个参数即可。

五套推送函数任选:PHP、Python、Go、TypeScript、.NET Core 全覆盖

项目不绑定任何技术栈,官方仓库直接给出了多语言实现,选择障碍者福音:

语言特点参考位置
PHP含 Redis 缓存 token 的在线服务完整示例index.php
Python文本/图片/Markdown 三类函数齐全各云函数目录
Go支持 Docker 容器化与多架构镜像go-wecomchan/
TypeScript异步实现,适合 Node 生态README 内附代码
.NET Core基于 RestSharp,适合 .NET 团队dotNetCore.cs

所有函数的参数设计高度统一:文本内容、企业ID、应用ID、应用Secret,换语言几乎零学习成本。

十分钟上手:企业微信推送消息的六步配置流程

在写任何代码之前,先完成企业微信侧的准备工作。整个过程在电脑浏览器里操作即可。

第一步:注册一个企业打开企业微信官网注册账号即可,个人用途用微信就能注册,无需认证。

第二步:创建自建应用进入「管理企业」→「应用管理」→「自建」→「创建应用」,填写应用名称、上传 logo、选择可见范围。创建后进入应用详情页,记下应用 ID(agentid)和应用 Secret(secret)。

注意:secret推送到手机端时只能在「企业微信客户端」中查看。

第三步:配置可信 IP2022 年 6 月 20 日之后创建的应用,需要在应用详情页最下方的「开发者接口」中配置「企业可信IP」。如果你用云函数这类共享 IP 服务,记得先开启「固定公网IP」,否则可能报"第三方服务IP"错误。

第四步:获取企业 ID进入「我的企业」页面,拉到最底部即可看到企业 ID(corpid),复制备用。推送目标默认填@all,即发给企业全员。

第五步:绑定微信插件进入「我的企业」→「微信插件」,扫描二维码关注。这是消息能否到达个人微信的关键一步。

第六步:发送测试消息完成上述配置后,调用下方任意语言的函数即可完成企业微信推送消息测试。

第一行代码:四种语言发送你的第一条推送

PHP 版

function send_to_wecom($text, $wecom_cid, $wecom_aid, $wecom_secret, $wecom_touid = '@all') { $info = @json_decode(file_get_contents("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=".urlencode($wecom_cid)."&corpsecret=".urlencode($wecom_secret)), true); if ($info && isset($info['access_token']) && strlen($info['access_token']) > 0) { $access_token = $info['access_token']; $url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.urlencode($access_token); $data = new \stdClass(); $data->touser = $wecom_touid; $data->agentid = $wecom_aid; $data->msgtype = "text"; $data->text = ["content"=> $text]; $data->duplicate_check_interval = 600; // ... 省略 curl 发送部分 } return false; }

Python 版(同时支持文本、图片、Markdown)

ret = send_to_wecom("推送测试\r\n测试换行", "企业ID", "应用ID", "应用secret") print(ret) ret = send_to_wecom('<a href="https://www.example.com/">文本中支持超链接</a>', "企业ID", "应用ID", "应用secret") ret = send_to_wecom_image("此处填写图片Base64", "企业ID", "应用ID", "应用secret") ret = send_to_wecom_markdown("**Markdown 内容**", "企业ID", "应用ID", "应用secret")

Go / Docker 部署版:推荐直接用现成镜像,不依赖 Golang 环境。

docker run -dit -e SENDKEY=set_a_sendkey \ -e WECOM_CID=企业微信公司ID \ -e WECOM_SECRET=企业微信应用Secret \ -e WECOM_AID=企业微信应用ID \ -e WECOM_TOUID="@all" \ -p 8080:8080 go-wecomchan

部署完成后通过 URL 调用:http://localhost:8080/wecomchan?sendkey=你的sendkey&msg=你的消息&msg_type=text

从函数到服务:把推送能力封装成 HTTP 接口

直推函数适合低频调用,但如果要对接监控系统、定时任务,更推荐搭一个在线服务。项目根目录的index.php就是一个开箱即用的服务端示例,具备两个关键设计:

  • sendkey 鉴权:请求必须携带你预设的密钥,避免接口被陌生人滥用
  • Redis 缓存 token:可选开启,减少重复换取 access_token,降低调用成本

访问方式同样简单:http://你的域名/?sendkey=你设定的sendkey&text=要发送的内容

云服务器与容器:两种主流部署路线怎么选

部署方式适用人群成本复杂度
PHP 版在线服务已有 Web 服务器约等于零低,改配置传文件即可
Go 版容器镜像熟悉 Docker 的团队服务器费用中,支持 docker-compose 一键起
云函数版想省事、免运维极低/免费额度低,传 zip 改变量

Go 版环境变量一览(不启用 Redis 可省略最后三项):

变量说明
SENDKEY调用接口时校验的密钥
WECOM_CID企业微信公司 ID
WECOM_SECRET企业微信应用 Secret
WECOM_AID企业微信应用 ID
WECOM_TOUID默认推送对象,填@all
REDIS_STAT是否用 Redis 缓存 token,ON/OFF
REDIS_ADDR / REDIS_PASSWORDRedis 地址与密码

云函数部署实战:阿里云四步截图带你看完

不想买服务器?云函数按调用计费、几乎免费,是最省心的路线。以下以阿里云函数计算为例(完整步骤见python-aliyunfc/目录)。

第一步:创建服务进入函数计算控制台,点击「创建服务」,服务名称随意。

第二步:填写服务信息按提示填写名称与描述后提交。

第三步:创建函数运行环境选 Python3,内存规格 128MB,触发方式选 HTTP 请求。

第四步:上传代码并修改变量选择「上传 zip 包」(使用仓库内main-code.zip),用网页编辑器把index.py中的 sendkey、企业 ID、Secret、应用 ID 替换为你的配置,点击部署即可。

调用方式:向函数公网地址 POST 一段 JSON:

{"key":"123", "msg": "Hello, World!"} {"key":"123", "type": "markdown", "msg": "**Markdown Here!**"}

更多云平台:百度、华为、腾讯怎么选

  • 百度智能云 CFC:流程与阿里云基本一致(参考python-baiduCFC/),额外支持uid字段定向推送指定成员,格式如zhangsan|lisi|wangwu
  • 华为云函数工作流:Python 3.9 环境,把python-huaweiFG/main.py的内容粘贴到 index.py 中,配置 APIG 触发器即可,目前主要通过 URL 参数传值
  • 腾讯云 SCF:Go 编译版单文件上传,通过 6 个环境变量配置(见go-scf/)。需要提醒的是,腾讯云函数自 2022 年 5 月 23 日起取消免费额度,最低 9.9 元/月,官方已不推荐

三个能立刻落地的典型使用场景

场景一:服务器与爬虫监控告警把推送接口接到监控脚本里,磁盘告警、服务宕机、爬虫异常都能第一时间弹到微信,比盯邮件高效得多。

场景二:团队协作消息同步构建流水线跑完、工单有新进展、值班安排有变动……用一条脚本向全员@all推送,信息同步零延迟。

场景三:个人生活提醒服务待办事项、生日提醒、天气预报,配合云函数的定时触发器,等于白嫖一个免安装 App 的"私人助理"。

排雷清单:新手最容易踩的五个坑

  1. 微信收不到消息:检查「微信插件」页是否勾选"允许成员在微信插件中接收和回复聊天消息",并在企业微信客户端「设置→新消息通知」中关闭"仅在企业微信中接收消息"
  2. 报"第三方服务IP"错误:云函数场景务必开启固定公网 IP,并把该 IP 加入企业可信 IP 列表
  3. secret 找不到:应用 Secret 只能在企业微信客户端中查看
  4. GET 传长消息报错:消息体过长时改用 POST + JSON 请求(Go 2.1 起支持)
  5. 重复收到相同消息:请求中已内置duplicate_check_interval = 600去重间隔,无需重复发明轮子

让推送更稳更省:性能与安全建议

  • 合理缓存 access_token:token 有效期约两小时,低频个人使用直取即可;高并发场景建议启用 Redis 缓存,仓库内 PHP/Go 两个版本都提供了示例
  • 固定 sendkey 并保管好:它是你接口的唯一门禁,泄露等于别人能替你发消息
  • 按需定向推送:发给全员用@all,定向通知用to_user/uid指定成员,避免打扰
  • 优先选择低维护平台:个人用途推荐云函数,量大再考虑容器化部署

写在最后:把微信变成你的统一通知中心

回到最初的问题——企业微信推送消息这件事,Wecom酱 给出了近乎完美的答案:开源免费、多语言覆盖、主流云平台适配、还有现成的在线服务代码。无论是做系统监控、团队通知还是个人提醒,clone 一份仓库到本地(git clone https://gitcode.com/gh_mirrors/we/wecomchan),按本文的六步配置完成企业微信推送消息的准备工作,再挑一段代码粘贴运行,你的第一条微信推送很快就能弹出在手机屏幕上。

【免费下载链接】wecomchan微信推送服务Server酱的开源替代。通过企业微信向微信推送消息的配置文档、直推函数和可自行搭建的在线服务代码。项目地址: https://gitcode.com/gh_mirrors/we/wecomchan

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表