使用 Python 的 requests 库向企业微信提供的 Webhook 地址发送 POST 请求,是实现机器人发送文本消息最直接的方式,适合运维告警、业务通知等内部场景。
先说结论:不需要复杂 SDK,直接调 HTTP 接口即可,但要注意密钥管理和网络可达性。
- 适合:内部系统监控、CI/CD 流程通知、定时任务状态汇报。
- 先看:企业微信管理后台获取 Webhook 密钥,确认服务器能访问外网。
- 建议:使用环境变量管理密钥,发送后检查返回码 errcode 是否为 0,增加重试机制。
核心代码示例
import os
import requests
import time
def send_wechat_msg(content, retry=3):
key = os.environ.get('WECHAT_BOT_KEY')
if not key:
raise ValueError("未找到环境变量 WECHAT_BOT_KEY")
url = f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={key}"
data = {"msgtype": "text", "text": {"content": content}}
for i in range(retry):
try:
res = requests.post(url, json=data, timeout=5)
res_json = res.json()
if res_json.get('errcode') == 0:
print("发送成功")
return True
else:
print(f"发送失败:{res_json}")
except Exception as e:
print(f"请求异常:{e}")
if i < retry - 1:
time.sleep(1)
return False
if __name__ == "__main__":
send_wechat_msg("测试消息")实施步骤
1. 在企业微信群聊中添加机器人,复制 Webhook 地址中的 key 参数。
2. 在 Python 环境中安装依赖:
pip install requests3. 配置环境变量(Linux/Mac):
export WECHAT_BOT_KEY="your_webhook_key"4. 运行脚本,脚本会自动读取环境变量并发送消息。
怎么验证是否生效
运行脚本后,观察企业微信群聊是否收到消息。同时检查脚本打印的响应内容,官方文档规定 errcode 为 0 表示发送成功。如果收到 400 或 401 错误,通常意味着密钥错误或请求格式不对。
常见错误码
- 0:发送成功。
- 400:请求参数错误,检查 JSON 格式或内容长度。
- 401:密钥无效或过期,请重新获取 Webhook 地址。
- 415:Content-Type 错误,确保使用 application/json。
常见坑
1. 密钥泄露:Webhook 密钥相当于密码,不要提交到 Git 仓库,务必使用环境变量或配置中心管理。
2. 内容限制:官方文档限制文本内容长度不超过 2048 字节,超长会被截断或发送失败。
3. 频率限制:短时间内大量发送会触发限流,需做好重试机制。
4. 网络出口:部分内网服务器无法直接访问外网,需配置代理或白名单。
参考来源
企业微信官方文档 - 群机器人
URL: https://developer.work.weixin.qq.com/document/path/91770