差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
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', +    ​maxusers200, // 聊天室成员最大(包括聊天室创建者),默认值200,聊天室人数最大默认5000。 
-        pagenum: 1,                                 // 页数 +    ​members['​user1'​, 'user2'] // 聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个
-        ​pagesize20                              ​// 每页个数 +
-        ​successfunction (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(+    ​pagenum1,                                 // 页数 
-        ​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 = 
-  ​onPresencefunction ​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>​