Appearance
核心标识
接口和回调里反复出现的标识都在下面这张表里,先分清它们,再去调接口。
标识一览
| 标识 | 是什么 | 从哪来 | 用在哪 | 类型 |
|---|---|---|---|---|
appid | 实例 ID,一个实例对应一个登录的企微账号 | 首次调获取二维码不传 appid,响应 data.appid 返回 | 所有业务接口的 body;之后每次取码都要带原 appid | string,形如 we_xxxxxxxxxxxxxxx |
uuid | 本次扫码会话的票据 | 获取二维码响应 data.uuid | 检测二维码、提交验证码;二维码过期即失效 | string |
uin | 用户唯一 id | 当前账号:获取个人信息响应 data.uin;推送里发送方的 uin 在 fromUserId | 给自己发消息时作 conversationId;重新扫码后确认登录的还是同一个账号 | int64 |
userId | 用户的 uin 在接口参数里的另一种叫法 | 好友申请回调、通讯录同步或群成员,具体见取值来源 | 单聊发送的 conversationId;联系人和群管理接口的用户参数 | int64 |
vid | 通讯录成员的联系人 id,等于该成员的 uin | 同步通讯录 ID 列表返回的 nodeList[] 里成员节点(type 为 1)的 vid | 获取用户信息详情按 vid / uin 列表查资料 | int64 |
roomId | 群会话 id | 获取我的客户群列表的 data.roomData.list[].roomId;也可复用回调里带出的 roomId | 除建群外几乎所有群接口;群聊发送的 conversationId | int64 |
conversationId | 发送接口的会话 id | 按会话取值:单聊传对方 userId,群聊传 roomId,给自己发传当前账号 uin | 所有发送接口;撤回消息时与发送时相同 | int64,必须是 JSON number |
消息 id / serverMsgId | 消息服务端 id,同一账号内唯一;撤回时参数名叫 serverMsgId | 发送接口响应的 data.id,或回调推送报文里的 id | 撤回消息的 serverMsgId;消息层去重 | int64 |
X-Eyun-Delivery | 一次推送的唯一 id | 回调推送的请求头 | 推送层去重 | — |
syncKey | 同步位置,递增 | 回调推送报文、发送接口响应与同步消息响应里的 syncKey | 同步消息请求的 syncKey,首次可传 0 | int64 |
int64 标识不要当字符串
表里类型为 int64 的标识,发送时必须是 JSON number,不能传字符串;解析时不要经过浮点数。
最容易混淆的规则
userId、uin、vid是同一个 int64 数值的不同叫法。 不需要在这三个名字之间换算。- 单聊的
conversationId是对方的uin。 发送接口参数说明里写作「对方userId」;推送里对方的uin在fromUserId。 - 群聊用
roomId,不是客户群列表里的id。 列表项里更长的id是客户群记录 id,做群操作和发群消息一律用roomId,见群操作调用流程。 - 给自己发用当前账号的
uin。 用获取个人信息取得,不要硬编码;自聊伪房间的roomId不能作为发送目标,否则返回-3020。 - 去重分两层。 推送层用请求头
X-Eyun-Delivery,消息层用消息id(同一账号内唯一),见回调说明 · 回调地址要求。
userId 取值来源
| 用途 | 从哪里取 |
|---|---|
| 同意新客户 | 好友申请回调的 content.uin,contentType 为 2357 |
| 删除联系人、修改联系人标签 | 通讯录同步的成员 vid,或同步外部数据的 content.userInfo.uin |
| 设置管理员、转让群主 | 群成员的 uin,从群成员资料或群成员变动回调取得 |
下一步
- 实例与代理:
appid的生命周期与掉线处理 - 快速开始:用
appid、uuid、uin跑通第一条消息 - 回调字典 · 常用字段:推送报文里的
id、fromUserId、roomId