====== 群组 ====== 环信 Web IM SDK 支持群组功能的集成,集成后可以进行如下操作: * 群组管理 * 群成员管理 * 加群处理 * 禁言管理 * 黑名单管理 * 群消息管理 通过这些操作,可以组合帮助您完成多种场景下的 IM 需求。 **注意:** 从 Web SDK V1.4.11 开始,群组管理的接口都已更新了 Rest 版本,V1.4.10 (包括V1.4.10)以下版本仍然保留 XMPP 版本,如果需要继续使用XMPP 版本的接口,请参考[[im:400webimintegration:40groupchat|群组管理]] ---- ===== 群组管理 ===== 群组管理包含以下处理操作: * 获取用户加入的群组列表 * 分页获取公开群 * 创建群组 * 获取群组信息 * 修改群组信息 * 解散群组 * 退出群组 所有处理操作的示例下面会一一说明。 ==== 获取用户加入的群组列表 ==== 调用''getGroup''函数获取当前登录用户加入的群组列表,示例如下: // 列出当前登录用户加入的所有群组 var options = { success: function (resp) { console.log("Response: ", resp) }, error: function (e) {}; conn.getGroup(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#getGroup|getGroup]] ---- ==== 分页获取公开群 ==== 调用''listGroups''函数分页获取当前登录用户加入的群组列表,示例如下: 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 * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#listGroups|listGroups]] ---- ==== 创建群组 ==== 调用''createGroupNew''函数创建群组,示例代码如下 var options = { data: { groupname: value, // 群组名 desc: info, // 群组描述 members: friendsSelected, // 用户名组成的数组 public: pub, // pub等于true时,创建为公开群 approval: approval, // approval为true,加群需审批,为false时加群无需审批 allowinvites: allowInvites }, success: function (respData) {}, error: function () {} }; conn.createGroupNew(options); **注意:** * 创建群组成功后会在回调函数里调用''onCreateGroup''函数 === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#createGroupNew|createGroupNew]] ---- ==== 获取群组信息 ==== 调用''getGroupInfo''根据群 id 获取群组详情,示例如下: var options = { groupId: gid, //群组id success: function(resp){ console.log("Response: ", resp); }, error: function(){} }; conn.getGroupInfo(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#getGroupInfo|getGroupInfo]] ---- ==== 修改群组信息 ==== 只有群组的管理员可以修改群组名称和群组简介,调用''modifyGroup''修改群组信息,示例如下: // 修改群信息 var changeGroupInfo = function () { var option = { roomId: '1480756943693', subject: 'ChangeTest', // 群组名称 description: 'Change group information test', // 群组简介 success: function () { console.log('Change Group Names Success!'); } }; conn.modifyGroup(option); }; **注意:** * 在获取群组时候就可以获取群管理员的 ID ,从而前端可决定是否显示修改信息按钮。 === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#modifyGroup|modifyGroup]] ---- ==== 解散群组 ==== * 只有群组的管理员有权限将成员踢出群组; * 群组解散后,所有群成员均退出该群。 调用''dissolveGroup''解散群组,示例如下: // 解散一个群组 var dissolveGroup = function () { var option = { groupId: '1480840256052', success: function () { console.log('Destroy group success!'); } }; conn.dissolveGroup(option); }; **注意:** * 在获取群组时候就可以获取群管理员的ID,从而前端可决定是否显示解散按钮。 === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#dissolveGroup|dissolveGroup]] ---- ==== 退出群组 ==== 群成员可以主动退出群组,调用''quitGroup''退出群组,示例如下: // 成员主动退出群 var leaveGroup = function () { var option = { to: 'asdfghj', roomId: '1480747027186', success: function () { console.log('You leave room succeed!'); }, error: function () { console.log('Leave room faild'); } }; conn.quitGroup(option); }; === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#quitGroup|quitGroup]] ---- ===== 群成员管理 ===== 群成员管理包含以下处理操作: * 查询群组成员 * 将成员设为管理员 * 将管理员撤销 * 获取群组下所有管理员 所有处理操作的示例下面会一一说明。 ==== 查询群组成员 ==== 调用''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 * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#listGroupMember|listGroupMember]] ---- ==== 将成员设为管理员 ==== 调用''setAdmin''将成员设为管理员,示例如下: var options = { groupId: "groupId", // 群组id username: "user", // 用户名 success: function(resp) {}, error: function(e){} }; conn.setAdmin(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#setAdmin|setAdmin]] ---- ==== 将管理员撤销 ==== 调用''removeAdmin''将管理员撤销,示例如下: var options = { groupId: "groupId", // 群组id username: "user", // 用户名 success: function(resp) {}, error: function (e) {} }; conn.removeAdmin(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#removeAdmin|removeAdmin]] ---- ==== 获取群组所有管理员 ==== 调用''getGroupAdmin''获取群组下所有管理员,示例如下: var options = { groupId: "groupId", // 群组id success: function (resp) {}, error: function(e){} }; conn.getGroupAdmin(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#getGroupAdmin|getGroupAdmin]] ---- ===== 加群处理 ===== 加群包含以下处理操作: * 将好友加入群组 * 向群组发出入群申请 * 同意用户加入群 * 拒绝用户加入群 所有处理操作的示例下面会一一说明。 ==== 将好友加入群组 ==== 管理员可以将好友加入群组。调用''inviteToGroup''将好友加入群组,示例如下: // 加好友入群 var addGroupMembers = function () { var option = { list: ['asdfghj', 'wjy6'], roomId: '1480841456167' }; conn.inviteToGroup(option); }; === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#inviteToGroup|inviteToGroup]] ---- ==== 向群组发出入群申请 ==== 调用''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 * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#joinGroup|joinGroup]] ---- ==== 同意用户加入群 ==== 只有管理员才有权限同意用户加入群组的请求。 调用''agreeJoinGroup''同意用户加群请求,示例如下: var options = { applicant: applicant, // 申请加群的用户名 groupId: groupId, // 群组ID success: function(resp){ console.log(resp); }, error: function(e){} }; conn.agreeJoinGroup(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#agreeJoinGroup|agreeJoinGroup]] ---- ==== 拒绝用户加入群 ==== 只有管理员才有权限拒绝用户加入群组的请求。 调用''rejectJoinGroup''拒绝用户加群请求,示例如下: var options = { applicant: applicant, // 申请加群的用户名 groupId: groupId, // 群组ID success: function(resp){ console.log(resp); }, error: function(e){} }; conn.rejectJoinGroup(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#rejectJoinGroup|rejectJoinGroup]] ---- ===== 禁言管理 ===== 禁言管理包含以下处理操作: * 将成员禁言 * 将成员解除禁言 * 获取群组下禁言成员 所有处理操作的示例下面会一一说明。 ==== 将成员禁言 ==== 调用''mute''将成员禁言,示例如下: var options = { username: "user", // 成员用户名 muteDuration: 886400000, // 禁言的时长,单位是毫秒 groupId: "groupId", success: function (resp) {}, error: function(e){} }; conn.mute(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#mute|mute]] ---- ==== 将成员解除禁言 ==== 调用''removeMute''将成员解除禁言,示例如下: var options = { groupId: "groupId", // 群组ID username: "user", // 成员用户名 success: function(resp){}, error: function (e) {} }; conn.removeMute(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#removeMute|removeMute]] ---- ==== 获取群组下禁言成员 ==== 调用''getMuted''获取群组下所有被禁言的成员,示例如下: var options = { groupId: "groupId", // 群组ID success: function (resp) {}, error: function(e){} }; conn.getMuted(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#getMuted|getMuted]] ---- ==== 开启和关闭全员禁言 ==== owner和管理员可以开启和关闭全员禁言。 //群组中禁言所有成员 var options = { groupId: "groupId", //群组id success: function (resp) {}, error: function(e){} }; conn.disableSendGroupMsg(options); //群组中解除所有成员禁言 conn.enableSendGroupMsg(options) === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#disableSendGroupMsg|disableSendGroupMsg]] * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#enableSendGroupMsg|enableSendGroupMsg]] ---- ==== 白名单管理 ==== 可以将用户添加到白名单中,用户白名单在管理员开启了全员禁言时生效,可以运行白名单用户发出消息。 另外可以将用户移出白名单,检查自己是否在白名单中以及获取白名单列表。 //添加用户到白名单 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 === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#addUsersToGroupWhitelist|addUsersToGroupWhitelist]] * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#rmUsersFromGroupWhitelist|rmUsersFromGroupWhitelist]] * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#getGroupWhitelist|getGroupWhitelist]] * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#isGroupWhiteUser|isGroupWhiteUser]] ---- ===== 黑名单管理 ===== 黑名单管理包含以下处理操作: * 将成员加入群黑名单(单个) * 将成员加入群黑名单(批量) * 将成员移除群组黑名单(单个) * 将成员移除群组黑名单(批量) * 获取群组黑名单 所有处理操作的示例下面会一一说明。 ==== 将成员加入群黑名单(单个) ==== 调用''groupBlockSingle''将单个成员加入群组黑名单,示例如下: var options = { groupId: Demo.selected, // 群组ID username: username, // 将要被加入黑名单的用户名 success: function (resp) { console.log("Response: ", resp); }, error: function(e){} }; conn.groupBlockSingle(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#groupBlockSingle|groupBlockSingle]] ---- ==== 将成员加入群黑名单(批量) ==== 调用''groupBlockMulti''将成员批量加入群组黑名单,示例如下: var options = { groupId: 'Your groupId', // 群组ID username: ['user1', 'user2', ...users], // 将要被加入黑名单的用户名数组 success: function (resp) { console.log("Response: ", resp); }, error: function(e){} }; conn.groupBlockMulti(options); === API === 示例中使用到的 API * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#groupBlockMulti|groupBlockMulti]] ---- ==== 将成员移除群组黑名单(单个) ==== 调用''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 * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#removeGroupBlockSingle|removeGroupBlockSingle]] ---- ==== 将成员移除群组黑名单(批量) ==== 调用''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 * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#removeGroupBlockMulti|removeGroupBlockMulti]] ---- ==== 获取群组黑名单 ==== 调用''getGroupBlacklistNew''获取群组黑名单,示例如下: // 获取群组黑名单 var getGroupBlackList = function () { var option = { roomId: '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 * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#getGroupBlacklistNew|getGroupBlacklistNew]] ---- ===== 群消息 ===== 群消息包含以下处理操作: * 发送消息 * 接收及处理消息 所有处理操作下面会一一说明。 ==== 发送消息 ==== 见[[im:web:basics:message#发送消息|发送消息]]。 ==== 接收及处理消息 ==== * 群聊接收及处理消息同单聊; * 消息体与单聊消息根据 message 的 type 进行区分; * 单聊为:chat,群聊为:groupchat,聊天室为:chatroom; * 根据消息的类型进行不同处理即可。 ---- 上一页:[[im:applet:buddy|好友管理]] 下一页:[[im:applet:chatroom|聊天室管理]]