Skip to content

消息

发送、同步、撤回、群发助手。

本模块接口全部 POST,请求地址 = {BASE_URL} + 路径。

接口用途安全级别
同步消息
/wx-api/api/message/sync
主动拉取消息。只读
发送文本消息
/wx-api/api/message/sendText
发送纯文本消息。写操作
发送富文本消息
/wx-api/api/message/sendRichText
发送带表情、@ 成员的富文本;群聊 @ 功能通过本接口实现。写操作
发送语音消息
/wx-api/api/message/sendVoice
发送语音(silk 格式)。写操作
发送图片消息
/wx-api/api/message/sendImage
发送图片。写操作
发送视频消息
/wx-api/api/message/sendVideo
发送视频(小视频)。写操作
发送文件消息
/wx-api/api/message/sendFile
发送普通文件(小文件);大文件走 sendBigFile写操作
发送大文件
/wx-api/api/message/sendBigFile
发送大文件(超过 base64 直传上限)。写操作
发送链接卡片消息(包含视频号)
/wx-api/api/message/sendLink
发送图文链接卡片;sph_feed_h5_message 子对象用于视频号卡片。写操作
发送名片消息
/wx-api/api/message/sendNameCard
把某个用户的名片发到会话。写操作
发送 GIF 消息
/wx-api/api/message/sendGif
发送 GIF 动图表情。写操作
发送位置消息
/wx-api/api/message/sendLocation
发送地理位置卡片。写操作
发送小程序
/wx-api/api/message/sendMiniProgram
发送小程序卡片。写操作
撤回消息
/wx-api/api/message/revoke
撤回一条已发送的消息。高风险
群发助手-获取素材库列表
/wx-api/api/message/getMaterialList
拉取群发助手预置的素材(文案 + 附件组合),供群发时按 materialId 引用。只读
群发助手-群发
/wx-api/api/message/groupSend
向一批客户或客户群批量发送消息。写操作
群发助手-获取待发送列表
/wx-api/api/message/getPendingGroupSendList
拉取「待发送」队列(企微侧已排入、尚未真正下发的群发任务)。只读
群发助手-发送(待发送消息)
/wx-api/api/message/groupSendPending
把「待发送」队列里的某条任务真正下发。写操作
获取群发记录
/wx-api/api/message/getGroupSendRecord
查询本账号历史群发记录(含内容、触达统计、发送范围)。只读

安全级别与「实测 日期」标记的含义见接口总览的图例

媒体消息通用调用流程

图片 / 视频 / 文件 / 语音消息,发送前先把媒体上传到 CDN,拿到文件元信息,再填入发送接口的对应字段:

  1. 本地文件调对应的 CDN 上传接口(base64 直传),拿到媒体凭证;返回字段名以各上传接口的响应示例为准。
  2. 图片、视频上传返回的 data 可原样传给对应发送接口的 content;文件、语音需把 fileId / fileMd5 / fileSize 分别改名为 id / md5 / size。完整流程见CDN 文件
  3. 收方下载时调 cdn/downloadfileId + aesKey + fileType),解密还原。

小程序封面使用 content.miniProgramDetails 中的 cover 字段,不能把上传响应直接替换整个 content,见发送小程序

content 各字段的含义:

content 字段含义
idCDN 上的文件句柄(密文 id,常 200+ 字符;大文件以 *1* 开头)
size文件字节数
md5文件内容 MD5,收发方校验一致性
aesKey下载解密密钥;CDN 上文件是 AES 加密存储,下载后用它解密
thumb*(thumbMd5/thumbFileSize/thumbWidth/thumbHeight)缩略图元信息
width/height/duration/voiceTime尺寸/时长,由业务方按原始媒体填写

字段以 CDN 文件 模块为准。

发送类响应统一为「完整消息对象」:成功后 data 就是刚发出的那条消息,data.content 回显你发送的内容或上传字段。同步消息拉历史时的 content 基本是 protobuf,文本拿不到明文;Webhook 推送文本则是明文数组,媒体是带下载凭证的对象。三者的内容解析要分开处理。

conversationId 是发送的核心入参:单聊 = 对端联系人 userId,群聊 = roomId,必须传 JSON number,不能传字符串。给自己发消息时 conversationId 传当前登录账号自己的 uin(用获取个人信息取得,不要硬编码);自聊那个伪房间 roomId 不能作为发送目标。

发送 contentType 码表

下表用于发送响应中的 content;收到推送时查回调字典,不要把它直接套到历史同步结果上:

contentType消息类型content 形状
0文本 / 富文本数组 [{type,text[,userId]}]
6位置对象 longitude/latitude/address/title
13链接卡片对象 imageUrl/title/description(不回显 linkUrl)
14图片对象 id/size/md5/aesKey/thumb*
15文件对象 id/name/url/size/aesKey/md5
16语音对象 id/name/url/size/voiceTime/aesKey/md5
20大文件对象 id(*1*)/name/size/md5
23视频对象 id/duration/width/height/aesKey/md5/thumbUrl
41名片对象 cardUserId、avatarUrl、name、corpName、corpId、displayName、cardToken
78小程序对象 title + miniProgramDetails 对象(含 username、appId、path、title、appName 等字段)
2001已读回执发消息后必收一条,可忽略

富文本里的 type

发送富文本消息content[] 可组合多个片段:type=0 是纯文本,type=3 是表情(如 [愉快]),type=5 是 @提及。type=5userId 表示 @某人,不带 userId 表示 @所有人。

群发助手

groupSend 是立即发送,返回 data.msgId,记录直接进 getGroupSendRecordid == msgId);不进 getPendingGroupSendList 队列——两者是两套独立机制。接口发出的消息不推送正文,只会推一条 2001 已读回执。发送频率与限制与企微官方群发规则一致。