测试用户
测试用户用于把联调/演示账号与真实运营账号区分开:标记后用户列表显示徽标,并可用 ?testUser=true 过滤。标记本身不影响登录、收发消息或推送,也不产生计费;自托管版没有“测试额度/购买”概念。
概念
- 标记保存在应用级测试用户集合;同一用户重复标记幂等。
- 配额默认 100,可通过接口改为 1–100000;超过上限返回 4xx(1001),不会静默忽略。
- 列表接口返回
limitConfigured/limitDefault=100/limitMax=100000/usage。 - 标记只用于运营区分;封禁、禁言、Token 等能力与普通用户完全一致。
不适用:测试套餐/计费
自托管版没有“测试版套餐”“试用额度”或按测试用户计费的流程;配额只是控制台自用的标记上限。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#testusers(tab#testusers:测试用户配额)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 查看当前标记与配额
打开「测试用户配额」页或调用列表接口,确认
usage与limitConfigured。 - 标记/取消标记
对目标
userId传{testUser:true|false};用户不存在返回 1004。 - 调整上限
按团队规模设置
limit;调低不会自动取消已标记用户,但新增标记会被拒绝。 - 在用户列表过滤
用户列表传
?testUser=true,只返回已标记用户。
参数表
| 操作 | 方法与路径 | 请求体 / 参数 |
|---|---|---|
| 测试用户列表 | GET /api/admin/apps/{appkey}/test-users | keyword、offset、limit |
| 标记/取消 | POST /api/admin/apps/{appkey}/users/{userId}/test-user | {testUser} |
| 设置上限 | POST /api/admin/apps/{appkey}/test-users/limit | {limit}(1–100000) |
| 用户列表过滤 | GET /api/admin/apps/{appkey}/users?testUser=true | — |
示例
标记两个用户并把上限调到 200
Shell
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/users/bob/test-user" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"testUser":true}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/users/carol/test-user" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"testUser":true}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/test-users/limit" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"limit":200}'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/test-users" \
-H 'X-Admin-Secret: dev-admin'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/users?testUser=true" \
-H 'X-Admin-Secret: dev-admin'常见问题
标记测试用户会影响消息统计吗?
不会。标记只是元数据;消息、DAU、在线等统计照常计入。
超过配额会怎样?
标记接口返回 4xx(1001),已有标记不受影响;调高上限后可继续标记。
取消标记会删除用户吗?
不会。只移除标记,用户与数据保留。
为什么用户列表过滤没有结果?
确认 testUser=true 拼写;该过滤只匹配已标记用户,不会按昵称猜测。