差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
im:web:basics:chatroom [2019/03/15 02:24] lizg [聊天室相关回调] |
im:web:basics:chatroom [2022/03/11 10:35] (当前版本) jennifer.zeng [聊天室管理] |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== 聊天室管理 ====== | ====== 聊天室管理 ====== | ||
| - | ===== 获取聊天室列表 ===== | + | 更新时间: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"函数创建聊天室,示例如下: | ||
| <code javascript> | <code javascript> | ||
| - | // 列出所有聊天室,支持分页查询 | + | let options = { |
| - | var listRooms = function () { | + | name: 'chatRoomName', // 聊天室名称 |
| - | var option = { | + | description: 'description', // 聊天室描述 |
| - | apiUrl: 'https://a1.easemob.com', | + | maxusers: 200, // 聊天室成员最大数(包括聊天室创建者),默认值200,聊天室人数最大默认5000。 |
| - | pagenum: 1, // 页数 | + | members: ['user1', 'user2'] // 聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个 |
| - | pagesize: 20, // 每页个数 | + | |
| - | success: function (list) { | + | |
| - | console.log(list); | + | |
| - | }, | + | |
| - | error: function () { | + | |
| - | console.log('List chat room error'); | + | |
| - | } | + | |
| - | }; | + | |
| - | conn.getChatRooms(option); | + | |
| } | } | ||
| + | conn.createChatRoom(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| </code> | </code> | ||
| + | ----- | ||
| - | ===== 加入聊天室 ===== | + | ===== 销毁聊天室 ===== |
| + | 销毁聊天室需要 [[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"函数销毁聊天室,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: '1234567890' // 聊天室id | ||
| + | } | ||
| + | conn.destroyChatRoom(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | |||
| + | ===== 获取聊天室列表 ===== | ||
| + | 调用''getChatRooms''函数获取聊天室列表,示例如下: | ||
| <code javascript> | <code javascript> | ||
| - | var joinRoom = function () { | + | // 列出所有聊天室,支持分页查询 |
| - | // 加入聊天室 | + | let option = { |
| - | conn.joinChatRoom({ | + | pagenum: 1, // 页数 |
| - | roomId: 'chatroom id' // 聊天室id | + | pagesize: 20 // 每页个数 |
| - | }); | + | |
| }; | }; | ||
| + | conn.getChatRooms(option).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | |||
| </code> | </code> | ||
| + | ---- | ||
| + | |||
| + | ===== 获取聊天室详情 ===== | ||
| + | 调用''getChatRoomDetails''函数获取聊天室详情,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: 'chatRoomId' // 聊天室id | ||
| + | } | ||
| + | conn.getChatRoomDetails(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | |||
| + | ===== 更改聊天室详情 ===== | ||
| + | 调用''modifyChatRoom''函数更改聊天室详情,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: 'chatRoomId', // 聊天室id | ||
| + | chatRoomName: 'chatRoomName', // 聊天室名称 | ||
| + | description: 'description', // 聊天室描述 | ||
| + | maxusers: 200 // 聊天室最大人数 | ||
| + | } | ||
| + | conn.modifyChatRoom(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | ===== 加入聊天室 ===== | ||
| + | 调用''joinChatRoom''加入聊天室,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | roomId: 'roomId', // 聊天室id | ||
| + | message: 'reason' // 原因(可选参数) | ||
| + | } | ||
| + | conn.joinChatRoom(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ---- | ||
| ===== 退出聊天室 ===== | ===== 退出聊天室 ===== | ||
| + | 调用''quitChatRoom''退出聊天室,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | roomId: 'roomId' // 聊天室id | ||
| + | } | ||
| + | conn.quitChatRoom(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ---- | ||
| + | ===== 获取聊天室成员 ===== | ||
| + | 调用''listChatRoomMember''分页获取聊天室成员,示例如下: | ||
| <code javascript> | <code javascript> | ||
| - | var quitRoom = function () { | + | let options = { |
| - | // 退出聊天室 | + | pageNum: 1, |
| - | conn.quitChatRoom({ | + | pageSize: 10, |
| - | roomId: 'chatroom id' // 聊天室id | + | chatRoomId: 'chatRoomId' |
| - | }); | + | |
| } | } | ||
| + | conn.listChatRoomMember(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | |||
| </code> | </code> | ||
| + | ===== 设置聊天室管理员 ===== | ||
| + | 调用''setChatRoomAdmi''设置聊天室管理员,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: 'chatRoomId', // 聊天室id | ||
| + | username: 'user1' // 用户id | ||
| + | } | ||
| + | conn.setChatRoomAdmin(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | |||
| + | |||
| + | ===== 移除聊天室管理员 ===== | ||
| + | 调用''removeChatRoomAdmin''移除聊天室管理员,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: 'chatRoomId', // 聊天室id | ||
| + | username: 'user1' // 用户id | ||
| + | } | ||
| + | conn.removeChatRoomAdmin(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | |||
| + | ===== 获取聊天室下所有管理员 ===== | ||
| + | 调用''getChatRoomAdmin''获取聊天室下所有管理员,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: 'chatRoomId' // 聊天室id | ||
| + | } | ||
| + | conn.getChatRoomAdmin(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| ===== 发送消息 ===== | ===== 发送消息 ===== | ||
| 见[[im:web:basics:message#发送消息|发送消息]]。 | 见[[im:web:basics:message#发送消息|发送消息]]。 | ||
| - | ===== 接收及处理消息 ===== | + | --------- |
| - | 群聊接收及处理消息同单聊,消息体与单聊消息根据 message 的 type 进行区分,单聊为:chat,群聊为:groupchat,聊天室为:chatroom。根据消息的类型进行不同处理即可。 | + | ===== 聊天室公告 ===== |
| - | ===== 聊天室相关回调 ===== | + | 聊天室公告管理包含以下处理操作: |
| + | * 上传/修改聊天室公告 | ||
| + | |||
| + | * 获取聊天室公告 | ||
| + | 所有处理操作的示例下面会一一说明。 | ||
| + | |||
| + | ==== 上传/修改聊天室公告 ==== | ||
| + | 调用updateChatRoomAnnouncement函数上传/修改聊天室公告,示例如下: | ||
| + | |||
| <code javascript> | <code javascript> | ||
| - | conn.listen({ | + | let options = { |
| - | onPresence: function ( message ) { | + | roomId: 'roomId', // 聊天室id |
| - | handlePresence(message); | + | announcement: 'hello everyone' // 公告内容 |
| - | } | + | }; |
| - | }); | + | conn.updateChatRoomAnnouncement(options).then((res) => { |
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | ---- | ||
| + | ==== 获取聊天室公告 ==== | ||
| + | 调用''fetchChatRoomAnnouncement''函数获取聊天室公告,示例如下: | ||
| + | |||
| + | <code javascript> | ||
| + | var options = { | ||
| + | roomId: 'roomId' // 聊天室id | ||
| + | }; | ||
| + | conn.fetchChatRoomAnnouncement(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | ---- | ||
| + | ===== 聊天室禁言 ===== | ||
| - | var handlePresence = function ( e ) { | + | ==== 将成员禁言 ==== |
| - | /*e.type === 'memberJoinChatRoomSuccess' //加入成功 | + | 调用''muteChatRoomMember''禁止聊天室用户发言,示例如下: |
| - | e.type === 'deleteGroupChat' //聊天室被删除 | + | <code javascript> |
| - | e.type === 'joinChatRoomFailed' //加入失败*/ | + | let options = { |
| + | chatRoomId: "chatRoomId", // 聊天室id | ||
| + | username: 'username', // 被禁言的聊天室成员的id | ||
| + | muteDuration: -1000 // 被禁言的时长,单位ms,如果是“-1000”代表永久 | ||
| }; | }; | ||
| + | conn.muteChatRoomMember(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| </code> | </code> | ||
| + | ---- | ||
| + | |||
| + | ==== 将成员解除禁言 ==== | ||
| + | 调用''removeMuteChatRoomMember''解除聊天室用户禁言,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: "1000000000000", // 聊天室id | ||
| + | username: 'username' // 解除禁言的聊天室成员的id | ||
| + | }; | ||
| + | conn.removeMuteChatRoomMember(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | ---- | ||
| + | |||
| + | ==== 获取聊天室所有禁言成员 ==== | ||
| + | 调用''getChatRoomMuted''获取聊天室下所有被禁言的成员,示例如下: | ||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: "chatRoomId" // 聊天室id | ||
| + | }; | ||
| + | conn.getChatRoomMuted(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | ---- | ||
| + | ==== 开启和关闭全员禁言 ==== | ||
| + | owner和管理员可以开启和关闭全员禁言。 | ||
| + | |||
| + | <code javascript> | ||
| + | // 聊天室中禁言所有成员 | ||
| + | let options = { | ||
| + | chatRoomId: "chatRoomId" // 聊天室id | ||
| + | }; | ||
| + | conn.disableSendChatRoomMsg(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | |||
| + | // 聊天室中解除所有成员禁言 | ||
| + | conn.enableSendChatRoomMsg(options).then((res) => { | ||
| + | console.log(res) | ||
| + | }) | ||
| + | </code> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 白名单管理 ==== | ||
| + | 可以将用户添加到白名单中,用户白名单在管理员开启了全员禁言时生效,可以运行白名单用户发出消息。 另外可以将用户移出白名单,检查自己是否在白名单中以及获取白名单列表。 | ||
| + | <code javascript> | ||
| + | // 添加用户到白名单 | ||
| + | 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); | ||
| + | </code> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 黑名单管理 ===== | ||
| + | 黑名单管理包含以下处理操作: | ||
| + | * 将成员加入群黑名单(单个) | ||
| + | | ||
| + | * 将成员加入群黑名单(批量) | ||
| + | | ||
| + | * 将成员移除群组黑名单(单个) | ||
| + | | ||
| + | * 将成员移除群组黑名单(批量) | ||
| + | |||
| + | * 获取聊天室黑名单 | ||
| + | |||
| + | |||
| + | 所有处理操作的示例下面会一一说明。 | ||
| + | |||
| + | ==== 将成员加入聊天室黑名单(单个) ==== | ||
| + | 调用chatRoomBlockSingle将单个成员加入聊天室黑名单,示例如下: | ||
| + | |||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: 'chatRoomId', // 聊天室id | ||
| + | username: 'username' // 将要被加入黑名单的用户名 | ||
| + | }; | ||
| + | conn.chatRoomBlockSingle(options); | ||
| + | </code> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 将成员加入聊天室黑名单(批量) ==== | ||
| + | 调用chatRoomBlockMulti将单个成员加入聊天室黑名单,示例如下: | ||
| + | |||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: 'chatRoomId', // 聊天室id | ||
| + | usernames: ['user1', 'user2'] // 用户id数组 | ||
| + | }; | ||
| + | conn.chatRoomBlockMulti(options); | ||
| + | </code> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 将成员移除聊天室黑名单(单个) ==== | ||
| + | 调用''removeChatRoomBlockSingle''将单个成员从聊天室黑名单中移除,示例如下: | ||
| + | |||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: "chatRoomId", // 群组id | ||
| + | username: "user" // 需要移除的用户名 | ||
| + | } | ||
| + | conn.removeChatRoomBlockSingle(options); | ||
| + | </code> | ||
| + | ---- | ||
| + | |||
| + | ==== 将成员移除聊天室黑名单(批量) ==== | ||
| + | 调用''removeChatRoomBlockMulti''将成员批量从聊天室黑名单中移除,示例如下: | ||
| + | |||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: "chatRoomId", // 聊天室id | ||
| + | usernames: ["user1", "user2"] // 需要移除的用户名数组 | ||
| + | } | ||
| + | conn.removeChatRoomBlockMulti(options); | ||
| + | </code> | ||
| + | ---- | ||
| + | |||
| + | ==== 获取聊天室黑名单 ==== | ||
| + | 调用''getChatRoomBlacklistNew''获取聊天室黑名单,示例如下: | ||
| + | |||
| + | <code javascript> | ||
| + | let options = { | ||
| + | chatRoomId: "chatRoomId", // 聊天室id | ||
| + | }; | ||
| + | conn.getChatRoomBlacklistNew(options); | ||
| + | </code> | ||
| + | ---- | ||
| + | ===== 接收及处理消息 ===== | ||
| + | * 群聊接收及处理消息同单聊; | ||
| + | | ||
| + | * 消息体与单聊消息根据 message 的 type 进行区分; | ||
| + | | ||
| + | * 单聊为:chat,群聊为:groupchat,聊天室为:chatroom; | ||
| + | | ||
| + | * 根据消息的类型进行不同处理即可。 | ||
| + | |||
| + | |||
| + | ===== 聊天室事件监听 ===== | ||
| + | 可以在注册的监听事件onPresence里监听聊天室相关的事件: | ||
| + | <code javascript> | ||
| + | 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; | ||
| + | }} | ||
| + | }) | ||
| + | </code> | ||
| + | ---- | ||
| + | |||
| + | === API === | ||
| + | 示例中使用到的 API | ||
| + | * [[http://webim-h5.easemob.com/jsdoc/out/connection.html#listen|listen]] | ||
| + | |||
| + | ---- | ||
| + | |||
| ---- | ---- | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP half column> | <WRAP half column> | ||
| - | 上一页:[[im:web:basics:group|群组管理]] | + | 上一页:[[im:web:basics:group|群组]] |
| </WRAP> | </WRAP> | ||
| <WRAP half column> | <WRAP half column> | ||
| - | 下一页:[[im:web:basics:videocall|实时通话]] | + | 下一页:[[im:web:basics:sticker|导入第三方表情包]] |
| </WRAP> | </WRAP> | ||
| </WRAP> | </WRAP> | ||