聊天室管理
聊天室是“在线态会话”:消息不落库、不补发,断连自动离开。控制台提供房间列表(含 keepalive、在线人数、全体禁言状态)、销毁与全员禁言。
概念
| 能力 | 行为 | 错误码 |
|---|---|---|
| 销毁房间 | 踢出在线成员、广播 chatroom_event(destroyed)、触发 chatroom.destroyed 回调,并记录审计 | 已销毁/不存在返回 1012/1013 |
| 全员禁言 | {muted:true,durationSec} 最长 30 天;muted:false 解除 | 时长越界 1001 |
| 列表 | 返回房间基础信息 + keepalive/keepaliveUntil + 在线人数 + 全体禁言状态 | — |
服务开通联动
应用未开通 chatroom 时,Open API 聊天室接口与客户端 REST 建聊天室返回 1021;控制台列表仍可查看历史房间。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#chatrooms。 - 已设置
X-Admin-Secret(默认dev-admin;控制台会保存在浏览器 localStorage 的im.admin.secret)。 - 已创建应用并在控制台顶部选中应用(模块接口路径都带
{appkey})。 - 已开通 chatroom 服务(否则相关业务接口 1021)。
步骤
- 查看房间列表
确认目标
chatroomId与在线人数;在线人数来自房间会话计数(多端同房按会话计)。 - 处置违规房间
销毁会立即断开房间内连接并广播事件;如需保留房间只禁言,用全员禁言。
- 解除禁言
再次调用全员禁言接口,
muted:false。
参数表
| 操作 | 方法与路径 | 请求体 |
|---|---|---|
| 房间列表 | GET /api/admin/apps/{appkey}/chatrooms | — |
| 销毁房间 | POST /api/admin/apps/{appkey}/chatrooms/{chatroom_id}/destroy | {reason?}(缺省 admin_destroy) |
| 全员禁言 | POST /api/admin/apps/{appkey}/chatrooms/{chatroom_id}/mute-all | {muted,durationSec?} |
示例
列表 → 全员禁言 1 小时 → 解除 → 销毁
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/chatrooms" \
-H 'X-Admin-Secret: dev-admin'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/chatrooms/cr_2001/mute-all" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"muted":true,"durationSec":3600}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/chatrooms/cr_2001/mute-all" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"muted":false}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/chatrooms/cr_2001/destroy" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"reason":"violation"}'常见问题
销毁后还能恢复吗?
不能。聊天室不含历史消息,销毁即结束;需要长期留存请用群组。
为什么列表在线人数为 0?
房间无在线连接;聊天室成员只在连接期间存在,断连即离开。
全员禁言对管理员生效吗?
对房间内所有普通成员生效;管理员处置请用 Open API 白名单或单独成员禁言能力。
相关链接
- 控制台功能索引:8 个模块与其它页面
- 控制台指南:控制台整体说明
- 运营后台指南:Admin API 全量参考
- 聊天室全员禁言(Open API)
- 回调事件