企业微信怎么发图片和文件?文本接口发不了附件怎么办

/msg/sendText 的 content 是纯字符串。把图片 URL 或本地路径写进去,对端收到的仍是文本,不会出现缩略图,也不能点开下载文件。

附件要拆成两条链路:

  1. 上传素材,拿到文件 ID / 图片 ID
  2. 调用对应消息类型的发送接口,toId 填 userId 或 roomId

消息类型不要混用

接口职责 可发送 不能当它用
发文本 通知、单号、话术 图片二进制、文件二进制
发图片 jpg / png 等图片 pdf、xlsx(应走文件)
发文件 pdf、xlsx、docx、zip 想当长图预览的截图

私聊和客户群只是 toId 不同,消息类型选择规则一样。

两段式调用

统一入口:

http 复制代码
POST /api/qw/doApi
Content-Type: application/json
X-QIWEI-TOKEN: YOUR_TOKEN

第一步:确认文本通道可用

python 复制代码
import requests

API = "http://manager.qiweapi.com/qiwe/api/qw/doApi"
HEADERS = {
    "X-QIWEI-TOKEN": "YOUR_TOKEN",
    "Content-Type": "application/json",
}

def send_text(guid, to_id, content):
    r = requests.post(API, headers=HEADERS, json={
        "method": "/msg/sendText",
        "params": {
            "guid": guid,
            "toId": to_id,
            "content": content,
            "isNoNeedRead": True,
        }
    }, timeout=30)
    body = r.json()
    assert body.get("code") == 0, body
    return body

文本都失败,说明 Token、guid 或登录态有问题,不要继续传附件。

第二步:换方法名发图片 / 文件

python 复制代码
def send_image(guid, to_id, image_id):
    return requests.post(API, headers=HEADERS, json={
        "method": "/msg/sendImage",   # 以实际消息模块方法名为准
        "params": {
            "guid": guid,
            "toId": to_id,
            "imageId": image_id,
        }
    }, timeout=60).json()

def send_file(guid, to_id, file_id):
    return requests.post(API, headers=HEADERS, json={
        "method": "/msg/sendFile",    # 以实际消息模块方法名为准
        "params": {
            "guid": guid,
            "toId": to_id,
            "fileId": file_id,
        }
    }, timeout=60).json()

imageId / fileId 必须来自上传接口的返回值,不要手写本地路径。上传接口的字段名以素材模块为准,顺序固定为:本地文件 → 上传 → 发送。

能用 QiWe API 时,三种发送都走同一个 doApi,只改 method 和 params,登录态不用变。

联调顺序

  1. 发给自己的 userId 一张小 jpg(< 200KB)
  2. 发给测试群 roomId 同一张图
  3. 再发一个小 xlsx / pdf
  4. 最后把「查询到附件 → 上传 → 发送」接到业务代码

每一步都判断:

python 复制代码
if result.get("code") != 0 or not result.get("data", {}).get("isSendSuccess"):
    raise RuntimeError(result)

失败原因对照

现象 原因
对端只看到一串 http 链接 误用了 /msg/sendText
提示素材不存在 未上传,或上传返回的 ID 没传对
图片发出去打不开 扩展名和真实格式不一致
文件发送超时 体积过大,先压测上限再发正式文件
群里没收到、私聊收到了 toId 填成了 userId

不要在一次请求里混传图片和文件。图片、视频、文件通常是不同 method。

总结

发附件不是给文本接口加一个 URL 字段。

先保证 /msg/sendText 通,再上传素材,最后用发图片 / 发文件的 method 把 ID 发给 userId 或 roomId。私聊和客户群验收都通过,这条链路才算接完。

相关推荐
喵喵匠1 天前
一份 Markdown 发十个平台:cspub 一稿多投
自动化·markdown·效率工具·仓颉·cli工具
米糕闯编程1 天前
鱼香ros2(二十五)导航
机器人·slam·ros2·launch·navigation2
小杨爱科普1 天前
制造业上自动化改造,改造部分的专利到底归谁
运维·经验分享·自动化
yurenshi16681 天前
多平台内容发布的工程化实践:模板、校验与排期自动化(2026)
自动化·矩阵运营·内容发布
猫先生Mr.Mao2 天前
RoboRSI详解:机器人自进化为什么需要任务结构和技能边界
机器人·多智能体·论文解读·具身智能·自进化·roborsi
敢敢のwings2 天前
RPV-SemNav 深度解析:让机器人先理解房间,再决定去哪里找目标
机器人
东莞市壹星自动化设备有限公司2 天前
透明圆瓶内部特征怎样定位:折射追踪与近远相位分支
嵌入式硬件·自动化·需求分析·几何学·骨骼绑定
BioTender2 天前
Xaira 发布 X-Automate:将物理 AI 与智能体 AI 引入实验室自动化
运维·人工智能·自动化
好悬给我拽开线2 天前
RoboJEPA:扩展机器人潜在世界模型
机器人
天远API3 天前
零信任架构实战:基于天远运营商三要素详版V即时版构建自动化消费电子大促电商平台高价值权益秒杀与优惠券防羊毛高并发实名核验网关
运维·人工智能·架构·自动化