差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:server:basics:group [2020/02/05 07:45]
huanxinfudh [群组成员全部解除禁言]
im:server:basics:group [2022/05/19 04:10] (当前版本)
jennifer.zeng [群组管理]
行 1: 行 1:
 ====== 群组管理 ====== ====== 群组管理 ======
 +
 +更新时间:2021-12-31 该文档已不再维护,请看新版 3.X 文档。
 +
 +新版文档见:[[ccim:​rest:​group|群组管理 REST API]]。
  
 ---- ----
行 5: 行 9:
 环信提供了 REST API 来管理 APP 中的群组。 环信提供了 REST API 来管理 APP 中的群组。
  
-单个APP创建群组数量[[http://​www.easemob.com/​pricing/​im|限制]],如需增加可根据具体业务联系商务解决。''​单用户ID只能加入500个群''​+单个APP可以创建群组数量以及单用户ID可以加入的群数量请参考不同版本[[http://​www.easemob.com/​pricing/​im|数量]],如需增加可根据具体业务联系商务解决。
  
  ===== 群组数据结构 =====  ===== 群组数据结构 =====
行 11: 行 15:
 ^字段名 ^类型 ^描述^ ^字段名 ^类型 ^描述^
 |id |String |群组 ID,群组唯一标识符,由环信服务器生成,等同于单个用户的环信 ID。| |id |String |群组 ID,群组唯一标识符,由环信服务器生成,等同于单个用户的环信 ID。|
-|name |String |群组名称,根据用户输入创建,字符串类型。| +|name |String |群组名称,根据用户输入创建,字符串类型,最大长度为128字符。| 
-|description |String |群组描述,根据用户输入创建,字符串类型。|+|description |String |群组描述,根据用户输入创建,字符串类型,最大长度为512字符。|
 |public |Boolean |群组类型:true:公开群,false:私有群。| |public |Boolean |群组类型:true:公开群,false:私有群。|
 |membersonly |Boolean ​ |加入群组是否需要群主或者群管理员审批。true:是,false:否。| |membersonly |Boolean ​ |加入群组是否需要群主或者群管理员审批。true:是,false:否。|
-|allowinvites |Boolean |是否允许群成员邀请别人加入此群。 true:允许群成员邀请人加入此群,false:只有群主才可以往群里加人。| +|allowinvites |Boolean |是否允许群成员邀请别人加入此群。 true:允许群成员邀请人加入此群,false:只有群主才可以往群里加人。由于只有私有群才允许群成员邀请人加入此群,所以当群组为私有群时,该参数设置为true才有效。默认为false
-|maxusers |Integer |群成员上限,创建群组的时候设置,可修改。|+|maxusers |Integer |群成员上限,创建群组的时候设置需要设置,具体数量请参考不同版本[[http://​www.easemob.com/​pricing/​im|数量]]。|
 |affiliations_count |Integer |现有成员总数。| |affiliations_count |Integer |现有成员总数。|
 |affiliations |Array |现有成员列表,包含了 owner 和 member。例如:"​affiliations":​[{"​owner":​ "​13800138001"​},​{"​member":"​v3y0kf9arx"​},​{"​member":"​xc6xrnbzci"​}]。| |affiliations |Array |现有成员列表,包含了 owner 和 member。例如:"​affiliations":​[{"​owner":​ "​13800138001"​},​{"​member":"​v3y0kf9arx"​},​{"​member":"​xc6xrnbzci"​}]。|
行 22: 行 26:
 |member |String |群成员的环信 ID。例如:{"​member":"​xc6xrnbzci"​}。| |member |String |群成员的环信 ID。例如:{"​member":"​xc6xrnbzci"​}。|
 |invite_need_confirm|Boolean|邀请加群,被邀请人是否需要确认。如果是true,表示邀请加群需要被邀请人确认;如果是false,表示不需要被邀请人确认,直接将被邀请人加入群。 该字段的默认值为true。| |invite_need_confirm|Boolean|邀请加群,被邀请人是否需要确认。如果是true,表示邀请加群需要被邀请人确认;如果是false,表示不需要被邀请人确认,直接将被邀请人加入群。 该字段的默认值为true。|
 +|custom |String |群组扩展信息,例如可以给群组添加业务相关的标记,不要超过1024字符。|
 +|mute |Boolean ​ |是否全员禁言。true:是,false:否。|
  
 ===== 群组角色 ===== ===== 群组角色 =====
行 30: 行 36:
  
   * 群主拥有群的所有权限;   * 群主拥有群的所有权限;
-  * 群管理员拥有管理黑名单、禁言等权限 +  * 群管理员拥有管理黑名单、禁言等权限 
-  * 群主+管理员 ​一共100,即管理员最多可添加99个+  * 最多管理员角色数量:1个群主+99个管理员
  
 ---- ----
行 42: 行 48:
 ^名称^请求^描述^ ^名称^请求^描述^
 |获取App中所有的群组(可分页)|/​{org_name}/​{app_name}/​chatgroups|获取应用下全部的群组信息| |获取App中所有的群组(可分页)|/​{org_name}/​{app_name}/​chatgroups|获取应用下全部的群组信息|
-|获取个用户参与的所有群组|/​{app_name}/​users/​{username}/​joined_chatgroups|根据用户名称获取此用户加入的全部群组|+|获取个用户加入的所有群组|/​{app_name}/​users/​{username}/​joined_chatgroups;分页获取:/​{app_name}/​users/​{username}/​joined_chatgroups?​pagesize={}&​pagenum={}|根据用户名称获取此用户加入的全部群组|
 |获取群组详情|/​{org_name}/​{app_name}/​chatgroups/​{group_ids}|根据群组ID获取此群组的详情| |获取群组详情|/​{org_name}/​{app_name}/​chatgroups/​{group_ids}|根据群组ID获取此群组的详情|
 |创建一个群组|/​{org_name}/​{app_name}/​chatgroups|创建一个新群组| |创建一个群组|/​{org_name}/​{app_name}/​chatgroups|创建一个新群组|
行 48: 行 54:
 |删除群组|/​{org_name}/​{app_name}/​chatgroups/​{group_id}|删除一个群组| |删除群组|/​{org_name}/​{app_name}/​chatgroups/​{group_id}|删除一个群组|
  
-====获取App中所有的群组(可分页)====+==== 获取 App 中所有的群组(可分页)====
 分页获取应用下全部的群组信息的接口 分页获取应用下全部的群组信息的接口
  
行 71: 行 77:
 |groupname|群组名称| |groupname|群组名称|
  
 +''​对于返回的数据的排序:例如每页取10个,第一页的10个群组,会是比第二页的10个后创建的。但第一页内的10个,不是有序的,可能会有乱序。''​
 === 请求示例 === === 请求示例 ===
 第一页 第一页
行 188: 行 195:
 ---- ----
  
-====获取个用户参与的所有群组==== +==== 获取个用户加入的所有群组(可分页) ​==== 
-根据用户名称获取该用户加入的全部群组接口+ 
 +根据用户名称获取该用户加入的全部群组接口
  
 === HTTP Request === === HTTP Request ===
  
-^{{:​im:​server:​basics:​get.png?​nolink&​90|}}^**/​{app_name}/​users/​{username}/​joined_chatgroups**^+^{{:​im:​server:​basics:​get.png?​nolink&​90|}}^**/{org_name}/​{app_name}/​users/​{username}/​joined_chatgroups**^
 需要在请求时对应填写{username},需要获取的 IM 用户名。 需要在请求时对应填写{username},需要获取的 IM 用户名。
 +
 +分页接入点:''​%%https://​{host}/​{app_name}/​users/​{username}/​joined_chatgroups?​pagesize={}&​pagenum={}'​%%''​
 +
 +=== 路径参数 ===
 +
 +^参数 ​               ^类型 ​     ^是否必需 ​ ^描述 ​                               ^
 +|''​%%host%%'' ​     |String ​ |必需 ​   |你在环信即时通讯 IM 管理后台注册项目时所在的集群服务器地址。 |
 +|''​%%org_name%%'' ​ |String ​ |必需 ​   |你在环信即时通讯 IM 管理后台注册项目时填入的公司(组织)名称。 |
 +|''​%%app_name%%'' ​ |String ​ |必需 ​   |你在环信即时通讯 IM 管理后台注册项目时填入的应用名称。 ​    |
 +|''​%%username%%'' ​ |String ​ |必需 ​   |用户 ID。                            |
 +|''​%%pagesize%%'' ​ |String ​ |必需 | 每页获取的群组数量。该参数仅适用于分页获取方法。|
 +|''​%%pagenum%%'' ​ |String ​ |必需 | 当前页码。该参数仅适用于分页获取方法。|
  
 === Request Headers === === Request Headers ===
行 212: 行 232:
 curl -X GET -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​users/​user1/​joined_chatgroups'​ curl -X GET -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​users/​user1/​joined_chatgroups'​
 </​code>​ </​code>​
 +
 +分页获取示例:
 +<​code>​
 +curl -X GET -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​users/​user1/​joined_chatgroups?​pagesize=1&​pagenum=100'​
 +</​code>​
 +
 === 可能返回的结果示例 === === 可能返回的结果示例 ===
 **返回值200,表示获取群组成功** **返回值200,表示获取群组成功**
行 261: 行 287:
 [[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]] [[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
 ---- ----
 +
 +分页获取响应示例:
 +
 +<​code>​
 +{
 +    "​action":"​get",​
 +    "​application":"​8be024f0-e978-11e8-b697-5d598d5f8402",​
 +    "​applicationName":"​testapp",​
 +    "​count":​0,​
 +    "​data":​[
 +
 +    ],
 +    "​duration":​0,​
 +    "​entities":​[
 +
 +    ],
 +    "​organization":"​easemob-demo",​
 +    "​params":​{
 +        "​pagesize":​[
 +            "​1"​
 +        ],
 +        "​pagenum":​[
 +            "​100"​
 +        ]
 +    },
 +    "​properties":​{
 +
 +    },
 +    "​timestamp":​1645177932072,​
 +    "​uri":"​http://​a1.easemob.com/​easemob-demo/​testapp/​users/​user1/​joined_chatgroups"​
 +}
 +</​code>​
  
 ====获取群组详情==== ====获取群组详情====
行 362: 行 420:
  
 ====创建一个群组==== ====创建一个群组====
-创建一个群组,并设置群组名称、群组描述、公开群/​私有群属性、群成员最大人数(包括群主)、加入公开群是否需要批准、群主、以及群成员。+创建一个群组,并设置群组名称、群组描述、公开群/​私有群属性、群成员最大人数(包括群主)、加入公开群是否需要批准、群主、群成员、群组扩展信息
 === HTTP Request === === HTTP Request ===
  
行 376: 行 434:
  
 ^参数^说明^ ^参数^说明^
-|groupname|群组名称,此属性为必须的| +|groupname|群组名称,此属性为必须的,最大长度为128字符
-|desc|群组描述,此属性为必须的|+|desc|群组描述,此属性为必须的,最大长度为512字符|
 |public|是否是公开群,此属性为必须的| |public|是否是公开群,此属性为必须的|
-|maxusers|群组成员最大数(包括群主),值为数值类型,默认值200,最大值2000,此属性为可选的| +|maxusers|群组成员最大数(包括群主),值为数值类型,默认值200,具体上限请参考不同版本[[http://​www.easemob.com/​pricing/​im|数量]]
-|members_only|加入群是否需要群主或者群管理员审批,默认是false+|allowinvites|是否允许群成员邀请别人加入此群。 true:允许群成员邀请人加入此群,false:只有群主或者管理员才可以往群里加人。注:如果是公开群(public为true),则不允许群成员邀请别人加入此群| 
-|allowinvites|是否允许群成员邀请别人加入此群。 true:允许群成员邀请人加入此群,false:只有群主或者管理员才可以往群里加人。|+|members_only|用户申请入群是否需要群主或者群管理员审批,默认是false。注:如果允许了群成员邀请用户进群(allowinvites为true),那么就不需要群主或群管理员审批了|
 |owner|群组的管理员,此属性为必须的| |owner|群组的管理员,此属性为必须的|
-|members|群组成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主user1不需要写入到members里面)|+|members|群组成员,此属性为可选的,但是如果加了此项,数组元素至少一个,不能超过100个(注:群主user1不需要写入到members里面)| 
 +|custom|群组扩展信息,例如可以给群组添加业务相关的标记,不要超过1024字符| 
  
 === Response Body === === Response Body ===
行 397: 行 457:
    "​public":​ true,  ​    "​public":​ true,  ​
    "​maxusers":​ 300,  ​    "​maxusers":​ 300,  ​
-   "​approval":​ true,  ​ 
    "​owner":​ "​testuser",  ​    "​owner":​ "​testuser",  ​
    "​members":​ [  ​    "​members":​ [  ​
行 420: 行 479:
   "​applicationName":​ "​testapp"​   "​applicationName":​ "​testapp"​
 }</​code>​ }</​code>​
-**返回值400,owner用户不存在**+**返回值404,owner用户不存在**
 <code json> <code json>
 { {
行 448: 行 507:
  
 ====修改群组信息==== ====修改群组信息====
-修改成功的数据行会返回 true,失败为 false。请求 body 只接收 groupname、description、maxusers、membersonly ​个属性,传不存在的字段,或者不能修改的字段会抛异常。+修改成功的数据行会返回 true,失败为 false。请求 body 只接收 groupname、description、maxusers、membersonly、allowinvites、custom 六个属性,传不存在的字段,或者不能修改的字段会抛异常。
 === HTTP Request === === HTTP Request ===
  
行 463: 行 522:
  
 ^参数^说明^ ^参数^说明^
-|groupname|群组名称,修改时值不能包含斜杠("/"​)| +|groupname|群组名称,修改时值不能包含斜杠("/"​),最大长度为128字符。
-|description|群组描述,修改时值不能包含斜杠("/"​)| +|description|群组描述,修改时值不能包含斜杠("/"​),最大长度为512字符。
-|maxusers|群组成员最大数(包括群主),值为数值类型|+|maxusers|群组成员最大数(包括群主),值为数值类型|
 |membersonly|加入群组是否需要群主或者群管理员审批。true:是,false:否。| |membersonly|加入群组是否需要群主或者群管理员审批。true:是,false:否。|
 +|allowinvites|是否允许群成员邀请别人加入此群。 true:允许群成员邀请人加入此群,false:只有群主才可以往群里加人。|
 +|custom|群组扩展信息,例如可以给群组添加业务相关的标记,不要超过1024字符。|
  
 === Response Body === === Response Body ===
行 475: 行 536:
 |groupname|群组名称,true表示修改成功,false表示修改失败| |groupname|群组名称,true表示修改成功,false表示修改失败|
 |membersonly|加入群组是否需要群主或者群管理员审批。true:是,false:否。| |membersonly|加入群组是否需要群主或者群管理员审批。true:是,false:否。|
 +|allowinvites|是否允许群成员邀请别人加入此群。 true:允许群成员邀请人加入此群,false:只有群主才可以往群里加人。|
  
 === 请求示例 === === 请求示例 ===
行 482: 行 544:
    "​description":​ "​test",  ​    "​description":​ "​test",  ​
    "​maxusers":​ 300,    "​maxusers":​ 300,
-   "​membersonly":​ true+   "​membersonly": true, 
 +   "​allowinvites": true
  ​}'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617'​  ​}'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617'​
 </​code>​ </​code>​
行 495: 行 558:
   "​data":​ {   "​data":​ {
     "​membersonly":​ true,     "​membersonly":​ true,
 +    "​allowinvites":​ true,
     "​description":​ true,     "​description":​ true,
     "​maxusers":​ true,     "​maxusers":​ true,
行 574: 行 638:
   "​exception":​ "​com.easemob.group.exception.ResourceNotFoundException",​   "​exception":​ "​com.easemob.group.exception.ResourceNotFoundException",​
   "​error_description":​ "grpID 6602183678361 does not exist!"​   "​error_description":​ "grpID 6602183678361 does not exist!"​
 +}
 +</​code>​
 +**返回值401,未授权[无token、token错误、token过期]**
 +<code json>
 +{
 +  "​error":​ "​group_authorization",​
 +  "​timestamp":​ 1542363640975,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.GroupAuthorizationException",​
 +  "​error_description":​ "this token is bad, or has expired!"​
 +}
 +</​code>​
 +
 +如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]]
 +
 +[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
 +----
 +
 +====获取群组公告====
 +获取指定群组id的群组公告
 +
 +=== HTTP Request ===
 +
 +^{{:​im:​server:​basics:​get.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​announcement**^
 +需要在请求时对应填写{group_id},需要获取群组公告的群组 ID 。
 +
 +=== Request Headers ===
 +
 +^参数^说明^
 +|Content-Type|application/​json|
 +|Authorization|Bearer ${token}|
 +
 +=== 请求示例 ===
 +<code php>
 +curl -X GET -H '​Content-Type:​ application/​json'​ -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​announcement'​
 +</​code>​
 +=== 可能返回的结果示例 ===
 +**返回值200,表示获取群组公告成功**
 +<code json>
 +{
 +  "​action":​ "​get",​
 +  "​application":​ "​8be024f0-e978-11e8-b697-5d598d5f8402",​
 +  "​uri":​ "​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​announcement",​
 +  "​entities":​ [],
 +  "​data":​ {
 +    "​announcement"​ : "​群组公告..."​
 +  },
 +  "​timestamp":​ 1542363546590,​
 +  "​duration":​ 0,
 +  "​organization":​ "​easemob-demo",​
 +  "​applicationName":​ "​testapp"​
 +}
 +</​code>​
 +**返回值404,群组ID不存在**
 +<code json>
 +{
 +  "​error":​ "​resource_not_found",​
 +  "​timestamp":​ 1542363611915,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.ResourceNotFoundException",​
 +  "​error_description":​ "grpID 6602183678361 does not exist!"​
 +}
 +</​code>​
 +**返回值401,未授权[无token、token错误、token过期]**
 +<code json>
 +{
 +  "​error":​ "​group_authorization",​
 +  "​timestamp":​ 1542363640975,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.GroupAuthorizationException",​
 +  "​error_description":​ "this token is bad, or has expired!"​
 +}
 +</​code>​
 +
 +如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]]
 +
 +[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
 +----
 +
 +====修改群组公告====
 +修改指定群组id的群组公告,注意群组公告的内容不能超过512个字符。
 +
 +=== HTTP Request ===
 +
 +^{{:​im:​server:​basics:​post.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​announcement**^
 +需要在请求时对应填写{group_id},需要修改群组公告的群组 ID 。
 +
 +=== Request Headers ===
 +
 +^参数^说明^
 +|Content-Type|application/​json|
 +|Authorization|Bearer ${token}|
 +
 +=== 请求示例 ===
 +<code php>
 +curl -X POST -H '​Content-Type:​ application/​json'​ -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ -d '​{"​announcement"​ : "​群组公告…"​}'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​announcement'​
 +</​code>​
 +=== 可能返回的结果示例 ===
 +**返回值200,表示修改群组公告成功**
 +<code json>
 +{
 +  "​action":​ "​post",​
 +  "​application":​ "​8be024f0-e978-11e8-b697-5d598d5f8402",​
 +  "​uri":​ "​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​announcement",​
 +  "​entities":​ [],
 +  "​data":​ {
 +    "​id"​ : "​66021836783617",​
 +    "​result"​ : true
 +  },
 +  "​timestamp":​ 1542363546590,​
 +  "​duration":​ 0,
 +  "​organization":​ "​easemob-demo",​
 +  "​applicationName":​ "​testapp"​
 +}
 +</​code>​
 +**返回值404,群组ID不存在**
 +<code json>
 +{
 +  "​error":​ "​resource_not_found",​
 +  "​timestamp":​ 1542363611915,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.ResourceNotFoundException",​
 +  "​error_description":​ "grpID 6602183678361 does not exist!"​
 +}
 +</​code>​
 +**返回值401,未授权[无token、token错误、token过期]**
 +<code json>
 +{
 +  "​error":​ "​group_authorization",​
 +  "​timestamp":​ 1542363640975,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.GroupAuthorizationException",​
 +  "​error_description":​ "this token is bad, or has expired!"​
 +}
 +</​code>​
 +
 +如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]]
 +
 +[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
 +----
 +
 +====获取群组共享文件====
 +分页获取指定群组id的群组共享文件,之后可以根据response中返回的file_id,file_id是群组共享文件的唯一标识,调用 [[http://​docs-im.easemob.com/​im/​server/​basics/​group#​%E4%B8%8B%E8%BD%BD%E7%BE%A4%E7%BB%84%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6|下载群共享文件]] 接口下载文件,调用 [[http://​docs-im.easemob.com/​im/​server/​basics/​group#​%E5%88%A0%E9%99%A4%E7%BE%A4%E7%BB%84%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6|删除群共享文件]] 接口删除文件。
 +
 +=== HTTP Request ===
 +
 +^{{:​im:​server:​basics:​get.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​share_files**^
 +需要在请求时对应填写{group_id},需要获取群组共享文件的群组 ID ,​默认是从第1页开始获取,1页最多可以获取1000条
 +
 +^分页 ^**{org_name}/​{app_name}/​chatgroups/​{group_id}/​share_files?​pagenum=1&​pagesize=10**^
 +
 +
 +=== Request Headers ===
 +
 +^参数^说明^
 +|Content-Type|application/​json|
 +|Authorization|Bearer ${token}|
 +
 +=== Response Body ===
 +在返回值中查看data字段包含的信息
 +^参数^说明^
 +|file_id|群组共享文件的id,如果要下载该文件需要使用到这个file_id|
 +|file_name|群组共享文件名称|
 +|file_owner|上传群组共享文件的用户id|
 +|file_size|群组共享文件大小(字节)|
 +|created|上传群组共享文件的时间|
 +
 +=== 请求示例 ===
 +<code php>
 +curl -X GET -H '​Content-Type:​ application/​json'​ -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files?​pagenum=1&​pagesize=10'​
 +</​code>​
 +=== 可能返回的结果示例 ===
 +**返回值200,表示获取群组共享文件成功**
 +<code json>
 +{
 +  "​action":​ "​get",​
 +  "​application":​ "​8be024f0-e978-11e8-b697-5d598d5f8402",​
 +  "​params":​ {
 +        "​pagesize":​ [
 +            "​10"​
 +        ],
 +        "​pagenum":​ [
 +            "​1"​
 +        ]
 +    },
 +  "​uri":​ "​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files",​
 +  "​entities":​ [],
 +  "​data":​ [
 +        {
 +            "​file_id":​ "​dbd88d20-e1d4-11ea-95fc-638fc2d59a8d",​
 +            "​file_name":​ "​159781149272586.jpg",​
 +            "​file_owner":​ "​u1",​
 +            "​file_size":​ 326127,
 +            "​created":​ 1597811492594
 +        },
 +        {
 +            "​file_id":​ "​b30e0be0-e1d4-11ea-8732-172a3f85134f",​
 +            "​file_name":​ "​159781141836993.jpg",​
 +            "​file_owner":​ "​u1",​
 +            "​file_size":​ 326127,
 +            "​created":​ 1597811424158
 +        }
 +    ],
 +  "​timestamp":​ 1542363546590,​
 +  "​duration":​ 0,
 +  "​organization":​ "​easemob-demo",​
 +  "​applicationName":​ "​testapp"​
 +}
 +</​code>​
 +**返回值404,群组ID不存在**
 +<code json>
 +{
 +  "​error":​ "​resource_not_found",​
 +  "​timestamp":​ 1542363611915,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.ResourceNotFoundException",​
 +  "​error_description":​ "grpID 6602183678361 does not exist!"​
 +}
 +</​code>​
 +**返回值401,未授权[无token、token错误、token过期]**
 +<code json>
 +{
 +  "​error":​ "​group_authorization",​
 +  "​timestamp":​ 1542363640975,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.GroupAuthorizationException",​
 +  "​error_description":​ "this token is bad, or has expired!"​
 +}
 +</​code>​
 +
 +如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]]
 +
 +[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
 +----
 +
 +====上传群组共享文件====
 +上传指定群组id的群组共享文件。注意上传的文件大小不能超过10MB
 +
 +=== HTTP Request ===
 +
 +^{{:​im:​server:​basics:​post.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​share_files**^
 +需要在请求时对应填写{group_id},需要上传群组共享文件的群组 ID。
 +
 +=== Request Headers ===
 +
 +^参数^说明^
 +|Content-Type|application/​json|
 +|Authorization|Bearer ${token}|
 +
 +=== Response Body ===
 +在返回值中查看data字段包含的信息
 +^参数^说明^
 +|file_url|群组共享文件的url,在环信服务器上保存的地址|
 +|group_id|群组id|
 +|file_name|群组共享文件名称|
 +|created|上传群组共享文件的时间|
 +|file_id|群组共享文件id,可以用于下载共享文件和删除共享文件|
 +|file_size|群组共享文件大小(字节)|
 +
 +
 +=== 请求示例 ===
 +<code php>
 +curl -X POST '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files'​ -H '​Content-Type:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ -H '​content-type:​ multipart/​form-data;​ boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'​ -H '​restrict-access:​ true' -F file=@/​Users/​test/​image/​IMG_3.JPG
 +</​code>​
 +=== 可能返回的结果示例 ===
 +**返回值200,表示上传群组共享文件**
 +<code json>
 +{
 +
 +  "​action"​ : "​post",​
 +  "​application"​ : "​7f7b5180-3f2b-11e5-9558-092397c841ef",​
 +  "​uri"​ : "​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files",​
 +  "​entities"​ : [ ],
 +  "​data"​ : {
 +    "​file_url"​ : "​https://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files/​c6906aa0-ed19-11ea-b480-f3cf141d15c0",​
 +    "​group_id"​ : "​66021836783617",​
 +    "​file_name"​ : "​img_3.jpg",​
 +    "​created"​ : 1599050554954,​
 +    "​file_id"​ : "​c6906aa0-ed19-11ea-b480-f3cf141d15c0",​
 +    "​file_size"​ : 13512
 +  },
 +  "​timestamp"​ : 1599050554978,​
 +  "​duration"​ : 0,
 +  "​organization"​ : "​easemob-demo",​
 +  "​applicationName"​ : "​testapp"​
 +  ​
 +}
 +</​code>​
 +**返回值404,群组ID不存在**
 +<code json>
 +{
 +  "​error":​ "​resource_not_found",​
 +  "​timestamp":​ 1542363611915,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.ResourceNotFoundException",​
 +  "​error_description":​ "grpID 6602183678361 does not exist!"​
 +}
 +</​code>​
 +**返回值401,未授权[无token、token错误、token过期]**
 +<code json>
 +{
 +  "​error":​ "​group_authorization",​
 +  "​timestamp":​ 1542363640975,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.GroupAuthorizationException",​
 +  "​error_description":​ "this token is bad, or has expired!"​
 +}
 +</​code>​
 +
 +如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]]
 +
 +[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
 +----
 +
 +====下载群组共享文件====
 +根据指定的群组id与file_id下载群组共享文件,file_id是通过 [[http://​docs-im.easemob.com/​im/​server/​basics/​group#​%E8%8E%B7%E5%8F%96%E7%BE%A4%E7%BB%84%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6|获取群组共享文件]] 接口获取到的
 +
 +=== HTTP Request ===
 +
 +^{{:​im:​server:​basics:​get.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​share_files/​{file_id}**^
 +需要在请求时对应填写{group_id}和{file_id},需要下载群组共享文件的群组 ID和群组共享文件 ID 。
 +
 +=== Request Headers ===
 +
 +^参数^说明^
 +|Content-Type|application/​json|
 +|Authorization|Bearer ${token}|
 +
 +=== 请求示例 ===
 +<code php>
 +curl -X GET -H '​Content-Type:​ application/​json'​ -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files/​b30e0be0-e1d4-11ea-8732-172a3f85134f'​
 +</​code>​
 +=== 可能返回的结果示例 ===
 +**返回值200,表示下载群组共享文件成功,返回的是下载文件的字节流**
 +
 +
 +**返回值404,群组共享文件ID不存在**
 +<code json>
 +{
 +  "​error":​ "​not_found",​
 +  "​timestamp":​ 1542363611915,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.sun.jersey.api.NotFoundException",​
 +  "​error_description":​ "null for uri: http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files/​1b30e0be0-e1d4-11ea-8732-172a3f85134f"​
 +}
 +</​code>​
 +**返回值401,未授权[无token、token错误、token过期]**
 +<code json>
 +{
 +  "​error":​ "​group_authorization",​
 +  "​timestamp":​ 1542363640975,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.easemob.group.exception.GroupAuthorizationException",​
 +  "​error_description":​ "this token is bad, or has expired!"​
 +}
 +</​code>​
 +
 +如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]]
 +
 +[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
 +----
 +
 +====删除群组共享文件====
 +根据指定的群组id与file_id删除群组共享文件,file_id是通过 [[http://​docs-im.easemob.com/​im/​server/​basics/​group#​%E8%8E%B7%E5%8F%96%E7%BE%A4%E7%BB%84%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6|获取群组共享文件]] 接口获取到的
 +
 +=== HTTP Request ===
 +
 +^{{:​im:​server:​basics:​delete.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​share_files/​{file_id}**^
 +需要在请求时对应填写{group_id}和{file_id},需要删除群组共享文件的群组 ID和群组共享文件 ID 。
 +
 +=== Request Headers ===
 +
 +^参数^说明^
 +|Content-Type|application/​json|
 +|Authorization|Bearer ${token}|
 +
 +=== Response Body ===
 +在返回值中查看data字段包含的信息
 +^参数^说明^
 +|group_id|群组id|
 +|file_id|群组共享文件id|
 +|result|删除群组共享文件的结果,true代表删除成功,false代表删除失败|
 +
 +=== 请求示例 ===
 +<code php>
 +curl -X DELETE -H '​Content-Type:​ application/​json'​ -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMt4LqJIul7EeizhBO5TSO_UgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnG7GyAQBPGgDv4ENRUku7fg05Kev0a_aVC8NyA6O6PgpxIRjajSVN3g'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files/​b30e0be0-e1d4-11ea-8732-172a3f85134f'​
 +</​code>​
 +=== 可能返回的结果示例 ===
 +**返回值200,表示删除群组共享文件**
 +<code json>
 +{
 +  "​action":​ "​delete",​
 +  "​application":​ "​8be024f0-e978-11e8-b697-5d598d5f8402",​
 +  "​uri":​ "​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files/​b30e0be0-e1d4-11ea-8732-172a3f85134f",​
 +  "​entities":​ [],
 +  "​data":​ {
 +      "​group_id":​ "​66021836783617",​
 +      "​file_id":​ "​b30e0be0-e1d4-11ea-8732-172a3f85134f",​
 +      "​result":​ true
 +  },
 +  "​timestamp":​ 1599049350114,​
 +  "​duration":​ 0,
 +  "​organization":​ "​easemob-demo",​
 +  "​applicationName":​ "​testapp"​
 +}
 +</​code>​
 +**返回值404,群组共享文件ID不存在**
 +<code json>
 +{
 +  "​error":​ "​not_found",​
 +  "​timestamp":​ 1542363611915,​
 +  "​duration":​ 0,
 +  "​exception":​ "​com.sun.jersey.api.NotFoundException",​
 +  "​error_description":​ "null for uri: http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66021836783617/​share_files/​1b30e0be0-e1d4-11ea-8732-172a3f85134f"​
 } }
 </​code>​ </​code>​
行 921: 行 1399:
  
 ==== 批量移除群组成员 ==== ==== 批量移除群组成员 ====
-移除群成员,用户名之间用英文逗号分隔。如果所有被移除用户均不是群成员,将移除失败,并返回错误。+移除群成员,用户名之间用英文逗号分隔。建议一次最多移除60个群成员。如果所有被移除用户均不是群成员,将移除失败,并返回错误。
 === HTTP Request === === HTTP Request ===
  
行 945: 行 1423:
 === 请求示例 === === 请求示例 ===
 <code php> <code php>
-curl -X DELETE -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMtduapFumREei8DkfcegKdAAAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnHD8qUwBPGgC0sPDXWLwWYh8ObqXytVlhbUhCTnbiIPi0oNGS8j2pDg'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66016455491585/​users/​{memebers}'+curl -X DELETE -H '​Accept:​ application/​json'​ -H '​Authorization:​ Bearer YWMtduapFumREei8DkfcegKdAAAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnHD8qUwBPGgC0sPDXWLwWYh8ObqXytVlhbUhCTnbiIPi0oNGS8j2pDg'​ '​http://​a1.easemob.com/​easemob-demo/​testapp/​chatgroups/​66016455491585/​users/​ttestuser0015981,​user2,​user3'
 </​code>​ </​code>​
 === 可能返回的结果示例 === === 可能返回的结果示例 ===
行 1696: 行 2174:
  
 ^参数^说明^ ^参数^说明^
-|mute_duration|禁言的时间,单位毫秒,如果是“-1000”代表永久|+|mute_duration|禁言的时间,单位毫秒,如果是“-1”代表永久(实际的到期时间为固定时间戳4638873600000,即2117-01-01 00:00:00)|
 |usernames|要被添加禁言用户的 ID | |usernames|要被添加禁言用户的 ID |
  
行 1703: 行 2181:
 ^参数^说明^ ^参数^说明^
 |result|操作结果;true:添加成功;false:添加失败| |result|操作结果;true:添加成功;false:添加失败|
-|expire|禁言到期时间|+|expire|禁言到期时间戳(从1970年1月1日开始的毫秒数。如果禁言时间传的值为“-1”,那么该时间戳为固定的4638873600000,请参考 mute_duration 参数的说明)|
 |user|被禁言用户的 ID | |user|被禁言用户的 ID |
  
行 1773: 行 2251:
  
 [[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]] [[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]]
----- 
- 
-====群组成员全部禁言==== 
-将一个群组内所有群组成员禁言,但不包含群主以及群组管理员。群组成员被禁言后,将无法在群中发送消息。 
-=== HTTP Request === 
- 
-^{{:​im:​server:​basics:​post.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​mute**^ 
-需要在请求时对应填写{group_id},需要禁言的群组 ID。 
- 
-=== Request Headers === 
- 
-^参数^说明^ 
-|Content-Type|application/​json| 
-|Authorization|Bearer ${token}| 
- 
-=== Request Body === 
- 
-^参数^说明^ 
-|mute_duration|禁言的时间,单位毫秒,如果是“-1000”代表永久| 
-|role|要被添加禁言的角色是群组成员 | 
- 
-=== Response Body === 
- 
-^参数^说明^ 
-|result|操作结果;true:添加成功;false:添加失败| 
-|expire|禁言到期时间| 
-|user|被禁言用户的 ID | 
- 
-=== 请求示例 === 
-<code php> 
-curl -X POST HTTP://​a1.easemob.com/​easemob-demo/​testuser/​chatgroups/​126677237549236788/​mute -d '​{"​mute_duration":​86400000,"​role":"​member"​}'​ -H '​Authorization:​ Bearer YWMtG4T5wkOTEeST5V-9lp7f-wAAAUnafsqrQFnCU4gI0-rQImw4523fWqIasd1'​ 
-</​code>​ 
-=== 可能返回的结果示例 === 
-**返回值200,添加禁言成功** 
-<code json> 
-{ 
-  "​action"​ : "​post",​ 
-  "​application"​ : "​4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",​ 
-  "​uri"​ : "​http://​a1.easemob.com/​easemob-demo/​testuser/​chatgroups/​126677237549236788/​mute",​ 
-  "​entities"​ : [ ], 
-  "​data"​ : [ { 
-    "​result"​ : true, 
-    "​expire"​ : 1580888150285,​ 
-    "​user"​ : "​chenchaobing"​ 
-  }, { 
-    "​result"​ : true, 
-    "​expire"​ : 1580888150285,​ 
-    "​user"​ : "​u1"​ 
-  }, { 
-    "​result"​ : true, 
-    "​expire"​ : 1580888150285,​ 
-    "​user"​ : "​ccb2008"​ 
-  } ], 
-  "​timestamp"​ : 1580887550311,​ 
-  "​duration"​ : 0, 
-  "​organization"​ : "​easemob-demo",​ 
-  "​applicationName"​ : "​testuser"​ 
-} 
-</​code>​ 
- 
-如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]] 
- 
----- 
- 
-====群组成员全部解除禁言=== 
-将一个群组内所有群组成员解除禁言。 
-=== HTTP Request === 
- 
-^{{:​im:​server:​basics:​delete.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatgroups/​{group_id}/​mute?​role=member**^ 
-需要在请求时对应填写{group_id},需要解除禁言的群组 ID。 
- 
-=== Request Headers === 
- 
-^参数^说明^ 
-|Content-Type|application/​json| 
-|Authorization|Bearer ${token}| 
- 
-=== Response Body === 
- 
-^参数^说明^ 
-|result|操作结果;true:添加成功;false:添加失败| 
-|user|被解除禁言用户的 ID | 
- 
-=== 请求示例 === 
-<code php> 
-curl -X DELETE HTTP://​a1.easemob.com/​easemob-demo/​testuser/​chatgroups/​126677237549236788/​mute?​role=member -H '​Authorization:​ Bearer YWMtG4T5wkOTEeST5V-9lp7f-wAAAUnafsqrQFnCU4gI0-rQImw4523fWqIasd1'​ 
-</​code>​ 
-=== 可能返回的结果示例 === 
-**返回值200,解除禁言成功** 
-<code json> 
-{ 
-  "​action"​ : "​delete",​ 
-  "​application"​ : "​4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",​ 
-  "​params"​ : { 
-    "​role"​ : [ "​member"​ ] 
-  }, 
-  "​uri"​ : "​http://​a1.easemob.com/​easemob-demo/​testuser/​chatgroups/​126677237549236788/​mute",​ 
-  "​entities"​ : [ ], 
-  "​data"​ : [ { 
-    "​result"​ : true, 
-    "​user"​ : "​chenchaobing"​ 
-  }, { 
-    "​result"​ : true, 
-    "​user"​ : "​u1"​ 
-  }, { 
-    "​result"​ : true, 
-    "​user"​ : "​ccb2008"​ 
-  } ], 
-  "​timestamp"​ : 1580888462028,​ 
-  "​duration"​ : 0, 
-  "​organization"​ : "​easemob-demo",​ 
-  "​applicationName"​ : "​testuser"​ 
-} 
-</​code>​ 
- 
-如果返回结果是<​wrap em>​429、503</​wrap>​或者其他<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]] 
- 
 ---- ----
  
行 1907: 行 2268:
  
 ^参数^说明^ ^参数^说明^
-|expire|禁言到期时间,单位毫秒。“-1000“代表永久禁言|+|expire|禁言到期时间戳(从1970年1月1日开始的毫秒如果禁言时间传的值为“-1”,那么该时间戳为固定的4638873600000,请参考mute_duration参数的说明)|
 |user|被禁言用户的 ID | |user|被禁言用户的 ID |