App 管理员可以根据群组 ID 获取群组成员的资料。
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持,使用 Next 字段分批获取 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
说明:因 Community(社群)人数较多,分页获取方式改用 Next 分批方法。
https://xxxxxx/v4/group_open_http_svc/get_group_member_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介。
参数 | 说明 |
---|---|
https | 请求协议为 HTTPS,请求方式为 POST |
xxxxxx | SDKAppID 所在国家/地区对应的专属域名console.tim.qq.com adminapisgp.im.qcloud.com adminapikr.im.qcloud.com adminapiger.im.qcloud.com adminapiind.im.qcloud.com adminapiusa.im.qcloud.com |
v4/group_open_http_svc/get_group_member_info | 请求接口 |
sdkappid | 创建应用时即时通信 IM 控制台分配的 SDKAppID |
identifier | 必须为 App 管理员帐号,更多详情请参见 App 管理员 |
usersig | App 管理员帐号生成的签名,具体操作请参见 生成 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"
]
}
拉取指定身份成员
通过 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 | 选填 | 一次最多获取多少个成员的资料,不得超过6000。如果不填,则获取群内全部成员的信息 |
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, // 禁言截至时间(秒数)
},
{
"Member_Account": "peter",
"Role": "Member ",
"JoinTime": 1425976500,
"MsgSeq": 1233,
"MsgFlag": "AcceptAndNotify",
"LastSendMsgTime": 1425976500,
"MuteUntil": 0, // 0表示未被禁言,否则为禁言的截止时间
}
]
}
拉取指定身份成员
{
"ActionStatus": "OK", // 返回成功
"ErrorCode": 0, // 返回码
"MemberList": [
{
"JoinTime": 1450680436, // 成员加入时间
"LastSendMsgTime": 0, // 成员最后发消息时间
"Member_Account": "Test_1", // 成员帐号
"MsgFlag": "AcceptNotNotify", // 成员消息屏蔽类型
"MsgSeq": 1, // 成员已读消息 seq
"NameCard": "", // 成员名片
"Role": "Owner", // 成员身份
"MuteUntil": 0 // 0表示未被禁言,否则为禁言的截止时间
},
{
"JoinTime": 1450680436,
"LastSendMsgTime": 0,
"Member_Account": "Test_6",
"MsgFlag": "AcceptNotNotify",
"MsgSeq": 1,
"NameCard": "",
"Role": "Admin",
"MuteUntil": 0
}
],
"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, // 禁言截至时间(秒数)
"AppMemberDefinedData": [ // 群成员自定义字段
{
"Key": "MemberDefined2",
"Value": "ModifyDefined2"
}
]
},
{
"Member_Account": "peter",
"Role": "Member",
"JoinTime": 1425976500,
"MsgSeq": 1233,
"MsgFlag": "AcceptAndNotify",
"LastSendMsgTime": 1425976500,
"MuteUntil": 0, // 0表示未被禁言,否则为禁言的截止时间
"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, // 禁言截至时间(秒数)
"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 | 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 分页拉取群成员数据 |
通过 REST API 在线调试工具 调试本接口。
本页内容是否解决了您的问题?