这是本文档旧的修订版!


聊天室管理

环信 Web IM SDK 支持聊天室管理功能的集成,集成后可以进行如下操作:

  • 获取聊天室列表
  • 加入聊天室
  • 退出聊天室
  • 发送消息
  • 接收及处理消息
  • 聊天室相关回调

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

创建聊天室需要 超级管理员权限, 调用“createChatRoom”函数创建聊天室,示例如下:

var options = {
  name: 'chatRoomName', // 聊天室名称
  description: 'description', // 聊天室描述
  maxusers: 200, // 聊天室成员最大数(包括聊天室创建者),默认值200,最大值5000
  members: ['user1', 'user2'], // 聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个
  success: function(){},
  error:function(){}
}

调用getChatRooms函数获取聊天室列表,示例如下:

// 列出所有聊天室,支持分页查询
var listRooms = function () {
    var option = {
        apiUrl: 'https://a1.easemob.com',
        pagenum: 1,                                 // 页数
        pagesize: 20,                               // 每页个数
        success: function (list) {
            console.log(list);
        },
        error: function () {
            console.log('List chat room error');
        }
    };
    conn.getChatRooms(option);
}

API

示例中使用到的 API


调用“getChatRoomDetails”函数获取聊天室详情,示例如下:

var options = {
  chatRoomId: 'chatRoomId', 聊天室id
  success: function () {},
  error: function () {}
}
conn.getChatRoomDetails(options)

调用“modifyChatRoom”函数更改聊天室详情,示例如下:

var options = {
  chatRoomId: 'chatRoomId', 聊天室id
  chatRoomName: 'chatRoomName', // 聊天室名称
  description: 'description', // 聊天室描述'
  maxusers: 200, //聊天室最大人数
  success: function () {},
  error: function () {}
}
conn.modifyChatRoom(options)

调用joinChatRoom加入聊天室,示例如下:

var joinRoom = function () {
    // 加入聊天室
    conn.joinChatRoom({
        roomId: 'chatroom id' // 聊天室id
    });
};

API

示例中使用到的 API


调用quitChatRoom退出聊天室,示例如下:

var quitRoom = function () {
    // 退出聊天室
    conn.quitChatRoom({
        roomId: 'chatroom id' // 聊天室id
    });
}

API

示例中使用到的 API


调用listChatRoomMember分页获取聊天室成员,示例如下:

var listChatRoomMember = function () {
    conn.listChatRoomMember({
        pageNum: 1,
        pageSize: 10,
        chatRoomId: '12345678901',
        success: function(res){},
        error: function(err){}
    })
}

调用“setChatRoomAdmin”设置聊天室管理员,示例如下:

var options = {
  chatRoomId: 'chatRoomId', // 聊天室id
  username: 'user1', // 用户id
  success: function(res){},
  error: function(err){}
}
conn.setChatRoomAdmin(options)

调用“removeChatRoomAdmin”移除聊天室管理员,示例如下:

var options = {
  chatRoomId: 'chatRoomId', // 聊天室id
  username: 'user1', // 用户id
  success: function(res){},
  error: function(err){}
}
conn.removeChatRoomAdmin(options)

调用“getChatRoomAdmin”获取聊天室下所有管理员,示例如下:

var options = {
  chatRoomId: 'chatRoomId', // 聊天室id
  success: function(res){},
  error: function(err){}
}
conn.getChatRoomAdmin(options)

发送消息


聊天室公告管理包含以下处理操作:

  • 上传/修改聊天室公告
  • 获取聊天室公告

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

上传/修改聊天室公告

调用updateChatRoomAnnouncement函数上传/修改聊天室公告,示例如下:

var options = {
    roomId: '1000000000000',             // 聊天室id   
    announcement: 'announcement',        // 公告内容                        
    success: function (resp) {},
    error: function(e){}
};
conn.updateChatRoomAnnouncement(options);

获取聊天室公告

调用fetchChatRoomAnnouncement函数获取聊天室公告,示例如下:

var options = {
    roomId: '1000000000000',            // 聊天室id                          
    success: function (resp) {},
    error: function(e){}
};
conn.fetchChatRoomAnnouncement(options);

将成员禁言

调用muteChatRoomMember禁止聊天室用户发言,示例如下:

var options = {
      chatRoomId: "1000000000000", // 聊天室id
      username: 'username', // 被禁言的聊天室成员的id
      muteDuration: -1000, // 被禁言的时长,单位ms,如果是“-1000”代表永久
      success: function (resp) {},
      error: function(e){}
    };
conn.muteChatRoomMember(options);

将成员解除禁言

调用removeMuteChatRoomMember解除聊天室用户禁言,示例如下:

var options = {
      chatRoomId: "1000000000000", // 聊天室id
      username: 'username', // 解除禁言的聊天室成员的id
      success: function (resp) {},
      error: function(e){}
    };
conn.removeMuteChatRoomMember(options);

获取聊天室所有禁言成员

调用getChatRoomMuted获取聊天室下所有被禁言的成员,示例如下:

var options = {
      chatRoomId: "1000000000000", // 聊天室id
      success: function (resp) {},
      error: function(e){}
    };
conn.getChatRoomMuted(options);

开启和关闭全员禁言

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

//聊天室中禁言所有成员
var options = {
      chatRoomId: "chatRoomId", //聊天室id
      success: function (resp) {},
      error: function(e){}
    };
conn.disableSendChatRoomMsg(options);

//聊天室中解除所有成员禁言
conn.enableSendChatRoomMsg(options)

API

示例中使用到的 API


白名单管理

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

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

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

//从服务器获取白名单成员列表
var options = {
    chatRoomId: "chatRoomId", //聊天室id
    success: function (resp) {},
    error: function(e){}
}
conn.getChatRoomWhitelist(options)

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

API

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

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

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

将成员加入聊天室黑名单(单个)

调用chatRoomBlockSingle将单个成员加入聊天室黑名单,示例如下:

var options = {
        chatRoomId: '1000000000000',    // 聊天室id
        username: 'username',           // 将要被加入黑名单的用户名
        success: function (resp) {},
        error: function(e){}
    };
conn.chatRoomBlockSingle(options);

将成员加入聊天室黑名单(批量)

调用chatRoomBlockMulti将单个成员加入聊天室黑名单,示例如下:

var options = {
        chatRoomId: '1000000000000',       // 聊天室id
        usernames: ['user1', 'user2'],     // 用户id数组
        success: function (resp) {},
        error: function(e){}
    };
conn.chatRoomBlockMulti(options);

将成员移除聊天室黑名单(单个)

调用removeChatRoomBlockSingle将单个成员从聊天室黑名单中移除,示例如下:

var options = {
        chatRoomId: "1000000000000",                     // 群组id              
        username: "user",                             // 需要移除的用户名
        success: function(resp){},
        error: function(e) {};
    }
conn.removeChatRoomBlockSingle(options);

将成员移除聊天室黑名单(批量)

调用removeChatRoomBlockMulti将成员批量从聊天室黑名单中移除,示例如下:

var options = {
        chatRoomId: "1000000000000",                    // 聊天室id
        usernames: ["user1", "user2"],                  // 需要移除的用户名数组
        success: function(resp){},
        error: function(e) {};
    }
conn.removeChatRoomBlockMulti(options);

获取聊天室黑名单

调用getChatRoomBlacklistNew获取聊天室黑名单,示例如下:

var option = {
      chatRoomId: "1000000000000",                    // 聊天室id
      success: function(list) {},
      error: function() {}
  };
  conn.getChatRoomBlacklistNew(option);

  • 群聊接收及处理消息同单聊;
  • 消息体与单聊消息根据 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



上一页:群组