这是本文档旧的修订版!
聊天室管理
环信 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
获取聊天室详情
调用“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
退出聊天室
调用quitChatRoom
退出聊天室,示例如下:
var quitRoom = function () {
// 退出聊天室
conn.quitChatRoom({
roomId: 'chatroom id' // 聊天室id
});
}
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
白名单管理
可以将用户添加到白名单中,用户白名单在管理员开启了全员禁言时生效,可以运行白名单用户发出消息。 另外可以将用户移出白名单,检查自己是否在白名单中以及获取白名单列表。
//添加用户到白名单
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
示例中使用到的 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;
}}
})