Appearance
消息
发送、同步、撤回、群发助手。
本模块接口全部 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,拿到文件元信息,再填入发送接口的对应字段:
- 本地文件调对应的 CDN 上传接口(base64 直传),拿到媒体凭证;返回字段名以各上传接口的响应示例为准。
- 图片、视频上传返回的
data可原样传给对应发送接口的content;文件、语音需把fileId/fileMd5/fileSize分别改名为id/md5/size。完整流程见CDN 文件。 - 收方下载时调
cdn/download(fileId+aesKey+fileType),解密还原。
小程序封面使用 content.miniProgramDetails 中的 cover 字段,不能把上传响应直接替换整个 content,见发送小程序。
content 各字段的含义:
| content 字段 | 含义 |
|---|---|
id | CDN 上的文件句柄(密文 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=5 带 userId 表示 @某人,不带 userId 表示 @所有人。
群发助手
groupSend 是立即发送,返回 data.msgId,记录直接进 getGroupSendRecord(id == msgId);不进 getPendingGroupSendList 队列——两者是两套独立机制。接口发出的消息不推送正文,只会推一条 2001 已读回执。发送频率与限制与企微官方群发规则一致。