个人微信API怎么发图片和文件消息?客服自动发资料单,3类接口讲透
自动回复文字只是入门。真实客服场景里,客户要的是报价单 PDF、产品图册、活动链接——发不出来,机器人就只是个复读机。
这篇把图片、文件、链接三类消息的发送方式和坑讲清楚,接口参数我逐个对照 Eyun 的个人微信 API 文档确认过,代码是示例,用前按文档校验。
三类消息的接口选择
| 消息类型 | 接口 | 典型场景 |
|---|---|---|
| 图片 | sendImage2 | 产品图册、收款码 |
| 文件 | sendFile / sendFileBase64 | 报价单、合同 PDF |
| 链接 | sendUrl | 活动页、文档地址 |
注意发送图片的接口名带版本号 sendImage2,别按习惯写成 sendImage。视频、语音、名片、定位、小程序也都有独立接口,都在消息发送分类下。
文件发送代码
// 示例代码,需按官方文档校验
async function sendQuotation(wId, toWxId, filePath) {
const fileB64 = fs.readFileSync(filePath).toString('base64');
const res = await axios.post(`${BASE_URL}/sendFileBase64`, {
wId, wcId: toWxId,
content: fileB64,
fileName: '11月活动报价单.pdf',
}, { headers: { Authorization: `Bearer ${TOKEN}` } });
// 成功只有字符串 "1000",失败原因看 message
if (res.data.code !== '1000') {
throw new Error(`${res.data.code}: ${res.data.message}`);
}
return res.data.data;
}
踩坑一:Base64 发大文件会撞请求体上限
sendFileBase64 走 JSON 请求体,Base64 编码后体积膨胀约三分之一。几 MB 的报价单没问题,几十 MB 的图册会先撞网关的请求体限制,报错还不直观。
实测的分流标准:小文件走 Base64 一步到位;大文件改走传统 sendFile 传资源地址,或者先传 CDN 再发消息。
踩坑二:链接消息的标题和描述要自己填
sendUrl 发出去的是带卡片预览的消息,标题、描述、缩略图都是请求参数,不是自动抓取的。我们第一版没填描述,客户收到的卡片光秃秃,点击率明显低于人工发的。卡片文案值得当成转化文案来写,别随手糊。
权衡:直传还是过一道 CDN
多媒体消息有两条路径:直接发本地资源,或者先传到平台的 CDN(uploadCdnImage、sendCdnVideo)再发。
| 维度 | 直传 | CDN 中转 |
|---|---|---|
| 实现成本 | 一个接口搞定 | 多一次上传调用 |
| 大文件 | 受请求体限制 | 稳 |
| 复用性 | 同一文件发给多人要重复传 | 传一次,反复发 |
结论:同一个文件要发给多个客户的场景,比如双11 期间给咨询客户群发活动图册,CDN 中转的多一次调用是划算的;一次性发给单个客户的报价单,直传更省事。
收尾
多媒体消息是客服机器人从「能说话」到「能办事」的分界线。把资料单模板化、文件 CDN 化,客服响应速度就不再是瓶颈。发送类接口的完整清单可以到 Eyun的文档站按消息分类查看,先在调试控制台用自己账号发通一条图片和一条文件,再接入业务。你在文件发送上遇到过什么报错,评论区交流。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)