企业微信机器人:图片和文件为什么塞不进文本接口

客服要把报价单发进会话,第一反应往往是把文件路径写进 content。文本接口按字符串投递。对端收到的是路径或一串乱码,不是可点开的附件。机器人「会发字」和「会发文件」不是同一个 method。混在一个函数里,失败时两套参数一起改,归因漂掉。

本机磁盘路径能被 Python 打开,不代表对端能下载。通道传的不是你的文件系统。

文本投递只保证字符串可见

/msg/sendTextcontent 是会话里那句字。它可以提到「报价单见附件」,它不能把附件变成气泡。图片、文件要走文档里对应的发送方法,参数形态也不同,常见要先有可被通道使用的素材,再引用。素材没准备好就调发送,回执失败会被写成「文本接口不稳定」。文本接口那天可能一直是绿的。

所以发送层要按消息类型分支。类型在入队时就定,不要到 HTTP 前再猜。猜错的结果是:任务表写了图片,实际打出去的是文本,值班以为图片已达。

文本探针仍用文档字段,用来证明节点和会话是活的,不要用来夹带文件:

python 复制代码
def enqueue(kind, guid, to_id, payload):
    if kind == "text":
        return {
            "method": "/msg/sendText",
            "params": {"guid": guid, "toId": to_id, "content": payload["text"]},
        }
    if kind in ("image", "file"):
        # method、素材字段以文档为准,不要塞进 content
        raise NotImplementedError("附件走对应发送接口,先备素材再入队")
    raise ValueError(kind)

NotImplementedError 出现在联调期是好事。它逼你去对文档,而不是把 /tmp/a.pdf 写进客户群。生产里应换成明确的拒绝码:素材未就绪、类型不支持、对象非法。拒绝码进任务表,才能和通道超时切开。

先过文本,再过一种附件

第一期只验收文本。文本不过,不要测图片。第二期只加一种附件,图片或文件选一个。两种一起上,失败会说「附件都不行」,其实可能是素材过期、会话类型错、节点掉线里的某一个。

同一工单不要连发「字 + 图 + 文件」三次而不做间隔。员工号有频率约束。附件失败禁止用文本接口重试同一文件路径。那不是降级,那是把路径泄露到客户会话。真要降级,应换成人工已审的短句,例如「文件发送失败,坐席稍后补」。

验收:文本测试句在会话里原文可见;把文件路径写入 content,对端不应出现可打开附件;按文档走附件方法后,气泡可点开且与本地文件一致。三步都记下会话类型。内部群机器人能推文本,同样证明不了客户群附件已通。

查看企业微信 API 文档:

https://doc.qiweapi.com/

相关推荐
Python 实战手记2 小时前
企业微信主体变更公证书办理全解析:适用场景、材料规范、踩坑点与Python信息校验脚本
开发语言·python·企业微信
PHP实战开发录3 小时前
企业微信客户标签同步冲突排查记录
mysql·系统安全·php·企业微信·开发
梦想的旅途219 小时前
企业微信Webhook:自动回复为什么会连发
网络·安全·企业微信
梦想的旅途21 天前
Python实现企业微信文本消息发送
开发语言·python·企业微信
星云API|微信接口开发1 天前
企业微信二次开发:基于Webhook搭建统一消息事件中心
企业微信
ITyunwei09871 天前
从 ITIL 视角量化-第三集:工单系统如何成为 ITSM 治理抓手?架构+量化
运维·网络·企业微信
星云API|微信接口开发1 天前
企业微信二次开发:外部群机器人文本消息发送实践
机器人·企业微信
极客互动API3 天前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
梦想的旅途23 天前
企业微信群公告修改修改常见问题及解决方案
企业微信