功能说明
App 管理员可以根据群组 ID 获取群组成员的资料。
接口调用说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持,使用 Next 字段分批获取 |
说明:
因 Community(社群)人数较多,分页获取方式改用 Next 分批方法。
因 Community(社群)人数较多,在线人数总体更新粒度为4min,群成员上下线的时候,由于当前周期内已经统计了用户的在线状态,会在下一个4min周期才会统计到状态更新的群成员。
请求 URL 示例
https://xxxxxx/v4/group_open_http_svc/get_group_member_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
请求参数说明
参数 | 说明 |
xxxxxx | SDKAppID 所在国家/地区对应的专属域名: 中国: console.tim.qq.com 新加坡: adminapisgp.im.qcloud.com 首尔: adminapikr.im.qcloud.com 法兰克福: adminapiger.im.qcloud.com 硅谷: adminapiusa.im.qcloud.com 雅加达: adminapiidn.im.qcloud.com |
v4/group_open_http_svc/get_group_member_info | 请求接口 |
sdkappid | 创建应用时即时通信 IM 控制台分配的 SDKAppID |
identifier | |
usersig | |
random | 请输入随机的32位无符号整数,取值范围0 - 4294967295 |
contenttype | 请求格式固定值为 json |
请求频率限制
默认接口请求频率限制:200次/秒。
注意:
请求包示例
基础形式
用来获取群成员详细信息(群成员资料和群成员维度自定义字段),请求中只包含群 ID。
{"GroupId":"@TGS#1NVTZEAE4" // 群组 ID(必填)}
分页获取
可以使用 Limit 和 Offset 两个值用于控制分页拉取:
Limit 限制回包中 MemberList 数组中成员的个数,不得超过200,建议100。
Offset 控制从群成员中的第多少个成员开始拉取信息。对于分页请求(页码数字从1开始),每一页的 Offset 值应当为:
(页码数– 1)×每页展示的群成员数量
。
例如:假设需要分页拉取,每页展示 20 个,则第一页的请求参数应当为:{“Limit” : 20, “Offset” : 0}
,第二页的请求参数应当为{“Limit” : 20, “Offset” : 20}
,以此类推。{"GroupId":"@TGS#1NVTZEAE4", // 群组 ID(必填)"Limit": 100, // 最多获取多少个成员的资料"Offset": 0 // 从第多少个成员开始获取资料}
注意
社群目前不支持分页获取群成员详细资料。
分批获取
使用 Limit 和 Next 两个值用于控制分页拉取:
Limit 限制回包中 MemberList 数组中成员的个数,不得超过100。
Next 控制从某一个成员位置拉取后续的信息。第一次请求时,客户端请求参数 Next 传"";最后一次请求服务端返回的 Next 为""时,代表拉取结束;
中间的请求,客户端的 Next 均使用上一次服务端返回的 Next。类似 redis 的 scan 游标查询。
例如:假设需要分批拉取,第一次的请求参数应当为:
{"Limit" : 20, "Next" : ""}
,服务端返回 。{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"Next": "144115265295492787","MemberList": [....
第二次请求参数应当为
{"Limit" : 20, "Next" : "144115265295492787"}
。
以此类推,直到服务端的应答包返回 Next 为"",代表无后续成员信息,客户端应结束查询。{"GroupId":"@TGS#_@TGS#cAVQXXXXXX", // 群组 ID(必填)"Limit": 100, // 最多获取多少个成员的资料"Next": "" // 从上次拉取结束的位置开始拉取}
注意
仅社群支持分批获取群成员详细资料。
指定拉取的信息
通过 MemberInfoFilter 过滤器字段选择需要拉取的字段。没有在过滤器中指明的字段将不被拉取。
{"GroupId":"@TGS#1NVTZEAE4", // 群组 ID(必填)"MemberInfoFilter": [ // 需要获取哪些信息(Member_Account 被默认包含在其中),如果没有该字段则为群成员全部资料"Role","JoinTime","MsgSeq","MsgFlag","LastSendMsgTime","MuteUntil","NameCard","OnlineStatus"]}
拉取指定身份成员
通过 MemberRoleFilter 过滤器字段选择需要拉取资料的成员身份。没有在过滤器中指明则代表拉取任何身份的成员的资料。
{"GroupId":"@TGS#37AB3PAEC", // 群组 ID(必填)"MemberRoleFilter":[ // 群成员身份过滤器"Owner","Member"]}
拉取群成员自定义字段
通过 AppDefinedDataFilter_GroupMember 过滤器选取需要拉取的成员自定义字段。没有在过滤器中指明的字段将不被拉取。
{"GroupId":"@TGS#37AB3PAEC", // 群组 ID(必填)"AppDefinedDataFilter_GroupMember": [ // 群成员自定义字段过滤器"MemberDefined2" // 群成员自定义字段Key]}
ALL IN ONE
{"GroupId":"@TGS#1NVTZEAE4", // 群组 ID(必填)"MemberInfoFilter": [ // 需要获取哪些信息,如果没有该字段则为群成员全部资料"Role","JoinTime","MsgSeq","MsgFlag","LastSendMsgTime","MuteUntil","NameCard"],"MemberRoleFilter":[ // 群成员身份过滤器"Owner","Member"],"AppDefinedDataFilter_GroupMember": [ // 群成员自定义字段过滤器"MemberDefined2", // 群成员自定义字段 Key"MemberDefined1"],"Limit": 100, // 最多获取多少个成员的资料"Offset": 0 // 从第多少个成员开始获取}
请求包字段说明
字段 | 类型 | 属性 | 说明 |
GroupId | String | 必填 | 需要拉取成员信息的群组的 ID |
MemberInfoFilter | Array | 选填 | |
MemberRoleFilter | Array | 选填 | 拉取指定身份的群成员资料。如没有填写该字段,默认为所有身份成员资料,成员身份可以为:“Owner”,“Admin”,“Member” |
AppDefinedDataFilter_GroupMember | Array | 选填 | 默认情况是没有的。该字段用来群成员维度的自定义字段过滤器,指定需要获取的群成员维度的自定义字段,群成员维度的自定义字段详情请参阅 自定义字段 |
Limit | Integer | 选填 | 一次最多获取多少个成员的资料,不得超过200。如果不填,则获取群内全部成员的信息 |
Offset | Integer | 选填 | 从第几个成员开始获取,如果不填则默认为0,表示从第一个成员开始获取。社群不支持此参数 |
Next | String | 选填 | 上一次拉取到的成员位置,社群必填,社群不支持 Offset 参数,使用 Next 参数,首次调用填写"",续拉使用返回中的 Next 值 |
应答包体示例
基本形式和分页拉取
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"Next": "144115265295492787", // 仅社群会返回该字段"MemberNum": 2, // 本群组的群成员总数"MemberList": [ // 群成员列表{"Member_Account": "bob","Role": "Owner","JoinTime": 1425976500, // 入群时间"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500, // 最后一次发消息的时间"MuteUntil": 1431069882, // 禁言截至时间(秒数)"AppMemberDefinedData": [ //群成员自定义字段{"Key": "MemberDefined1","Value": "ModifyDefined1"},{"Key": "MemberDefined2","Value": "ModifyDefined2"}]},{"Member_Account": "peter","Role": "Member ","JoinTime": 1425976500,"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500,"MuteUntil": 0, // 0表示未被禁言,否则为禁言的截止时间戳"AppMemberDefinedData": [ // 群成员自定义字段{"Key": "MemberDefined1","Value": "ModifyDefined1"},{"Key": "MemberDefined2","Value": "ModifyDefined2"}]}]}
拉取指定字段
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"MemberNum": 2, // 本群组的群成员总数"MemberList": [ // 群成员列表{"Member_Account": "bob","Role": "Owner","JoinTime": 1425976500, // 入群时间"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500, // 最后一次发消息的时间"MuteUntil": 1431069882, // 禁言截至时间(秒数)"OnlineStatus": "Online", //在线状态},{"Member_Account": "peter","Role": "Member ","JoinTime": 1425976500,"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500,"MuteUntil": 0, // 0表示未被禁言,否则为禁言的截止时间戳"OnlineStatus": "Offline", //在线状态}]}
拉取指定身份成员
{"ActionStatus": "OK", // 返回成功"ErrorCode": 0, // 返回码"MemberList": [{"JoinTime": 1450680436, // 成员加入时间"LastSendMsgTime": 0, // 成员最后发消息时间"Member_Account": "Test_1", // 成员账号"MsgFlag": "AcceptNotNotify", // 成员消息屏蔽类型"MsgSeq": 1, // 成员已读消息 seq"NameCard": "", // 成员名片"Role": "Owner", // 成员身份"MuteUntil": 0 // 0表示未被禁言,否则为禁言的截止时间戳"OnlineStatus": "Online", //在线状态},{"JoinTime": 1450680436,"LastSendMsgTime": 0,"Member_Account": "Test_6","MsgFlag": "AcceptNotNotify","MsgSeq": 1,"NameCard": "","Role": "Admin","MuteUntil": 0"OnlineStatus": "Offline"}],"MemberNum": 8 // 本群组,群成员总数}
拉取群成员自定义字段
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"MemberNum": 2, // 本群组的群成员总数"MemberList": [ // 群成员列表{"Member_Account": "bob","Role": "Owner","JoinTime": 1425976500, // 入群时间"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500, // 最后一次发消息的时间"MuteUntil": 1431069882, // 禁言截至时间(秒数)"OnlineStatus": "Online", //在线状态"AppMemberDefinedData": [ // 群成员自定义字段{"Key": "MemberDefined2","Value": "ModifyDefined2"}]},{"Member_Account": "peter","Role": "Member","JoinTime": 1425976500,"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500,"MuteUntil": 0, // 0表示未被禁言,否则为禁言的截止时间戳"OnlineStatus": "Offline","AppMemberDefinedData": [ // 群成员自定义字段{"Key": "MemberDefined2","Value": "ModifyDefined2"}]}]}
ALL IN ONE
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0,"Next": "144115265295492787", // 仅社群会返回该字段"MemberNum": 2, // 本群组的群成员总数"MemberList": [ // 群成员列表{"Member_Account": "bob","Role": "Owner","JoinTime": 1425976500, // 入群时间"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500, // 最后一次发消息的时间"MuteUntil": 1431069882, // 禁言截至时间(秒数)"OnlineStatus": "Offline", //在线状态"AppMemberDefinedData":[ // 群成员自定义字段{"Key":"MemberDefined1","Value":"ModifyDefined1"},{"Key":"MemberDefined2","Value":"ModifyDefined2"}]},{"Member_Account": "peter","Role": "Member","JoinTime": 1425976500,"MsgSeq": 1233,"MsgFlag": "AcceptAndNotify","LastSendMsgTime": 1425976500,"MuteUntil": 0, // 0表示未被禁言,否则为禁言的截止时间戳"OnlineStatus": "Online", //在线状态"AppMemberDefinedData": [ // 群成员自定义字段{"Key": "MemberDefined1","Value": "ModifyDefined1"},{"Key": "MemberDefined2","Value": "ModifyDefined2"}]}]}
应答包字段说明
字段 | 类型 | 说明 |
ActionStatus | String | 请求处理的结果,OK 表示处理成功,FAIL 表示失败 |
ErrorCode | Integer | 错误码,0表示成功,非0表示失败 |
ErrorInfo | String | 错误信息 |
MemberNum | Integer | 本群组的群成员总数 |
MemberList | Array | 获取到的群成员列表,其中包含了全部或者指定的群成员信息,成员信息字段详情请参阅 群成员资料 |
AppMemberDefinedData | Array | 返回的群成员自定义字段信息 |
Next | String | 下一次请求应该传的 Next 值,仅查询 Community(社群)时会返回该字段 |
错误码说明
除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:
错误码 | 描述 |
10002 | 服务器内部错误,请重试 |
10003 | 请求命令字非法 |
10004 | 参数非法,请根据错误描述检查请求是否正确 |
10007 | 操作权限不足,请确认操作者是否是 App 管理员或者是否有权限读取请求中的字段 |
10010 | 群组不存在,或者曾经存在过,但是目前已经被解散 |
10015 | 群组 ID 非法,请检查群组 ID 是否填写正确 |
10018 | 应答包长度超过最大包长(1MB),群成员数据过多,请尝试使用 Limit 和 Offset 分页拉取群成员数据 |