跳到主要内容

加入群组管理

本文档旨在指导开发者如何使用融云即时通讯 Web IMLib SDK 实现主动加入群组、邀请用户加入群组、 用户同意或拒绝加入群组、 管理员同意或拒绝加群申请等功能。

提示

此功能从 5.12.0 版本开始支持。

用户申请或邀请事件及结果回调

用户加入群组可以通过用户主动调用 joinGroup 接口申请加入群组,或者群内成员调用 inviteUsersToGroup 邀请用户加入群组。产生的申请或邀请事件及结果可通过 Events.GROUP_APPLICATION_EVENT 接收,返回数据类型为 IGroupApplicationInfo

RongIMLib.addEventListener(Events.GROUP_APPLICATION_EVENT, (data) => {
console.log('用户申请或邀请事件及结果回调', data);
});

加入群组管理

加入群组管理包含:主动加入群组、邀请加入群组、 用户同意或拒绝加入群组、 管理员同意或拒绝加群申请等功能。

主动加入群组

您可以调用 joinGroup 方法主动加入一个群组。

提示

此接口的成功结果受群组的 joinPermission 权限影响,有以下两种情况:

  • 群组的加入权限为 需要群主审批或需要群主/管理员审批 时,接口调用成功后 processCode 会返回 25424 ,表示需要等待群主或管理员的审批。同时当前操作用户和群主或管理员会都会收到 Events.GROUP_APPLICATION_EVENT 事件回调。

  • 群组的加入权限为 无需审批 时,接口调用成功后 processCode 会返回 0,表示加入群组成功。同时当前操作用户和群内所有人会收到 Events.GROUP_OPERATION 事件回调,事件返回数据中 operation 操作类型值为 1,对应枚举 GroupOperation.JOIN

  • 群组的加入权限为 不允许任何人加入 时,无法通过 joinGroup 接口加入群组。

// 必填,最大长度 64 个字符。支持大小写英文字母与数字的组合
const groupId = 'group001';
const res = await RongIMLib.joinGroup(groupId);
console.info('加入群组结果', res);

邀请他人加入群组

此接口的使用受群组邀请角色权限 invitePermission 的控制,只有具有相应角色权限的用户才能邀请他人加入群组。

具备该权限的用户可以调用 inviteUsersToGroup 方法邀请他人加入群组。

邀请用户加入群组的行为受到以下三方面的影响:

  1. 加入权限joinPermission ):是否需要群主或管理员验证。
  2. 邀请人角色invitePermission ):邀请人是群主或管理员,还是普通用户。
  3. 被邀请人处理权限inviteHandlePermission ):是否需要被邀请人同意才能加入群组。
参数名类型必填描述
groupIdstring群组 ID
userIdsstring[]用户 ID 数组,最多支持 30 个用户。
const groupId = 'group001'; // 群组 ID
const userIds = ['user001', 'user002']; // 用户 ID 数组,最多支持 30 个用户

const res = await RongIMLib.inviteUsersToGroup(groupId, userIds);
console.info('邀请用户加入群组结果', res);

邀请规则

提示

下表中默认了群组的邀请权限 invitePermissionEveryone,即所有人都可以邀请他人加入群组。

开发中可以根据实际情况设置不同的权限。

加入权限邀请人角色被邀请人审批事件流程
需要群主/管理员审批普通用户需要流程 A
不需要流程 B
群主或管理员需要流程 C
不需要流程 D
无需群主/管理员审批所有角色需要流程 C
不需要流程 D
事件流程如下
流程 A

普通用户邀请他人,需要群主/管理员审批,需要被邀请人审批。

  1. 发出邀请后,成功回调的 code 返回 25424,表示需要等待群主/管理员审批。邀请人和群主/管理员会收到 Events.GROUP_APPLICATION_EVENT 事件回调。
  2. 群主/管理员同意后,邀请人、群主/管理员、被邀请人会收到 Events.GROUP_APPLICATION_EVENT 事件回调。
  3. 被邀请人同意后,邀请人、群主/管理员、被邀请人会收到 Events.GROUP_APPLICATION_EVENT 事件回调。群内所有用户会收到群组操作 Events.GROUP_OPERATION 事件回调,事件返回数据中 operation 操作类型值为 1,对应枚举 GroupOperation.JOIN
流程 B
  • 普通用户邀请他人,需要群主/管理员审批,不需要被邀请人审批。
  1. 发出邀请后,成功回调的 code 返回 25424,表示需要等待群主或管理员审批。邀请人和群主/管理员会收到 Events.GROUP_APPLICATION_EVENT 事件回调。
  2. 群主或管理员同意后,被邀请人加入群组成功。邀请人、群主或管理员会收到 Events.GROUP_APPLICATION_EVENT 事件回调。群内所有用户会收到 Events.GROUP_OPERATION 事件回调,事件返回数据中 operation 操作类型值为 1,对应枚举 GroupOperation.JOIN
流程 C
  • 任意角色用户邀请他人,无需群主/管理员审批,需要被邀请人审批。
  1. 发出邀请后,成功回调的 code 返回 25427,表示需要被邀请人同意后才能进入群组。邀请人和被邀请人会收到 Events.GROUP_APPLICATION_EVENT 事件回调。
  2. 被邀请人同意后,邀请人和被邀请人会收到 Events.GROUP_APPLICATION_EVENT 事件回调。群内所有用户会收到 Events.GROUP_OPERATION 事件回调,事件返回数据中 operation 操作类型值为 1,对应枚举 GroupOperation.JOIN
流程 D
  • 群主/管理员邀请他人,需要群主/管理员审批,不需要被邀请人审批。
  • 任意角色用户邀请他人,无需群主/管理员审批,不需要被邀请人审批。
  1. 发出邀请后,成功回调的 code 返回 0,表示邀请成功。被邀请人会直接加入群组,群内所有用户会收到 Events.GROUP_OPERATION 事件回调,事件返回数据中 operation 操作类型值为 1,对应枚举 GroupOperation.JOIN

用户处理入群邀请

同意入群邀请

用户在收到入群邀请后,可以调用 acceptGroupInvite 方法同意加入群组。

参数名类型必填描述
groupIdstring群组 ID
inviterIdstring发出邀请的用户 ID
const groupId = 'group001'; // 群组 ID
const inviterId = 'inviterId'; // 发出邀请的用户 ID
const res = await RongIMLib.acceptGroupInvite(groupId, inviterId);
console.info('同意加入群组结果', res);

拒绝入群邀请

用户在收到入群邀请后,可以调用 refuseGroupInvite 方法拒绝加入群组。

参数名类型必填描述
groupIdstring群组 ID
inviterIdstring发出邀请的用户 ID
reasonstring备注内容,拒绝时可选择是否输入拒绝原因,内容不超过 128 个字符。
const groupId = 'group001'; // 群组 ID
const inviterId = 'inviterId'; // 发出邀请的用户 ID
const reason = '不感兴趣'; // 非必填,拒绝原因
const res = await RongIMLib.refuseGroupInvite(groupId, inviterId, reason);
console.info('拒绝加入群组结果', res);

群主或管理员处理入群申请

同意入群申请

群主或管理员在收到入群申请后,可以调用 acceptGroupApplication 方法同意入群申请。

  • 若处理的是用户主动加群申请,applicantId 传入群者 ID, inviterId 参数不传或空字符串 ''
  • 若处理的是邀请加群申请,applicantId 传入群者 ID, inviterId 传入邀请人 ID。
参数名类型必填描述
groupIdstring群组 ID
applicantIdstring申请入群用户 ID
inviterIdstring邀请人 ID。非必填,如果是邀请入群,则传邀请人ID;如果是主动加群无需传递
const groupId = 'group001'; // 群组 ID
const applicantId = 'applicantId'; // 入群者 ID
const res = await RongIMLib.acceptGroupApplication(groupId, applicantId);
console.info('同意用户加入群组结果', res);

接口返回 code 受群组的被邀请人处理权限(inviteHandlePermission)影响,会有以下两种情况:

  1. 需要被邀请人同意时,code 会返回 25427,表示需要被邀请人同意后才能进入群组。被邀请人会收到 Events.GROUP_APPLICATION_EVENT 事件回调。
  2. 无需被邀请人同意时,code 会返回 0,表示被邀请者入群成功。群内所有用户会收到 Events.GROUP_OPERATION 加入群组类型事件回调。

拒绝入群申请

群主或管理员在收到入群申请后,可以调用 refuseGroupApplication 方法拒绝入群申请。

  • 若处理的是用户主动加群申请,applicantId 传入群者 ID, inviterId 参数不传或空字符串 ''
  • 若处理的是邀请加群申请,applicantId 传入群者 ID, inviterId 传入邀请人 ID。
参数名类型必填描述
groupIdstring群组 ID
applicantIdstring申请入群用户 ID
inviterIdstring邀请人 ID。非必填,如果是邀请入群,则传邀请人ID;如果是主动加群,可以为空。
reasonstring备注内容,拒绝时可选择是否输入拒绝原因,内容不超过 128 个字符。
const groupId = 'group001'; // 群组 ID
const applicantId = 'applicantId'; // 申请入群用户 ID
const inviterId = 'inviterId'; // 非必填,主动申请加入邀请人 ID 传递 '' 或者 undefined
const reason = '不符合群组要求'; // 非必填,拒绝原因
const res = await RongIMLib.refuseGroupApplication(groupId, applicantId, inviterId, reason);
console.info('拒绝用户加入群组结果', res);

分页获取群申请列表

您可以调用 getGroupApplications 方法分页获取群申请列表。

  • 群申请处理有效期为 7 天,融云服务端最多存储 7 天的请求数据,超过 7 天后需要重新发起请求。
注意

Web 返回的 IPagingQueryResult 结构中暂不支持返回 totalCount

参数名类型必填描述
optionIPagingQueryOption分页拉取参数,一页最多查询 200 条数据。
directionsGroupApplicationDirection群组请求方向数组,参数仅 Electron 支持,Web 传递无效
statusGroupApplicationStatus群组请求状态数组,参数仅 Electron 支持,Web 传递无效
const option = {
// 必填,范围 1 ~ 200
count: 50,
}
const directions = [GroupApplicationDirection.ApplicationSent]; // 群组请求方向数组
const status = [GroupApplicationStatus.JoinUnHandled]; // 群组请求状态数组
const res = await RongIMLib.getGroupApplications(option, directions, status);
console.info('获取群组请求结果', res);