功能配置
功能配置提供 6 个更贴近业务的开关(好友、群、聊天室、推送、敏感词、消息回调)。它们不是第二份状态:每个开关都映射到既有的服务开通项或推送开关,写入会写穿到同一事实源。
概念
| 功能开关 | 映射到 | 说明 |
|---|---|---|
friend | services.private_chat | 单聊消息发布(好友接口不在此开关门禁内) |
group | services.group | 群组能力 |
chatroom | services.chatroom | 聊天室能力 |
push | app.pushEnabled | 离线推送开关 |
sensitiveWord | services.sensitive_words | 敏感词管理接口门禁 |
messageCallbacks | services.callbacks | 回调/事件投递 |
- 读取返回
mapping,可在页面直接展示“这个开关改的是哪份状态”。 - 更新是部分更新:未传的开关保持原值(与服务开通整体覆盖不同)。
- 改「服务开通」或「功能配置」任意一侧,另一侧立即反映同一状态。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#features(tab#features:功能配置)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 读取开关与映射
确认每个开关映射到的数据源,避免以为存在独立配置。
- 按业务关闭能力
提交需要变更的键;未传键保持原值。
- 验证
调用对应 Open API 或客户端能力,确认 1021/可用状态符合预期。
- 与套餐无关
自托管版没有“功能包/套餐”;开关只是能力边界。
参数表
| 操作 | 方法与路径 | 请求体 |
|---|---|---|
| 读取 | GET /api/admin/apps/{appkey}/features | — |
| 部分更新 | POST /api/admin/apps/{appkey}/features | {features:{friend?,group?,chatroom?,push?,sensitiveWord?,messageCallbacks?}} |
示例
关闭群能力但保留单聊
Shell
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/features" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"features":{"group":false,"friend":true}}'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/features" \
-H 'X-Admin-Secret: dev-admin'常见问题
和「服务开通」有什么区别?
同一状态的不同视图;功能配置是部分更新,服务开通是整体覆盖。
关闭 sensitiveWord 会删除词表吗?
不会。只门禁管理接口,词表仍参与过滤。
关闭 push 会影响在线消息吗?
不会。只影响离线推送。
为什么改了功能配置,服务开通页也变了?
因为写穿同一数据源,这是预期行为。