|
| 1 | +# 企业微信机器人推送工具 |
| 2 | + |
| 3 | +基于企业微信群机器人 Webhook API 封装的 Python 消息推送工具函数,支持文本消息发送、@成员提醒、全员通知等功能,适用于告警通知、日报推送、自动化运维等场景。 |
| 4 | + |
| 5 | +## 一、项目介绍 |
| 6 | + |
| 7 | +### 1.1 核心功能 |
| 8 | + |
| 9 | +- **文本消息推送**:向企业微信群发送自定义文本消息,支持多行文本、特殊字符等内容。 |
| 10 | +- **@成员提醒**:支持 @指定成员(通过手机号)或 @全体成员,确保重要消息及时触达。 |
| 11 | +- **智能错误处理**:对 API 错误(如 key 无效、消息格式错误)、网络异常等进行分类捕获,输出清晰的错误提示。 |
| 12 | +- **会话管理优化**:使用 `requests.Session` 复用连接,提升批量推送性能。 |
| 13 | +- **简洁接口设计**:仅需 4 个参数即可完成消息推送,降低集成成本。 |
| 14 | + |
| 15 | +### 1.2 适用场景 |
| 16 | + |
| 17 | +- **系统告警通知**:服务器异常、接口报错、磁盘空间不足等告警信息实时推送到运维群。 |
| 18 | +- **自动化运维**:定时任务执行结果、脚本运行日志、数据备份状态等通知。 |
| 19 | +- **业务消息提醒**:订单状态变更、用户注册通知、数据统计报表等业务消息推送。 |
| 20 | +- **CI/CD 集成**:构建成功/失败通知、部署进度提醒、代码审查消息等。 |
| 21 | +- **日报周报推送**:定时推送团队工作总结、数据分析报告等。 |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## 二、环境准备 |
| 26 | + |
| 27 | +### 2.1 依赖库 |
| 28 | + |
| 29 | +该工具基于 Python 标准库与 `requests` 库构建,依赖列表如下: |
| 30 | + |
| 31 | +| 依赖库 | 版本要求 | 用途说明 | |
| 32 | +| ---------- | --------- | ---------------------- | |
| 33 | +| `requests` | ≥ 2.20.0 | 发送 HTTP POST 请求 | |
| 34 | + |
| 35 | +### 2.2 安装依赖 |
| 36 | + |
| 37 | +通过 `pip` 安装 `requests` 库: |
| 38 | + |
| 39 | +```bash |
| 40 | +pip install requests |
| 41 | +``` |
| 42 | + |
| 43 | +--- |
| 44 | + |
| 45 | +## 三、使用说明 |
| 46 | + |
| 47 | +### 3.1 获取机器人 Webhook 地址 |
| 48 | + |
| 49 | +使用前需在企业微信群中添加机器人并获取 Webhook 地址: |
| 50 | + |
| 51 | +1. **创建群聊机器人**: |
| 52 | + - 在企业微信 PC 端或移动端打开目标群聊 |
| 53 | + - 点击右上角 `...` → `群机器人` → `添加群机器人` |
| 54 | + - 为机器人命名(如"告警机器人")并点击 `添加` |
| 55 | + |
| 56 | +2. **获取 Webhook Key**: |
| 57 | + - 添加成功后,系统会生成 Webhook 地址: |
| 58 | + ``` |
| 59 | + https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| 60 | + ``` |
| 61 | + - 其中 `key=` 后面的部分即为 `accessKey`(如 `693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa`) |
| 62 | +
|
| 63 | +3. **安全配置**(可选): |
| 64 | + - 可设置 IP 白名单、消息加密等安全策略 |
| 65 | + - 详见 [企业微信机器人配置指引](https://developer.work.weixin.qq.com/document/path/91770) |
| 66 | +
|
| 67 | +> **注意**:每个机器人每分钟最多发送 **20 条消息**,超限后会被限流。 |
| 68 | +
|
| 69 | +--- |
| 70 | +
|
| 71 | +### 3.2 函数定义 |
| 72 | +
|
| 73 | +```python |
| 74 | +def wecomrobot(push_message, accessKey, is_at_all, at_mobiles): |
| 75 | + """ |
| 76 | + 企业微信机器人推送文本消息 |
| 77 | + |
| 78 | + 参数: |
| 79 | + push_message (str): 要推送的文本消息内容 |
| 80 | + accessKey (str): 企业微信机器人的 Webhook Key |
| 81 | + is_at_all (bool): 是否 @所有人 |
| 82 | + at_mobiles (list): 要 @的成员手机号列表,默认为空列表 |
| 83 | + |
| 84 | + 返回: |
| 85 | + 无返回值,通过 print 输出推送结果 |
| 86 | + |
| 87 | + 功能说明: |
| 88 | + - 成功:打印 "信息:企业微信机器人推送成功。" |
| 89 | + - 失败:打印错误码和错误原因 |
| 90 | + - 异常:打印网络错误或响应解析错误 |
| 91 | + """ |
| 92 | +``` |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +### 3.3 参数说明 |
| 97 | + |
| 98 | +#### 必需参数 |
| 99 | + |
| 100 | +| 参数名 | 类型 | 说明 | 示例 | |
| 101 | +| :------------- |:----|:---------------------|:----------------------| |
| 102 | +| `push_message` | str | 要推送的文本消息内容 | `'服务器 CPU 使用率超过 80%'` | |
| 103 | +| `accessKey` | str | 企业微信机器人的 Webhook Key | `'xxxxxx'` | |
| 104 | +| `is_at_all` | int | 是否 @所有人(1 表示 @all) | `1` 或 `0` | |
| 105 | + |
| 106 | +#### 可选参数 |
| 107 | + |
| 108 | +| 参数名 | 类型 | 默认值 | 说明 | |
| 109 | +| :----------- | :--- |:-----| :----------------------------------------------------- | |
| 110 | +| `at_mobiles` | list | `""` | 要 @的成员手机号列表(需与企业微信绑定的手机号一致) | |
| 111 | + |
| 112 | +#### 参数组合说明 |
| 113 | + |
| 114 | +| 场景 | `is_at_all` | `at_mobiles` | 效果 | |
| 115 | +| :------------------- |:------------|:-----------------------------| :----------------------------- | |
| 116 | +| 普通消息 | `0` | `""` | 仅发送消息,不 @任何人 | |
| 117 | +| @全体成员 | `1` | `""` | 消息会 @所有人 | |
| 118 | +| @指定成员 | `0` | `"13800138000, 13900139000"` | 消息会 @这两个手机号对应的成员 | |
| 119 | +| @全体 + @指定成员 | `1` | `"13800138000"` | 消息会 @所有人,并额外 @指定成员 | |
| 120 | + |
| 121 | +--- |
0 commit comments