企业微信机器人怎么自动发消息?Python 调 sendText 接口 3 步搞定
给客户推送订单状态、给项目群发巡检告警,是企业微信机器人最常见的两类需求。这篇把"一条文本消息怎么发出去"拆成三步:准备凭证、确定发送目标、调用 sendText,最后补上几个容易踩的坑。
背景痛点
企微后台自带的群发功能,覆盖不了业务系统里"事件驱动发消息"的场景:订单状态变了要通知对应客户,监控告警要按条件发到指定群,这类需求只能走接口。
很多文章到这里就结束了。实际接入时,新手多半卡在两个问题上:conversationId 到底填什么,以及为什么接口返回成功、手机上却看不到消息。如果还没做过控制台收发测试,建议先按Eyun 企微 API 快速开始把凭证和登录这一步走完,再看下文。
原理
所谓企业微信机器人,本质上是一个保持在线的企微账号实例,业务系统通过 API 指挥它收发消息。调用模型很直白:每个能力一个路径,全部 POST + JSON,请求头用 Bearer 调用凭证鉴权,请求体里的 appid 决定这次调用作用在哪个实例上。
一条文本消息,就是"凭证 + appid + 会话 ID + 内容"四个要素。
核心实现
先跑通最小请求(示例代码,需按官方文档校验):
curl -X POST "{BASE_URL}/api/message/sendText" \
-H "Authorization: Bearer <你的调用凭证>" \
-H "Content-Type: application/json" \
-d '{
"appid": "<你的实例 ID>",
"conversationId": 1688850000000001,
"content": "您的订单已发货,预计明天送达"
}'
完整参数和失败码见Eyun 发送文本消息接口页。curl 验证通过后,Python 侧封装一个函数就够用:
import requests
def send_text(appid, conversation_id, content):
# 示例代码,需按官方文档校验
resp = requests.post(
f"{BASE_URL}/api/message/sendText",
headers={"Authorization": f"Bearer {CREDENTIAL}"},
json={"appid": appid, "conversationId": conversation_id,
"content": content},
timeout=10,
)
data = resp.json()
if data.get("code") != 0:
raise RuntimeError(f"发送失败:{data.get('message')}")
return data["data"]
踩坑
一、conversationId 是 JSON number,不能加引号。单聊填对方的 userId,群聊填 roomId;给自己发时填本账号的 uin,从个人信息接口取,不要照抄文档里的示例 ID。
二、code 等于 0 只表示接口受理成功。经接口发出的消息不会回推正文到 Webhook,只会推一条 2001 已读回执,所以验收要用手机客户端真机看一眼,别拿 Webhook 有没有收到来判断。
三、conversationId 这类 ID 是 int64,超过 JavaScript 的安全整数范围。后端用 Python、Java 问题不大,前端或 Node 服务要专门处理,下篇单独展开。
总结
三步收个尾:控制台领凭证扫码登录、用个人信息接口确认发送目标、封装 sendText 加上错误处理。这套示例基于 Eyun 平台的企微接口整理,参数细节以官方文档为准,调用失败先查错误码表再改代码,能少走不少弯路。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)