IM 即时通讯
Windows/macOS
产品介绍
简介
主要功能
产品优势
海外数据中心
IM平滑迁移方案
接口及业务限制
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
更新日志
Demo 更新日志
NIM SDK 更新日志
快速开始
实现单聊消息收发(不含 UI)
实现圈组消息收发(不含 UI)
开发指南
概要介绍
集成方式(当前版本)
集成方式(Windows旧版本)
集成方式(macOS旧版本)
初始化
登录登出
消息收发
最近会话
历史记录
用户资料托管
好友关系托管
事件订阅
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
开通聊天室功能
聊天室
圈组功能
初始化
登录圈组
圈组服务器管理
圈组服务器成员管理
游客功能
频道相关
频道管理
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器和频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
频道分组身份组
频道用户定制权限
自定义权限项
成员权限判定
身份组相关查询
圈组订阅机制
圈组消息相关
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
会话消息回复(Thread)
圈组快捷评论
获取频道最后一条消息
消息正在输入
圈组消息搜索
圈组消息查询
查询@我的消息
服务器未读数
圈组系统通知
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组各端接口命名差异
语音录制与播放
NOS云存储服务
文档转换
反垃圾(内容审核)
API 参考
Windows/macOS API 参考
状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
配置应用客户端标识
参考文档
升级指引
开发示例
UI库指南
Demo源码导读
打包发布
类与常量定义说明
常见问题
FAQ
服务协议

身份组管理

更新时间: 2022/12/06 14:19:39

服务器身份组

创建服务器身份组

功能介绍

调用 CreateServerRole 方法在服务器中创建一个身份组。

创建服务器的时候,会自动创建@所有人身份组。该身份组的权限配置只有服务器创建者可修改。

参数说明

参数 类型 说明
info.role_icon QChatRoleInfoBase 服务器图片
anti_spam_info {} QChatBusinessAntiSpamInfo 配置反垃圾信息,可配置反垃圾文本业务 ID 或 反垃圾图片业务 ID。

示例代码

CreateServerRoleParam param;
param.info.server_id = 123456;
param.info.role_name = "role name";
param.info.role_icon = "role icon url";
param.info.extension = "extension";
param.info.role_type = kRoleTypeCustom;
param.info.priority = 1;
param.anti_spam_info.text_bid = "anti spam text business id";
param.anti_spam_info.pic_bid = "anti spam pic business id";
param.cb = [this](const CreateServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::CreateServerRole(param);

删除服务器身份组

功能介绍

调用 DeleteServerRole 方法从服务器中删除指定身份组。

示例代码

DeleteServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.cb = [this](const DeleteServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::DeleteServerRole(param);

更新服务器身份组

功能介绍

调用 UpdateServerRole 方法更新服务器中指定身份组, 可更新的身份组信息包括身份组名称、身份组图片、身份组权限配置等。

仅自定义身份组(即 QChatRoleInfoBaserole_type 值为 2 的身份组)支持调用该方法更新信息。创建服务器时默认创建的 @everyone 身份组(即 role_type 值为 1 的身份组),不支持调用该方法更新信息,仅支持修改权限。如调用该方法更新 @everyone 身份组信息(身份组的名称,图标,自定义扩展,优先级),将报错(错误码 403).

参数说明

参数 类型 说明
role_icon QChatRoleInfoBase 服务器图片
anti_spam_info {} QChatBusinessAntiSpamInfo 配置反垃圾信息,可配置反垃圾文本业务 ID 或 反垃圾图片业务 ID。
permissions QChatPermission 配置身份组权限。如 kPermissionBanServerMember表示封禁服务器成员的权限,具体权限类型可参见NIMQChatPermissions

9.3.0 版本新增申请邀请管理权限以及申请邀请历史查看权限类型。

示例代码

UpdateServerRoleParam param;
param.info.server_id = 123456;
param.info.role_id = 123456;
param.info.role_name = "role name";
param.info.role_icon = "role icon url";
param.info.extension = "extension";
param.info.permissions[kPermissionManageServer] = kPermissionSwitchAllow;
param.info.permissions[kPermissionManageChannel] = kPermissionSwitchDeny;
param.info.permissions[kPermissionManageRole] = kPermissionSwitchExtend;
param.info.permissions[kPermissionBanServerMember] = kPermissionSwitchAllow
param.anti_spam_info.text_bid = "anti spam text business id";
param.anti_spam_info.pic_bid = "anti spam pic business id";
// ...
param.info.priority = params["priority"].asUInt64();
param.cb = [this](const UpdateServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateServerRole(param);

批量更新身份组优先级

功能介绍

调用 UpdateServerRolePriorities 方法批量更新服务器身份组优先级。

如您具备修改身份组优先级权限,则服务器会应用您传递的参数中身份组优先级列表所有的内容。 比如在 UI 展示中,允许拖拽对身份组优先级进行排序,则在排序完成后将最终的排序列表传递到参数中即可。

示例代码

UpdateServerRolePrioritiesParam param;
param.server_id = 123456;
param.priority_map = {{123456, 1}, {234567, 2}};
param.cb = [this](const UpdateServerRolePrioritiesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateServerRolePriorities(param);

查询服务器身份组

功能介绍

调用 GetServerRoles 方法获取指定服务器下已创建的身份组列表, 从指定优先级开始分页查询

示例代码

GetServerRolesParam param;
param.server_id = 123456;
param.limit = 20;
param.priority = 1;
param.cb = [this](const GetServerRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetServerRoles(param);

添加服务器身份组成员

功能介绍

你可通过 AddMembersToServerRole 方法添加部分成员到服务器指定的身份组中。

示例代码

AddMembersToServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.members_accids = {"accid1", "accid2"};
param.cb = [this](const AddMembersToServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::AddMembersToServerRole(param);

删除服务器身份组成员

功能介绍

调用 RemoveMembersFromServerRole 方法从服务器指定身份组移除部分成员。

示例代码

RemoveMembersFromServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.members_accids = {"accid1", "accid2"};
param.cb = [this](const RemoveMembersFromServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::RemoveMembersFromServerRole(param);

查询服务器身份组成员

功能介绍

调用 GetMembersFromServerRole 方法,从服务器指定身份组中分页查询成员列表。

仅自定义身份组(即 QChatRoleInfoBaserole_type 值为 2 的身份组)支持调用该方法查询身份组成员。创建服务器时默认创建的 @everyone 身份组(即role_type 值为 1 的身份组),不支持查询成员信息,@everyone 身份组默认包含所有身份组成员。如调用该方法查询 @everyone 身份组成员,将报错(错误码 403).

示例代码

GetMembersFromServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.begin_account_id = "";
param.cb = [this](const GetMembersFromServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetMembersFromServerRole(param);

查询指定用户所在身份组列表

功能介绍

通过 GetRolesByAccid 方法,您可根据用户 ID 获取其已经分配的身份组列表。

示例代码

GetRolesByAccidParam param;
param.server_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.account_id = "accid1";
param.cb = [this](const GetRolesByAccidResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetRolesByAccid(param);

批量查询用户所在服务器身份组列表

功能介绍

通过 GetExistingServerRolesByAccids 方法,您可根据一组用户列表查询该列表下已存在的身份组列表信息。

示例代码

GetExistingServerRolesByAccidsParam param;
param.server_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingServerRolesByAccidsResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
    // if accid2 is not in any role, then resp will only return roles which has accid1
};
Role::GetExistingServerRolesByAccids(param);

查询身份组是否包含指定成员

功能介绍

通过 GetExistingAccidsInServerRole 方法,可查询服务器某身份组是否包含指定成员。

示例代码

GetExistingAccidsInServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingAccidsInServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetExistingAccidsInServerRole(param);
    }));

查询当前用户是否拥有特定权限

功能介绍

通过 CheckPermission 方法可查询当前登录用户是否拥有特定权限 示例代码


QChatCheckPermissionParam param;
param.server_id = 123456;
param.channel_id = 123456; // set to zero if you want to check permission in server
param.permission = kPermissionManageChannel;
param.cb = [this](const CheckPermissionResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::CheckPermission(param);

频道身份组

添加频道身份组

功能介绍

可通过 AddChannelRole 方法添加一个身份组到频道。

示例代码

AddChannelRoleParam param;
param.server_id = 123456;
param.parent_role_id = 123456; // i.e. server role id
param.channel_id = params["channel_id"].asUInt64();
param.cb = [this](const AddChannelRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::AddChannelRole(param);

移除频道身份组

功能介绍

可通过 RemoveChannelRole 方法从频道中移除指定身份组。

示例代码

RemoveChannelRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.role_id = 123456;
param.cb = [this](const RemoveChannelRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::RemoveChannelRole(param);

更新频道身份组

功能介绍

可通过 UpdateChannelRole 方法更新频道中指定身份组的信息。

示例代码

UpdateChannelRoleParam param;
param.server_id = params["server_id"].asUInt64();
param.role_id = params["role_id"].asUInt64();
param.channel_id = params["channel_id"].asUInt64();
param.permissions[kPermissionManageChannel] = kPermissionSwitchAllow;
param.permissions[kPermissionManageRole] = kPermissionSwitchDeny;
param.permissions[kPermissionSendMessage] = kPermissionSwitchExtend;
// ...
param.cb = [this](const UpdateChannelRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateChannelRole(param);

查询频道身份组

功能介绍

可通过 GetChannelRoles 方法获取频道下所有已分配的身份组信息。

示例代码

GetChannelRolesParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.cb = [this](const GetChannelRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetChannelRoles(param);

批量查询已存在频道身份组列表

功能介绍

通过 GetExistingChannelRolesByServerRoleIds 方法,您可根据一组身份组列表查询频道中已经存在的身份组。

示例代码

GetExistingChannelRolesByServerRoleIdsParam param;
param.server_id = 123456;
param.role_ids = {123456, 234567};
param.cb = [this](const GetExistingChannelRolesByServerRoleIdsResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetExistingChannelRolesByServerRoleIds(param);

用户特殊权限

添加频道成员特殊权限

功能介绍

通过 AddMemberRole 方法,您可在频道中添加针对指定人的特殊权限配置。

示例代码

AddMemberRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.account_id = "accid1";
param.cb = [this](const AddMemberRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::AddMemberRole(param);

移除频道成员特殊权限

功能介绍

通过 RemoveMemberRole 方法,您可从频道中移除指定人的特殊权限配置。

示例代码

RemoveMemberRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.account_id = "accid1";
param.cb = [this](const RemoveMemberRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::RemoveMemberRole(param);

更新频道成员特殊权限

功能介绍

通过 UpdateMemberRole 方法,您可更新频道中指定人的特殊权限配置。

调用该接口需要管理角色权限。如没有该权限,调用将返回 403 错误码。

示例代码

UpdateMemberRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.account_id = "accid1";
param.permissions[kPermissionManageChannel] = kPermissionSwitchAllow;
param.permissions[kPermissionManageRole] = kPermissionSwitchDeny;
param.permissions[kPermissionSendMessage] = kPermissionSwitchExtend;
// ...
param.cb = [this](const UpdateMemberRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateMemberRole(param);

查询频道成员特殊权限

功能介绍

通过 GetMemberRoles 方法,您可分页获取频道下所有针对人的特殊权限配置列表。

调用该接口需要拥有

示例代码

GetMemberRolesParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.cb = [this](const GetMemberRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetMemberRoles(param);

批量查询已存在特殊用户权限列表

功能介绍

通过 GetExistingAccidsOfMemberRoles 方法,您可根据一组用户 ID 查询指定频道下的定制权限信息

示例代码

GetExistingAccidsOfMemberRolesParam param;
param.server_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingAccidsOfMemberRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetExistingAccidsOfMemberRoles(param);

查询当前用户是否拥有某些权限

调用CheckPermissions方法,可指定服务器和频道查询自己是否拥有某些权限(单次最多可查 10 个权限)。

示例代码如下:

QChatCheckPermissionsParam param;
param.server_id = 123456;
param.channel_id = 123456; // set to zero if you want to check permission in server
param.permissions = {kPermissionManageChannel, kPermissionSendMessage};
param.cb = [this](const QChatCheckPermissionsResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::CheckPermissions(param);
此文档是否对你有帮助?
有帮助
我要吐槽
  • 服务器身份组
  • 创建服务器身份组
  • 功能介绍
  • 参数说明
  • 示例代码
  • 删除服务器身份组
  • 功能介绍
  • 示例代码
  • 更新服务器身份组
  • 功能介绍
  • 参数说明
  • 示例代码
  • 批量更新身份组优先级
  • 功能介绍
  • 示例代码
  • 查询服务器身份组
  • 功能介绍
  • 示例代码
  • 添加服务器身份组成员
  • 功能介绍
  • 示例代码
  • 删除服务器身份组成员
  • 功能介绍
  • 示例代码
  • 查询服务器身份组成员
  • 功能介绍
  • 示例代码
  • 查询指定用户所在身份组列表
  • 功能介绍
  • 示例代码
  • 批量查询用户所在服务器身份组列表
  • 功能介绍
  • 示例代码
  • 查询身份组是否包含指定成员
  • 功能介绍
  • 示例代码
  • 查询当前用户是否拥有特定权限
  • 功能介绍
  • 频道身份组
  • 添加频道身份组
  • 功能介绍
  • 示例代码
  • 移除频道身份组
  • 功能介绍
  • 示例代码
  • 更新频道身份组
  • 功能介绍
  • 示例代码
  • 查询频道身份组
  • 功能介绍
  • 示例代码
  • 批量查询已存在频道身份组列表
  • 功能介绍
  • 示例代码
  • 用户特殊权限
  • 添加频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 移除频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 更新频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 查询频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 批量查询已存在特殊用户权限列表
  • 功能介绍
  • 示例代码
  • 查询当前用户是否拥有某些权限