获取群组成员详细资料

最近更新时间:2019-08-02 18:04:48

功能说明

App 管理员可以根据群组 ID 获取群组成员的资料。

接口调试工具

通过 REST API 在线调试工具 调试本接口。

接口调用说明

适用的群组类型

群组类型 支持此 REST API
私有群(Private)
公开群(Public)
聊天室(ChatRoom)
音视频聊天室(AVChatRoom) 300 人以内(见说明)
在线成员广播大群(BChatRoom) 否(见说明)

即时通信 IM 内置以上五种群组类型,详情请参阅 群组系统

说明:

因为内部实现的差异,音视频聊天室只能获取300人以内的群成员资料,群人数达到300后加入的群成员的成员资料无法被获取;而在线成员广播大群则无法获取群成员资料。

请求 URL 示例

https://console.tim.qq.com/v4/group_open_http_svc/get_group_member_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

请求参数说明

下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介

参数 说明
v4/group_open_http_svc/get_group_member_info 请求接口
sdkappid 创建应用时即时通信 IM 控制台分配的 SDKAppID
identifier 必须为 App 管理员帐号,更多详情请参见 App 管理员
usersig App 管理员帐号生成的签名,具体操作请参见 生成 UserSig
random 请输入随机的32位无符号整数

最高调用频率

100次/秒。如需提升调用频率,请根据 工单模板 提交工单申请处理。

请求包示例

  • 基础形式
    用来获取群成员详细信息(群成员资料和群成员维度自定义字段),请求中只包含群 ID。

    {
      "GroupId":"@TGS#1NVTZEAE4"  // 群组 ID(必填)
    }
  • 分页获取
    可以使用 Limit 和 Offset 两个值用于控制分页拉取:

    • Limit 限制回包中 MemberList 数组中成员的个数,不得超过6000。
    • Offset 控制从群成员中的第多少个成员开始拉取信息。对于分页请求(页码数字从1开始),每一页的 Offset 值应当为:(页码数– 1)×每页展示的群成员数量
      例如:假设需要分页拉取,每页展示 20 个,则第一页的请求参数应当为:{“Limit” : 20, “Offset” : 0},第二页的请求参数应当为{“Limit” : 20, “Offset” : 20},依此类推。

    Limit 或者 Offset 的取值不会对应答包体中的 TotalCount 造成影响。

    {
      "GroupId":"@TGS#1NVTZEAE4", // 群组 ID(必填)
      "Limit": 100, // 最多获取多少个成员的资料
      "Offset": 0 // 从第多少个成员开始获取资料
    }
  • 指定拉取的信息
    通过 MemberInfoFilter 过滤器字段选择需要拉取的字段。没有在过滤器中指明的字段将不被拉取。

    {
      "GroupId":"@TGS#1NVTZEAE4", // 群组 ID(必填)
      "MemberInfoFilter": [ // 需要获取哪些信息(Member_Account 被默认包含在其中),如果没有该字段则为群成员全部资料
          "Role",
          "JoinTime",
          "MsgSeq",
          "MsgFlag",
          "LastSendMsgTime",
          "ShutUpUntil",
          "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",
          "ShutUpUntil",
          "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 选填 一次最多获取多少个成员的资料,不得超过10000。如果不填,则获取群内全部成员的信息
Offset Integer 选填 从第几个成员开始获取,如果不填则默认为0,表示从第一个成员开始获取

应答包体示例

  • 基本形式和分页拉取
    {
      "ActionStatus": "OK",
      "ErrorInfo": "",
      "ErrorCode": 0,
      "MemberNum": 2, // 本群组的群成员总数
      "MemberList": [ // 群成员列表
          {
              "Member_Account": "bob",
              "Role": "Owner",
              "JoinTime": 1425976500, // 入群时间
              "MsgSeq": 1233,
              "MsgFlag": "AcceptAndNotify",
              "LastSendMsgTime": 1425976500, // 最后一次发消息的时间
              "ShutUpUntil": 1431069882, // 禁言截至时间(秒数)
              "AppMemberDefinedData": [ //群成员自定义字段
                  {
                     "Key": "MemberDefined1",
                     "Value": "ModifyDefined1"
                  },
                  {
                      "Key": "MemberDefined2",
                      "Value": "ModifyDefined2"
                  }
               ]
          },
          {
              "Member_Account": "peter",
              "Role": "Member ",
              "JoinTime": 1425976500,
              "MsgSeq": 1233,
              "MsgFlag": "AcceptAndNotify",
              "LastSendMsgTime": 1425976500,
              "ShutUpUntil": 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, // 最后一次发消息的时间
              "ShutUpUntil": 1431069882, // 禁言截至时间(秒数)
          },
          {
              "Member_Account": "peter",
              "Role": "Member ",
              "JoinTime": 1425976500,
              "MsgSeq": 1233,
              "MsgFlag": "AcceptAndNotify",
              "LastSendMsgTime": 1425976500,
              "ShutUpUntil": 0, // 0表示未被禁言,否则为禁言的截止时间
          }
      ]
    }
  • 拉取指定身份成员
    {
      "ActionStatus": "OK", // 返回成功
      "ErrorCode": 0, // 返回码
      "MemberList": [
          {
              "JoinTime": 1450680436, // 成员加入时间
              "LastSendMsgTime": 0, // 成员最后发消息时间
              "Member_Account": "Test_1", // 成员帐号
              "MsgFlag": "AcceptNotNotify", // 成员消息屏蔽类型
              "MsgSeq": 1, // 成员已读消息 seq
              "NameCard": "", // 成员名片
              "Role": "Owner", // 成员身份
              "ShutUpUntil": 0 // 0表示未被禁言,否则为禁言的截止时间
          },
          {
              "JoinTime": 1450680436,
              "LastSendMsgTime": 0,
              "Member_Account": "Test_6",
              "MsgFlag": "AcceptNotNotify",
              "MsgSeq": 1,
              "NameCard": "",
              "Role": "Admin",
              "ShutUpUntil": 0
          }
      ],
      "MemberNum": 8 // 本群组,群成员总数
    }
  • 拉取群成员自定义字段
    {
      "ActionStatus": "OK",
      "ErrorInfo": "",
      "ErrorCode": 0,
      "MemberNum": 2, // 本群组的群成员总数
      "MemberList": [ // 群成员列表
          {
              "Member_Account": "bob",
              "Role": "Owner",
              "JoinTime": 1425976500, // 入群时间
              "MsgSeq": 1233,
              "MsgFlag": "AcceptAndNotify",
              "LastSendMsgTime": 1425976500, // 最后一次发消息的时间
              "ShutUpUntil": 1431069882, // 禁言截至时间(秒数)
               "AppMemberDefinedData": [ // 群成员自定义字段
                  {
                      "Key": "MemberDefined2",
                      "Value": "ModifyDefined2"
                  }
               ]
          },
          {
              "Member_Account": "peter",
              "Role": "Member",
              "JoinTime": 1425976500,
              "MsgSeq": 1233,
              "MsgFlag": "AcceptAndNotify",
              "LastSendMsgTime": 1425976500,
              "ShutUpUntil": 0, // 0表示未被禁言,否则为禁言的截止时间
              "AppMemberDefinedData": [ // 群成员自定义字段
                  {
                      "Key": "MemberDefined2",
                      "Value": "ModifyDefined2"
                  }
               ]
          }
      ]
    }
  • ALL IN ONE
    {
      "ActionStatus": "OK",
      "ErrorInfo": "",
      "ErrorCode": 0,
      "MemberNum": 2, // 本群组的群成员总数
      "MemberList": [ // 群成员列表
          {
              "Member_Account": "bob",
              "Role": "Owner",
              "JoinTime": 1425976500, // 入群时间
              "MsgSeq": 1233,
              "MsgFlag": "AcceptAndNotify",
              "LastSendMsgTime": 1425976500, // 最后一次发消息的时间
              "ShutUpUntil": 1431069882, // 禁言截至时间(秒数)
              "AppMemberDefinedData":[ // 群成员自定义字段
                  {
                     "Key":"MemberDefined1",
                     "Value":"ModifyDefined1"
                  },
                  {
                      "Key":"MemberDefined2",
                      "Value":"ModifyDefined2"
                  }
               ]
          },
          {
              "Member_Account": "peter",
              "Role": "Member",
              "JoinTime": 1425976500,
              "MsgSeq": 1233,
              "MsgFlag": "AcceptAndNotify",
              "LastSendMsgTime": 1425976500,
              "ShutUpUntil": 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 返回的群成员自定义字段信息

错误码说明

除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:

错误码 描述
10002 服务器内部错误,请重试
10003 请求命令字非法
10004 参数非法,请根据错误描述检查请求是否正确
10007 操作权限不足,请确认操作者是否是 App 管理员或者是否有权限读取请求中的字段
10010 群组不存在,或者曾经存在过,但是目前已经被解散
10015 群组 ID 非法,请检查群组 ID 是否填写正确
10018 应答包长度超过最大包长(1MB),群成员数据过多,请尝试使用 Limit 和 Offset 分页拉取群成员数据

参考

修改群成员资料(v4/group_open_http_svc/modify_group_member_info)。