群组

环信 Web IM SDK 支持群组功能的集成,集成后可以进行如下操作:

  • 群组管理
  • 群成员管理
  • 加群处理
  • 禁言管理
  • 黑名单管理
  • 群消息管理

通过这些操作,可以组合帮助您完成多种场景下的 IM 需求。

注意:

从 Web SDK V1.4.11 开始,群组管理的接口都已更新了 Rest 版本,V1.4.10 (包括V1.4.10)以下版本仍然保留 XMPP 版本,如果需要继续使用XMPP 版本的接口,请参考群组管理


群组管理包含以下处理操作:

  • 获取用户加入的群组列表
  • 分页获取公开群
  • 创建群组
  • 获取群组信息
  • 修改群组信息
  • 移除成员
  • 解散群组
  • 退出群组

所有处理操作的示例下面会一一说明。

获取用户加入的群组列表

调用getGroup函数获取当前登录用户加入的群组列表,示例如下:

// 列出当前登录用户加入的所有群组
var options = {
    success: function (resp) {
        console.log("Response: ", resp)
    },
    error: function (e) {};
}
conn.getGroup(options);

API

示例中使用到的 API


分页获取公开群

调用listGroups函数分页获取APP下所有的公开群组列表,示例如下:

var limit = 20,
    cursor = globalCursor;
    var options = {
        limit: limit,                                            // 预期每页获取的记录数
        cursor: cursor,                                          // 游标
        success: function (resp) {
            console.log("Response: ", resp);
            globalCursor = resp.cursor;
        },
        error: function (e) {}
    };
conn.listGroups(options);

注意:

  • 如果数据还有下一页,API 返回值会包含此字段,传递此字段可获取下一页的数据,默认为null,为null时获取第一页数据

API

示例中使用到的 API


创建群组

调用createGroupNew函数创建群组,示例代码如下

var options = {
            data: {
                groupname: value,                    // 群组名
                desc: info,                          // 群组描述
                members: friendsSelected,            // 用户名组成的数组
                public: pub,                         // pub等于true时,创建为公开群
                approval: approval,                  // approval为true,加群需审批,为false时加群无需审批
                allowinvites: allowInvites           // true:允许群成员邀请人加入此群,false:只有群主才可以往群里加人   
            },
            success: function (respData) {},
            error: function () {}
};
conn.createGroupNew(options);

注意:

  • 创建群组成功后会在回调函数里调用onCreateGroup函数

API

示例中使用到的 API


获取群组信息

调用getGroupInfo根据群 id 获取群组详情,示例如下:

var options = {
    groupId: gid,                                //群组id
    success: function(resp){
        console.log("Response: ", resp);
    },
    error: function(){}
};
conn.getGroupInfo(options);

API

示例中使用到的 API


修改群组信息

只有群组的管理员可以修改群组名称和群组简介,调用modifyGroup修改群组信息,示例如下:

// 修改群信息
var changeGroupInfo = function () {
    var option = {
        groupId: '1480756943693',
        groupName: 'ChangeTest',                         // 群组名称
        description: 'Change group information test',  // 群组简介
        success: function () {
            console.log('Change Group Names Success!');
        }
    };
    conn.modifyGroup(option);
};

注意:

  • 在获取群组时候就可以获取群管理员的 ID ,从而前端可决定是否显示修改信息按钮。

API

示例中使用到的 API


移除群组成员

只有群组的管理员可以移除群组成员,调用removeSingleGroupMember移除群组成员,示例如下:

// 移除群组成员
var removeSingleGroupMember = function () {
    var option = {
        groupId: '1480756943693',
        username: 'username',                         // 群组成员名称
        success: function () {
            console.log('Remove groupUser success');
        }
    };
    conn.removeSingleGroupMember(option);
};

API

示例中使用到的 API


解散群组

  • 只有群组的管理员有权限将成员踢出群组;
  • 群组解散后,所有群成员均退出该群。

调用dissolveGroup解散群组,示例如下:

// 解散一个群组
var dissolveGroup = function () {
    var option = {
        groupId: '1480840256052',
        success: function () {
            console.log('Destroy group success!');
        }
    };
    conn.dissolveGroup(option);
};

注意:

  • 在获取群组时候就可以获取群管理员的ID,从而前端可决定是否显示解散按钮。

API

示例中使用到的 API


退出群组

群成员可以主动退出群组,调用quitGroup退出群组,示例如下:

// 成员主动退出群
var leaveGroup = function () {
    var option = {
        to: 'asdfghj',
        groupId: '1480747027186',
        success: function () {
            console.log('You leave room succeed!');
        },
        error: function () {
            console.log('Leave room faild');
        }
    };
    conn.quitGroup(option);
};

API

示例中使用到的 API


群公告管理包含以下处理操作:

  • 上传/修改群公告
  • 获取群公告

所有处理操作的示例下面会一一说明。

上传/修改群公告

调用updateGroupAnnouncement函数上传/修改群公告,示例如下:

var options = {
    groupId: '1000000000000',            // 群组id   
    announcement: 'announcement',        // 公告内容                        
    success: function (resp) {},
    error: function(e){}
};
conn.updateGroupAnnouncement(options);

获取群公告

调用fetchGroupAnnouncement函数获取群公告,示例如下:

var options = {
    groupId: '1000000000000',            // 群组id                          
    success: function (resp) {},
    error: function(e){}
};
conn.fetchGroupAnnouncement(options);

群文件管理包含以下处理操作:

  • 上传群文件
  • 下载群文件
  • 删除群文件
  • 获取群文件列表

所有处理操作的示例下面会一一说明。

上传群文件

调用uploadGroupSharedFile函数上传群文件,示例如下:

var options = {
    groupId: '1000000000000',                  // 群组id 
    file: file,                                // <input type="file"/>获取的file文件对象                         
    onFileUploadProgress: function(resp) {},   // 上传进度的回调
    onFileUploadComplete: function(resp) {},   // 上传完成时的回调
    onFileUploadError: function(e) {},         // 上传失败的回调
    onFileUploadCanceled: function(e) {}       // 上传取消的回调
};
conn.uploadGroupSharedFile(options);

下载群文件

调用downloadGroupSharedFile函数下载群文件,示例如下:

var options = {
    groupId: '1000000000000',                  // 群组id 
    fileId: 'fileId',                          // 文件id                        
    onFileDownloadComplete: function(resp) {}, // 下载成功的回调
    onFileDownloadError: function(e) {},       // 下载失败的回调
};
conn.downloadGroupSharedFile(options);

删除群文件

调用deleteGroupSharedFile函数删除群文件,示例如下:

var options = {
    groupId: '1000000000000',                  // 群组id 
    fileId: 'fileId',                          // 文件id                        
    success: function(resp) {},
    error: function(e) {},
};
conn.deleteGroupSharedFile(options);

获取群文件列表

调用fetchGroupSharedFileList函数获取群文件列表,示例如下:

var options = {
    groupId: '1000000000000',                  // 群组id                        
    success: function(resp) {},
    error: function(e) {},
};
conn.fetchGroupSharedFileList(options);

群成员管理包含以下处理操作:

  • 查询群组成员
  • 将成员设为管理员
  • 将管理员撤销
  • 获取群组下所有管理员

所有处理操作的示例下面会一一说明。

查询群组成员

调用listGroupMember函数分页获取当前群组的所有成员,示例如下:

var pageNum = 1,
    pageSize = 1000;
    var options = {
        pageNum: pageNum,                                               // 页码
        pageSize: pageSize,                                             // 预期每页获取的记录数
        groupId: 'yourGroupId',                                       
        success: function (resp) { console.log("Response: ", resp)},
        error: function(e){}
    };
conn.listGroupMember(options);

API

示例中使用到的 API


将成员设为管理员

调用setAdmin将成员设为管理员,示例如下:

var options = {
        groupId: "groupId",            // 群组id
        username: "user",              // 用户名
        success: function(resp) {},
        error: function(e){}
    };
conn.setAdmin(options);

API

示例中使用到的 API


将管理员撤销

调用removeAdmin将管理员撤销,示例如下:

var options = {
        groupId: "groupId",             // 群组id
        username: "user",               // 用户名
        success: function(resp) {},
        error: function (e) {}
     };
conn.removeAdmin(options);

API

示例中使用到的 API


获取群组所有管理员

调用getGroupAdmin获取群组下所有管理员,示例如下:

var options = {
        groupId: "groupId",                 // 群组id
        success: function (resp) {},
        error: function(e){}
    };
conn.getGroupAdmin(options);

API

示例中使用到的 API


加群包含以下处理操作:

  • 将好友加入群组
  • 向群组发出入群申请
  • 同意用户加入群
  • 拒绝用户加入群

所有处理操作的示例下面会一一说明。

将好友加入群组

管理员可以将好友加入群组。调用inviteToGroup将好友加入群组,示例如下:

// 加好友入群
var addGroupMembers = function () {
    var option = {
        users: ['asdfghj', 'wjy6'],
        groupId: '1480841456167'
    };
    conn.inviteToGroup(option);
};

API

示例中使用到的 API


向群组发出入群申请

调用joinGroup向群组发出入群申请,示例如下:

var options = {
        groupId: "groupId",                              // 群组ID
        success: function(resp) {
            console.log("Response: ", resp);
        },
        error: function(e) {
            if(e.type == 17){
                console.log("您已经在这个群组里了");
            }
        }
    };
conn.joinGroup(options);

API

示例中使用到的 API


同意用户加入群

只有管理员才有权限同意用户加入群组的请求。

调用agreeJoinGroup同意用户加群请求,示例如下:

var options = {
        applicant: applicant,                          // 申请加群的用户名
        groupId: groupId,                              // 群组ID
        success: function(resp){
            console.log(resp);
        },
        error: function(e){}
    };
conn.agreeJoinGroup(options);

API

示例中使用到的 API


拒绝用户加入群

只有管理员才有权限拒绝用户加入群组的请求。

调用rejectJoinGroup拒绝用户加群请求,示例如下:

var options = {
        applicant: applicant,                // 申请加群的用户名
        groupId: groupId,                    // 群组ID
        success: function(resp){
            console.log(resp);
        },
        error: function(e){}
    };
conn.rejectJoinGroup(options);

API

示例中使用到的 API


禁言管理包含以下处理操作:

  • 将成员禁言
  • 将成员解除禁言
  • 获取群组下禁言成员

所有处理操作的示例下面会一一说明。

将成员禁言

调用mute将成员禁言,示例如下:

var options = {
        username: "user",                      // 成员用户名
        muteDuration: 886400000,               // 禁言的时长,单位是毫秒
        groupId: "groupId",
        success: function (resp) {},
        error: function(e){}
    };
conn.mute(options);

API

示例中使用到的 API


将成员解除禁言

调用removeMute将成员解除禁言,示例如下:

var options = {
        groupId: "groupId",                  // 群组ID
        username: "user",                    // 成员用户名
        success: function(resp){},
        error: function (e) {}
    };
conn.removeMute(options);

API

示例中使用到的 API


获取群组下禁言成员

调用getMuted获取群组下所有被禁言的成员,示例如下:

var options = {
            groupId: "groupId",                // 群组ID
            success: function (resp) {},
            error: function(e){}
        };
conn.getMuted(options);

API

示例中使用到的 API


开启和关闭全员禁言

owner和管理员可以开启和关闭全员禁言。

//群组中禁言所有成员
var options = {
      groupId: "groupId", //群组id
      success: function (resp) {},
      error: function(e){}
    };
conn.disableSendGroupMsg(options);

//群组中解除所有成员禁言
conn.enableSendGroupMsg(options)

API

示例中使用到的 API


白名单管理

可以将用户添加到白名单中,用户白名单在管理员开启了全员禁言时生效,可以运行白名单用户发出消息。 另外可以将用户移出白名单,检查自己是否在白名单中以及获取白名单列表。

//添加用户到白名单
var options = {
    groupId: "groupId", //群组id
    users: ["user1", "user2"], //成员id列表
    success: function (resp) {},
    error: function(e){}
};
conn.addUsersToGroupWhitelist(options);

//将用户从白名单移除
var options = {
    groupId: "groupId", //群组id
    userName: "user", //要移除的成员
    success: function (resp) {},
    error: function(e){}
}
conn.rmUsersFromGroupWhitelist(options)

//从服务器获取白名单成员列表
var options = {
    groupId: "groupId", //群组id
    success: function (resp) {},
    error: function(e){}
}
conn.getGroupWhitelist(options)

//查询群成员是否是白名单用户,操作权限:app admin可查询所有用户;app user可查询自己
var options = {
    groupId: "groupId", //群组id
    userName: "user", //要查询的成员
    success: function (resp) {},
    error: function(e){}
}
conn.isGroupWhiteUser(options)

API

黑名单管理包含以下处理操作:

  • 将成员加入群黑名单(单个)
  • 将成员加入群黑名单(批量)
  • 将成员移除群组黑名单(单个)
  • 将成员移除群组黑名单(批量)
  • 获取群组黑名单

所有处理操作的示例下面会一一说明。

将成员加入群黑名单(单个)

调用groupBlockSingle将单个成员加入群组黑名单,示例如下:

var options = {
        groupId: Demo.selected,                     // 群组ID
        username: username,                         // 将要被加入黑名单的用户名
        success: function (resp) {
            console.log("Response: ", resp);
        },
        error: function(e){}
    };
conn.groupBlockSingle(options);

API

示例中使用到的 API


将成员加入群黑名单(批量)

调用groupBlockMulti将成员批量加入群组黑名单,示例如下:

var options = {
        groupId: 'Your groupId',                         // 群组ID
        usernames: ['user1', 'user2', ...users],          // 将要被加入黑名单的用户名数组
        success: function (resp) {
            console.log("Response: ", resp);
        },
        error: function(e){}
    };
conn.groupBlockMulti(options);

API

示例中使用到的 API


将成员移除群组黑名单(单个)

调用removeGroupBlockSingle将单个成员从群组黑名单中移除,示例如下:

var options = {
        groupId: "Your Group ID",                     // 群组ID              
        username: "user",                             // 需要移除的用户名
        success: function(resp){
            console.log("Response: ", resp);
        },
        error: function(e) {};
    }
conn.removeGroupBlockSingle(options);

API

示例中使用到的 API


将成员移除群组黑名单(批量)

调用removeGroupBlockMulti将成员批量从群组黑名单中移除,示例如下:

var options = {
        groupId: "Your Group ID",                       // 群组ID
        username: ["user1", "user2"],                   // 需要移除的用户名数组
        success: function(resp){
            console.log("Response: ", resp);
        },
        error: function(e) {};
    }
conn.removeGroupBlockMulti(options);

API

示例中使用到的 API


获取群组黑名单

调用getGroupBlacklistNew获取群组黑名单,示例如下:

// 获取群组黑名单
var getGroupBlackList = function () {
    var option = {
        groupId: '1480758709661',
        success: function (list) {
            console.log('Get group black list: ', list);
        },
        error: function () {
            console.log('Get group black list error.');
        }
    };
    conn.getGroupBlacklistNew(option);
};

API

示例中使用到的 API


可以在注册的监听事件onPresence里监听群组相关的事件:

conn.listen({
  onPresence: function(msg){
    switch(msg.type){
    case 'rmGroupMute':
      // 解除群组一键禁言
      break;
    case 'muteGroup':
      // 群组一键禁言
      break;
    case 'rmUserFromGroupWhiteList':
      // 删除群白名单成员
      break;
    case 'addUserToGroupWhiteList':
      // 增加群白名单成员
      break;
    case 'deleteFile':
      // 删除群文件
      break;
    case 'uploadFile':
      // 上传群文件
      break;
    case 'deleteAnnouncement':
      // 删除群公告
      break;
    case 'updateAnnouncement':
      // 更新群公告
      break;
    case 'removeMute':
      // 解除禁言
      break;
    case 'addMute':
      // 禁言
      break;
    case 'removeAdmin':
      // 移除管理员
      break;
    case 'addAdmin':
      // 添加管理员
      break;
    case 'changeOwner':
      // 转让群组
      break;
    case 'direct_joined':
      // 直接被拉进群
      break;
    case 'leaveGroup':
      // 退出群
      break;
    case 'memberJoinPublicGroupSuccess':
      // 加入公开群成功
      break;
    case 'removedFromGroup':
      // 从群组移除
      break;
    case 'invite_decline':
      // 拒绝加群邀请
      break;
    case 'invite_accept':
      // 接收加群邀请
      break;
    case 'invite':
      // 发加群邀请
      break;
    case 'joinPublicGroupDeclined':
      // 拒绝入群申请
      break;
    case 'joinPublicGroupSuccess':
      // 同意入群申请
      break;
    case 'joinGroupNotifications':
      // 申请入群
      break;
    case 'leave':
      // 退出群
      break;
    case 'join':
      // 加入群
      break;
    case 'deleteGroupChat':
      // 解散群
      break;
    default:
      break;
  }}
})

群消息包含以下处理操作:

  • 发送消息
  • 接收及处理消息

所有处理操作下面会一一说明。

发送消息

发送消息

接收及处理消息

  • 群聊接收及处理消息同单聊;
  • 消息体与单聊消息根据 message 的 type 进行区分;
  • 单聊为:chat,群聊为:groupchat,聊天室为:chatroom;
  • 根据消息的类型进行不同处理即可。

上一页:好友管理

下一页:聊天室管理