数据导出
数据导出目前只覆盖消息:admin.messages.export 按应用导出 CSV,默认最近 1000 条、支持 beforeSeq 游标向前翻页。操作日志、告警事件、回调日志没有导出接口,需要按各自的分页接口自行拉取落库。
概念
| 项 | 值 |
|---|---|
| CSV 列 | messageId,conversationType,targetId,senderId,seq,timestamp,type,text |
| 排序 | 先取最新 limit 条,再按 seq 升序输出,便于按时间阅读 |
limit | 1–1000,默认 1000 |
beforeSeq | 只导出 seq < beforeSeq 的记录,用于向前翻页 |
| 字符转义 | 含逗号/引号/换行的字段按 CSV 规则加引号并双写引号 |
- 导出包含落盘消息(单聊/群/系统通知/广播);聊天室消息不落盘,不在导出范围。
- 响应是 JSON 包装的
csv文本,不是文件流;控制台负责触发下载。 - 导出不做脱敏;
text为原文(替换策略下是掩码后的正文)。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#messages(tab#messages:消息流转)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 确定时间窗口
先用「消息追踪」确认
seq范围;无beforeSeq时导出最近 1000 条。 - 分页导出
把上一页最小
seq作为下一页beforeSeq,直到没有数据。 - 保存与校验
把
data.csv落盘为 UTF-8;用行数与首尾seq校验完整性。 - 其它数据另行拉取
审计/回调/告警用各自列表接口分页拉取,服务端不提供打包导出。
参数表
| 参数 | 类型 | 说明 |
|---|---|---|
limit | int | 1–1000,默认 1000 |
beforeSeq | uint64 | 可选;只导出 seq 小于该值的消息 |
示例
导出最近 1000 条并保存
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/messages/export" \
-H 'X-Admin-Secret: dev-admin'
# 用 jq 取出 csv 落盘(示例)
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/messages/export?limit=500" \
-H 'X-Admin-Secret: dev-admin' | jq -r '.data.csv' > messages.csv用 beforeSeq 翻到更早一页
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/messages/export?limit=500&beforeSeq=1200" \
-H 'X-Admin-Secret: dev-admin'常见问题
导出会包含聊天室消息吗?
不会。聊天室消息不落盘,任何导出都拿不到。
能按用户/时间过滤导出吗?
不能。导出接口只支持 limit 与 beforeSeq;需要条件筛选请用消息检索接口分页拉取。
导出的 text 是明文吗?
是(敏感词 replace 策略下为掩码正文)。导出文件含用户内容,需按隐私要求存储与访问控制。
为什么只有 1000 条?
单次上限 1000;用 beforeSeq 循环翻页即可导出全部。