自动回复文字只是入门。真实客服场景里,客户要的是报价单 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的文档站按消息分类查看,先在调试控制台用自己账号发通一条图片和一条文件,再接入业务。你在文件发送上遇到过什么报错,评论区交流。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐