这是本文档旧的修订版!


聊天室管理

环信聊天室模型支持默认最大成员数为5000,聊天室成员数可调整,请联系商务。 环信 Web IM SDK 支持聊天室管理功能的集成,集成后可以进行如下操作:

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

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

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

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

销毁聊天室需要 超级管理员权限, 调用“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)
})

发送消息


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

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

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

上传/修改聊天室公告

调用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



上一页:群组