====== 聊天室管理 ======
更新时间:2021-12-31
新版文档见:[[ccim:web:chatroom1|聊天室管理]]。
环信聊天室模型支持默认最大成员数为5000,聊天室成员数可调整,请联系商务。
环信 Web IM SDK 支持聊天室管理功能的集成,集成后可以进行如下操作:
* 获取聊天室列表
* 加入聊天室
* 退出聊天室
* 发送消息
* 接收及处理消息
* 聊天室相关回调
通过这些操作,可以组合帮助您完成多种场景下的 IM 需求。
===== 创建聊天室 =====
创建聊天室需要 [[http://docs-im.easemob.com/im/server/basics/chatroom#%E7%AE%A1%E7%90%86%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98|超级管理员权限]],
调用"createChatRoom"函数创建聊天室,示例如下:
let options = {
name: 'chatRoomName', // 聊天室名称
description: 'description', // 聊天室描述
maxusers: 200, // 聊天室成员最大数(包括聊天室创建者),默认值200,聊天室人数最大默认5000。
members: ['user1', 'user2'] // 聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个
}
conn.createChatRoom(options).then((res) => {
console.log(res)
})
-----
===== 销毁聊天室 =====
销毁聊天室需要 [[http://docs-im.easemob.com/im/server/basics/chatroom#%E7%AE%A1%E7%90%86%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98|超级管理员权限]],
调用"destroyChatRoom"函数销毁聊天室,示例如下:
let options = {
chatRoomId: '1234567890' // 聊天室id
}
conn.destroyChatRoom(options).then((res) => {
console.log(res)
})
===== 获取聊天室列表 =====
调用''getChatRooms''函数获取聊天室列表,示例如下:
// 列出所有聊天室,支持分页查询
let option = {
pagenum: 1, // 页数
pagesize: 20 // 每页个数
};
conn.getChatRooms(option).then((res) => {
console.log(res)
})
----
===== 获取聊天室详情 =====
调用''getChatRoomDetails''函数获取聊天室详情,示例如下:
let options = {
chatRoomId: 'chatRoomId' // 聊天室id
}
conn.getChatRoomDetails(options).then((res) => {
console.log(res)
})
===== 更改聊天室详情 =====
调用''modifyChatRoom''函数更改聊天室详情,示例如下:
let options = {
chatRoomId: 'chatRoomId', // 聊天室id
chatRoomName: 'chatRoomName', // 聊天室名称
description: 'description', // 聊天室描述
maxusers: 200 // 聊天室最大人数
}
conn.modifyChatRoom(options).then((res) => {
console.log(res)
})
===== 加入聊天室 =====
调用''joinChatRoom''加入聊天室,示例如下:
let options = {
roomId: 'roomId', // 聊天室id
message: 'reason' // 原因(可选参数)
}
conn.joinChatRoom(options).then((res) => {
console.log(res)
})
----
===== 退出聊天室 =====
调用''quitChatRoom''退出聊天室,示例如下:
let options = {
roomId: 'roomId' // 聊天室id
}
conn.quitChatRoom(options).then((res) => {
console.log(res)
})
----
===== 获取聊天室成员 =====
调用''listChatRoomMember''分页获取聊天室成员,示例如下:
let options = {
pageNum: 1,
pageSize: 10,
chatRoomId: 'chatRoomId'
}
conn.listChatRoomMember(options).then((res) => {
console.log(res)
})
===== 设置聊天室管理员 =====
调用''setChatRoomAdmi''设置聊天室管理员,示例如下:
let options = {
chatRoomId: 'chatRoomId', // 聊天室id
username: 'user1' // 用户id
}
conn.setChatRoomAdmin(options).then((res) => {
console.log(res)
})
===== 移除聊天室管理员 =====
调用''removeChatRoomAdmin''移除聊天室管理员,示例如下:
let options = {
chatRoomId: 'chatRoomId', // 聊天室id
username: 'user1' // 用户id
}
conn.removeChatRoomAdmin(options).then((res) => {
console.log(res)
})
===== 获取聊天室下所有管理员 =====
调用''getChatRoomAdmin''获取聊天室下所有管理员,示例如下:
let options = {
chatRoomId: 'chatRoomId' // 聊天室id
}
conn.getChatRoomAdmin(options).then((res) => {
console.log(res)
})
===== 发送消息 =====
见[[im:web:basics:message#发送消息|发送消息]]。
---------
===== 聊天室公告 =====
聊天室公告管理包含以下处理操作:
* 上传/修改聊天室公告
* 获取聊天室公告
所有处理操作的示例下面会一一说明。
==== 上传/修改聊天室公告 ====
调用updateChatRoomAnnouncement函数上传/修改聊天室公告,示例如下:
let options = {
roomId: 'roomId', // 聊天室id
announcement: 'hello everyone' // 公告内容
};
conn.updateChatRoomAnnouncement(options).then((res) => {
console.log(res)
})
----
==== 获取聊天室公告 ====
调用''fetchChatRoomAnnouncement''函数获取聊天室公告,示例如下:
var options = {
roomId: 'roomId' // 聊天室id
};
conn.fetchChatRoomAnnouncement(options).then((res) => {
console.log(res)
})
----
===== 聊天室禁言 =====
==== 将成员禁言 ====
调用''muteChatRoomMember''禁止聊天室用户发言,示例如下:
let options = {
chatRoomId: "chatRoomId", // 聊天室id
username: 'username', // 被禁言的聊天室成员的id
muteDuration: -1000 // 被禁言的时长,单位ms,如果是“-1000”代表永久
};
conn.muteChatRoomMember(options).then((res) => {
console.log(res)
})
----
==== 将成员解除禁言 ====
调用''removeMuteChatRoomMember''解除聊天室用户禁言,示例如下:
let options = {
chatRoomId: "1000000000000", // 聊天室id
username: 'username' // 解除禁言的聊天室成员的id
};
conn.removeMuteChatRoomMember(options).then((res) => {
console.log(res)
})
----
==== 获取聊天室所有禁言成员 ====
调用''getChatRoomMuted''获取聊天室下所有被禁言的成员,示例如下:
let options = {
chatRoomId: "chatRoomId" // 聊天室id
};
conn.getChatRoomMuted(options).then((res) => {
console.log(res)
})
----
==== 开启和关闭全员禁言 ====
owner和管理员可以开启和关闭全员禁言。
// 聊天室中禁言所有成员
let options = {
chatRoomId: "chatRoomId" // 聊天室id
};
conn.disableSendChatRoomMsg(options).then((res) => {
console.log(res)
})
// 聊天室中解除所有成员禁言
conn.enableSendChatRoomMsg(options).then((res) => {
console.log(res)
})
----
==== 白名单管理 ====
可以将用户添加到白名单中,用户白名单在管理员开启了全员禁言时生效,可以运行白名单用户发出消息。 另外可以将用户移出白名单,检查自己是否在白名单中以及获取白名单列表。
// 添加用户到白名单
let options = {
chatRoomId: "chatRoomId", // 聊天室id
users: ["user1", "user2"] // 成员id列表
};
conn.addUsersToChatRoomWhitelist(options);
// 将用户从白名单移除
let options = {
chatRoomId: "chatRoomId", // 群组id
userName: "user" // 要移除的成员
}
conn.rmUsersFromChatRoomWhitelist(options);
// 从服务器获取白名单成员列表
let options = {
chatRoomId: "chatRoomId" // 聊天室id
}
conn.getChatRoomWhitelist(options);
// 查询成员是否是白名单用户,操作权限:app admin可查询所有用户;app user可查询自己
let options = {
chatRoomId: "chatRoomId", // 聊天室id
userName: "user" // 要查询的成员
}
conn.isChatRoomWhiteUser(options);
----
===== 黑名单管理 =====
黑名单管理包含以下处理操作:
* 将成员加入群黑名单(单个)
* 将成员加入群黑名单(批量)
* 将成员移除群组黑名单(单个)
* 将成员移除群组黑名单(批量)
* 获取聊天室黑名单
所有处理操作的示例下面会一一说明。
==== 将成员加入聊天室黑名单(单个) ====
调用chatRoomBlockSingle将单个成员加入聊天室黑名单,示例如下:
let options = {
chatRoomId: 'chatRoomId', // 聊天室id
username: 'username' // 将要被加入黑名单的用户名
};
conn.chatRoomBlockSingle(options);
----
==== 将成员加入聊天室黑名单(批量) ====
调用chatRoomBlockMulti将单个成员加入聊天室黑名单,示例如下:
let options = {
chatRoomId: 'chatRoomId', // 聊天室id
usernames: ['user1', 'user2'] // 用户id数组
};
conn.chatRoomBlockMulti(options);
----
==== 将成员移除聊天室黑名单(单个) ====
调用''removeChatRoomBlockSingle''将单个成员从聊天室黑名单中移除,示例如下:
let options = {
chatRoomId: "chatRoomId", // 群组id
username: "user" // 需要移除的用户名
}
conn.removeChatRoomBlockSingle(options);
----
==== 将成员移除聊天室黑名单(批量) ====
调用''removeChatRoomBlockMulti''将成员批量从聊天室黑名单中移除,示例如下:
let options = {
chatRoomId: "chatRoomId", // 聊天室id
usernames: ["user1", "user2"] // 需要移除的用户名数组
}
conn.removeChatRoomBlockMulti(options);
----
==== 获取聊天室黑名单 ====
调用''getChatRoomBlacklistNew''获取聊天室黑名单,示例如下:
let options = {
chatRoomId: "chatRoomId", // 聊天室id
};
conn.getChatRoomBlacklistNew(options);
----
===== 接收及处理消息 =====
* 群聊接收及处理消息同单聊;
* 消息体与单聊消息根据 message 的 type 进行区分;
* 单聊为:chat,群聊为:groupchat,聊天室为:chatroom;
* 根据消息的类型进行不同处理即可。
===== 聊天室事件监听 =====
可以在注册的监听事件onPresence里监听聊天室相关的事件:
conn.listen({
onPresence: function(msg){
switch(msg.type){
case 'rmChatRoomMute':
// 解除聊天室一键禁言
break;
case 'muteChatRoom':
// 聊天室一键禁言
break;
case 'rmUserFromChatRoomWhiteList':
// 删除聊天室白名单成员
break;
case 'addUserToChatRoomWhiteList':
// 增加聊天室白名单成员
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 'leaveChatRoom':
// 退出聊天室
break;
case 'memberJoinChatRoomSuccess':
// 加入聊天室
break;
case 'leave':
// 退出群
break;
case 'join':
// 加入群
break;
default:
break;
}}
})
----
=== API ===
示例中使用到的 API
* [[http://webim-h5.easemob.com/jsdoc/out/connection.html#listen|listen]]
----
----
上一页:[[im:web:basics:group|群组]]
下一页:[[im:web:basics:sticker|导入第三方表情包]]