☰
企业微信API接口教程:如何实现文本、图片、文件消息统一发送
2026/10/14 19:38:09 网站建设 项目流程

发消息的接口不止一个,文本、图片、文件走的接口不一样,参数也不一样。业务侧调用时如果每种类型自己拼参数,代码会散得到处都是。我们做了一个统一的发送入口,上层只传类型和内容,路由和参数拼装交给发送层。

发送层封装的是Eyun 平台开放的企微 API,凭证在Eyun 平台首页开通,消息走 message 模块,媒体走 cdn 模块。

统一入口的分发

上层调用只有一个方法:send(appid, to, type, payload)。发送层按 type 路由到对应接口,把 payload 转成该接口的参数格式。

def send(appid, to, msg_type, payload): if msg_type == "text": return post("message/sendText", {"appid": appid, "to": to, "content": payload["content"]}) if msg_type == "image": media_id = upload_media(appid, payload["path"]) # cdn/upload return post("message/sendImage", {"appid": appid, "to": to, "mediaId": media_id}) if msg_type == "file": media_id = upload_media(appid, payload["path"]) return post("message/sendFile", {"appid": appid, "to": to, "mediaId": media_id, "filename": payload["filename"]})

接口字段在开发文档里有完整说明。

三种类型的差异

文本走 message/sendText,参数是 content。图片先 cdn/upload 拿 mediaId,再调 message/sendImage。文件先上传,再调 message/sendFile,需要带 filename。媒体类的共同点是上传和发送分两步,mediaId 有效期有限,上传后要尽快发。

参数校验

文本校验长度,图片校验格式和大小,文件校验大小和扩展名。校验集中在发送层做,不通过直接抛参数异常,不浪费一次接口调用。

媒体上传复用

同一张图片发给多个客户时,上传一次拿到的 mediaId 可以复用,不必每次重传。发送层加一层缓存,按文件内容哈希做 key,缓存到有效期前。

批量混合发送

一次要发多条不同类型时,按顺序串行发,别并发——并发发同一客户的消息可能乱序。发送层统一串行,上层不用管。

结果归一

三种接口的返回结构不同,发送层统一归一成{success, msgId, error}。上层只判断 success,不用关心发送的是哪种类型。

结尾

统一发送入口的好处是上层代码不感知消息类型。加一种新类型(比如语音、视频),只改发送层的路由和校验,所有调用方不用动。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询