# Telegram 管理系统 API 接口文档 > **版本**: v2.0.0 > **更新时间**: 2024-01-20 > **基础URL**: `https://api.telegram-system.com/v1` > **维护者**: 开发团队 ## 📋 文档目录 - [接口概述](#接口概述) - [认证机制](#认证机制) - [通用规范](#通用规范) - [错误处理](#错误处理) - [用户认证](#用户认证) - [账号管理](#账号管理) - [私信群发](#私信群发) - [营销中心](#营销中心) - [权限管理](#权限管理) - [系统配置](#系统配置) - [文件管理](#文件管理) - [实时通信](#实时通信) --- ## 🔍 接口概述 ### API特性 - **RESTful风格**: 遵循REST架构设计原则 - **JSON格式**: 所有请求和响应均使用JSON格式 - **统一认证**: 基于JWT的Token认证机制 - **版本控制**: URL路径包含版本号,支持向后兼容 - **限流保护**: 每个用户每分钟最多100次请求 - **HTTPS加密**: 生产环境强制使用HTTPS协议 ### 支持的HTTP方法 | 方法 | 说明 | 示例 | | ------ | ------------ | -------------------------- | | GET | 获取资源 | `GET /api/v1/users` | | POST | 创建资源 | `POST /api/v1/users` | | PUT | 更新整个资源 | `PUT /api/v1/users/123` | | PATCH | 部分更新资源 | `PATCH /api/v1/users/123` | | DELETE | 删除资源 | `DELETE /api/v1/users/123` | ### 环境地址 | 环境 | 地址 | 说明 | | -------- | ----------------------------------------- | -------- | | 开发环境 | `http://localhost:3001/api/v1` | 本地开发 | | 测试环境 | `https://test-api.telegram-system.com/v1` | 测试验证 | | 生产环境 | `https://api.telegram-system.com/v1` | 正式环境 | --- ## 🔐 认证机制 ### JWT Token认证 所有需要认证的接口必须在请求头中携带Token: ```http Authorization: Bearer ``` ### Token获取流程 ```mermaid sequenceDiagram participant C as Client participant A as API Server participant D as Database C->>A: POST /auth/login (username, password) A->>D: 验证用户凭据 D-->>A: 返回用户信息 A->>A: 生成JWT Token A-->>C: 返回Token和用户信息 Note over C: 后续请求携带Token C->>A: GET /users (Header: Authorization) A->>A: 验证Token有效性 A-->>C: 返回数据 ``` ### Token结构 JWT Token包含以下信息: ```json { "header": { "alg": "HS256", "typ": "JWT" }, "payload": { "userId": "user123", "username": "admin", "roles": ["admin", "user"], "permissions": ["user:read", "user:write"], "iat": 1642780800, "exp": 1642867200 } } ``` --- ## 📝 通用规范 ### 请求格式 #### Content-Type 所有POST、PUT、PATCH请求必须设置正确的Content-Type: ```http Content-Type: application/json ``` #### 分页参数 支持分页的接口使用统一的分页参数: ```json { "page": 1, // 页码,从1开始 "pageSize": 20, // 每页数量,默认20,最大100 "sortBy": "createdAt", // 排序字段 "sortOrder": "desc" // 排序方向:asc/desc } ``` #### 筛选参数 支持筛选的接口使用统一的筛选格式: ```json { "filters": { "status": "active", // 精确匹配 "name": { "$like": "admin" }, // 模糊匹配 "createdAt": { // 范围查询 "$gte": "2024-01-01", "$lte": "2024-12-31" } } } ``` ### 响应格式 #### 成功响应 ```json { "success": true, "code": 200, "message": "操作成功", "data": { // 具体数据 }, "timestamp": "2024-01-20T10:30:00Z" } ``` #### 分页响应 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [...], "pagination": { "page": 1, "pageSize": 20, "total": 100, "totalPages": 5 } }, "timestamp": "2024-01-20T10:30:00Z" } ``` --- ## ❌ 错误处理 ### 错误响应格式 ```json { "success": false, "code": 400, "message": "请求参数错误", "error": { "type": "ValidationError", "details": [ { "field": "email", "message": "邮箱格式不正确" } ] }, "timestamp": "2024-01-20T10:30:00Z", "requestId": "req-123456789" } ``` ### HTTP状态码 | 状态码 | 说明 | 示例场景 | | ------ | -------------- | ---------------- | | 200 | 操作成功 | 数据获取成功 | | 201 | 创建成功 | 用户创建成功 | | 400 | 请求参数错误 | 参数格式不正确 | | 401 | 未认证 | Token无效或过期 | | 403 | 权限不足 | 没有访问权限 | | 404 | 资源不存在 | 用户不存在 | | 409 | 资源冲突 | 用户名已存在 | | 422 | 数据验证失败 | 业务规则验证失败 | | 429 | 请求过于频繁 | 超出限流阈值 | | 500 | 内部服务器错误 | 系统异常 | ### 错误类型 | 错误类型 | 说明 | 示例 | | ------------------- | ------------ | -------------- | | ValidationError | 数据验证错误 | 邮箱格式不正确 | | AuthenticationError | 认证错误 | Token无效 | | AuthorizationError | 授权错误 | 权限不足 | | NotFoundError | 资源不存在 | 用户不存在 | | ConflictError | 资源冲突 | 用户名重复 | | BusinessError | 业务逻辑错误 | 余额不足 | | SystemError | 系统错误 | 数据库连接失败 | --- ## 👤 用户认证 ### 用户登录 #### 接口信息 - **URL**: `/auth/login` - **方法**: `POST` - **认证**: 无需认证 #### 请求参数 ```json { "username": "admin", // 用户名,必填 "password": "123456", // 密码,必填 "rememberMe": true, // 记住我,可选,默认false "captcha": "ABCD", // 验证码,可选 "captchaId": "cap123" // 验证码ID,可选 } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "登录成功", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refreshToken": "refresh-token-here", "expiresIn": 7200, "user": { "id": "user123", "username": "admin", "email": "admin@example.com", "profile": { "firstName": "管理员", "lastName": "", "avatar": "https://example.com/avatar.jpg" }, "roles": ["admin"], "permissions": ["*"], "lastLogin": "2024-01-20T10:30:00Z" } } } ``` #### 错误示例 ```json { "success": false, "code": 401, "message": "用户名或密码错误", "error": { "type": "AuthenticationError", "details": [] } } ``` ### 用户登出 #### 接口信息 - **URL**: `/auth/logout` - **方法**: `POST` - **认证**: 需要Token #### 请求参数 ```json { "refreshToken": "refresh-token-here" // 可选,提供则同时注销refresh token } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "登出成功" } ``` ### 刷新Token #### 接口信息 - **URL**: `/auth/refresh` - **方法**: `POST` - **认证**: 需要Refresh Token #### 请求参数 ```json { "refreshToken": "your-refresh-token" } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "Token刷新成功", "data": { "token": "new-jwt-token", "refreshToken": "new-refresh-token", "expiresIn": 7200 } } ``` ### 获取当前用户信息 #### 接口信息 - **URL**: `/auth/me` - **方法**: `GET` - **认证**: 需要Token #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "id": "user123", "username": "admin", "email": "admin@example.com", "profile": { "firstName": "管理员", "lastName": "", "avatar": "https://example.com/avatar.jpg", "phone": "13800138000" }, "roles": ["admin"], "permissions": ["*"], "settings": { "language": "zh-CN", "timezone": "Asia/Shanghai", "theme": "light" }, "status": "active", "lastLogin": "2024-01-20T10:30:00Z", "createdAt": "2024-01-01T00:00:00Z" } } ``` --- ## 📋 账号管理 ### 获取Telegram账号列表 #### 接口信息 - **URL**: `/telegram-accounts` - **方法**: `GET` - **认证**: 需要Token - **权限**: `telegram-account:read` #### 请求参数 ```json { "page": 1, "pageSize": 20, "sortBy": "createdAt", "sortOrder": "desc", "filters": { "status": "active", // 状态筛选 "username": { "$like": "test" }, // 用户名模糊搜索 "phone": { "$like": "138" }, // 手机号模糊搜索 "createdAt": { // 创建时间范围 "$gte": "2024-01-01", "$lte": "2024-12-31" } } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "acc123", "telegramId": "123456789", "username": "testuser", "firstName": "Test", "lastName": "User", "phone": "13800138000", "status": "active", "isVerified": true, "isPremium": false, "languageCode": "zh-CN", "metadata": { "joinDate": "2024-01-01", "lastSeen": "2024-01-20T10:30:00Z", "messageCount": 150 }, "managedBy": "user123", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-20T10:30:00Z" } ], "pagination": { "page": 1, "pageSize": 20, "total": 100, "totalPages": 5 } } } ``` ### 创建Telegram账号 #### 接口信息 - **URL**: `/telegram-accounts` - **方法**: `POST` - **认证**: 需要Token - **权限**: `telegram-account:create` #### 请求参数 ```json { "telegramId": "123456789", // Telegram ID,必填 "username": "testuser", // 用户名,可选 "firstName": "Test", // 名字,必填 "lastName": "User", // 姓氏,可选 "phone": "13800138000", // 手机号,可选 "languageCode": "zh-CN", // 语言代码,可选 "metadata": { // 元数据,可选 "bio": "用户简介", "location": "北京" } } ``` #### 响应数据 ```json { "success": true, "code": 201, "message": "创建成功", "data": { "id": "acc123", "telegramId": "123456789", "username": "testuser", "firstName": "Test", "lastName": "User", "phone": "13800138000", "status": "active", "managedBy": "user123", "createdAt": "2024-01-20T10:30:00Z" } } ``` ### 获取账号详情 #### 接口信息 - **URL**: `/telegram-accounts/{id}` - **方法**: `GET` - **认证**: 需要Token - **权限**: `telegram-account:read` #### URL参数 | 参数 | 类型 | 说明 | | ---- | ------ | ------ | | id | String | 账号ID | #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "id": "acc123", "telegramId": "123456789", "username": "testuser", "firstName": "Test", "lastName": "User", "phone": "13800138000", "status": "active", "isVerified": true, "isPremium": false, "languageCode": "zh-CN", "bio": "用户简介", "profilePhoto": "https://example.com/photo.jpg", "metadata": { "joinDate": "2024-01-01", "lastSeen": "2024-01-20T10:30:00Z", "messageCount": 150, "groupCount": 25, "contactCount": 100 }, "statistics": { "sentMessages": 50, "receivedMessages": 100, "joinedGroups": 25, "successRate": 95.5 }, "managedBy": "user123", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-20T10:30:00Z" } } ``` ### 更新账号信息 #### 接口信息 - **URL**: `/telegram-accounts/{id}` - **方法**: `PUT` - **认证**: 需要Token - **权限**: `telegram-account:update` #### 请求参数 ```json { "username": "newusername", // 用户名,可选 "firstName": "NewName", // 名字,可选 "lastName": "NewLastName", // 姓氏,可选 "phone": "13900139000", // 手机号,可选 "status": "active", // 状态,可选 "metadata": { // 元数据,可选 "bio": "新的用户简介", "location": "上海" } } ``` ### 删除账号 #### 接口信息 - **URL**: `/telegram-accounts/{id}` - **方法**: `DELETE` - **认证**: 需要Token - **权限**: `telegram-account:delete` #### 响应数据 ```json { "success": true, "code": 200, "message": "删除成功" } ``` ### 批量操作账号 #### 接口信息 - **URL**: `/telegram-accounts/batch` - **方法**: `POST` - **认证**: 需要Token - **权限**: `telegram-account:batch` #### 请求参数 ```json { "action": "update_status", // 操作类型:update_status, delete, export "accountIds": ["acc1", "acc2"], // 账号ID列表 "data": { // 操作数据(根据action不同而不同) "status": "inactive" } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "批量操作成功", "data": { "total": 2, "success": 2, "failed": 0, "errors": [] } } ``` --- ## 📨 私信群发 ### 获取消息模板列表 #### 接口信息 - **URL**: `/message-templates` - **方法**: `GET` - **认证**: 需要Token - **权限**: `message-template:read` #### 请求参数 ```json { "page": 1, "pageSize": 20, "filters": { "type": "text", // 模板类型 "name": { "$like": "欢迎" }, // 模板名称搜索 "status": "active" // 状态筛选 } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "tpl123", "name": "欢迎消息模板", "type": "text", "content": "欢迎 {{firstName}} 加入我们!", "variables": [ { "name": "firstName", "type": "string", "description": "用户名字", "required": true, "defaultValue": "朋友" } ], "status": "active", "createdBy": "user123", "usageCount": 50, "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-20T10:30:00Z" } ], "pagination": { "page": 1, "pageSize": 20, "total": 25, "totalPages": 2 } } } ``` ### 创建消息模板 #### 接口信息 - **URL**: `/message-templates` - **方法**: `POST` - **认证**: 需要Token - **权限**: `message-template:create` #### 请求参数 ```json { "name": "新用户欢迎", // 模板名称,必填 "type": "text", // 模板类型:text, media, sticker "content": "欢迎 {{firstName}} 加入我们的群组!\n\n感谢您选择我们的服务。", "variables": [ // 变量定义 { "name": "firstName", "type": "string", "description": "用户名字", "required": true, "defaultValue": "朋友" } ], "media": { // 媒体文件(type为media时) "type": "photo", "url": "https://example.com/welcome.jpg", "caption": "欢迎图片" } } ``` ### 获取群发任务列表 #### 接口信息 - **URL**: `/message-tasks` - **方法**: `GET` - **认证**: 需要Token - **权限**: `message-task:read` #### 请求参数 ```json { "page": 1, "pageSize": 20, "sortBy": "createdAt", "sortOrder": "desc", "filters": { "status": "running", // 任务状态 "name": { "$like": "新年" }, // 任务名称搜索 "createdBy": "user123", // 创建者筛选 "createdAt": { // 创建时间范围 "$gte": "2024-01-01", "$lte": "2024-12-31" } } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "task123", "name": "新年祝福群发", "description": "向所有活跃用户发送新年祝福消息", "template": { "id": "tpl123", "name": "新年祝福模板", "content": "祝 {{firstName}} 新年快乐!" }, "targetCount": 1000, "status": "running", "priority": "normal", "scheduling": { "type": "immediate", "scheduledTime": null, "recurrence": null }, "progress": { "total": 1000, "sent": 750, "failed": 10, "pending": 240, "percentage": 75.0 }, "statistics": { "successRate": 98.7, "averageResponseTime": 2.5, "errorRate": 1.3 }, "createdBy": "user123", "createdAt": "2024-01-20T08:00:00Z", "updatedAt": "2024-01-20T10:30:00Z", "estimatedCompletion": "2024-01-20T12:00:00Z" } ], "pagination": { "page": 1, "pageSize": 20, "total": 50, "totalPages": 3 } } } ``` ### 创建群发任务 #### 接口信息 - **URL**: `/message-tasks` - **方法**: `POST` - **认证**: 需要Token - **权限**: `message-task:create` #### 请求参数 ```json { "name": "春节祝福活动", // 任务名称,必填 "description": "向所有VIP用户发送春节祝福", // 任务描述,可选 "templateId": "tpl123", // 消息模板ID,必填 "targetUsers": { // 目标用户,必填 "type": "filter", // 选择方式:filter, list, all "filters": { // 筛选条件 "status": "active", "isPremium": true, "lastSeen": { "$gte": "2024-01-01" } }, "userIds": [], // 用户ID列表(type为list时) "excludeIds": ["acc456"] // 排除的用户ID }, "scheduling": { // 调度设置 "type": "scheduled", // 执行类型:immediate, scheduled, recurring "scheduledTime": "2024-01-25T00:00:00Z", // 定时时间 "timezone": "Asia/Shanghai", // 时区 "recurrence": { // 重复设置(type为recurring时) "frequency": "daily", // 频率:daily, weekly, monthly "interval": 1, // 间隔 "endDate": "2024-02-25" // 结束日期 } }, "settings": { // 发送设置 "batchSize": 50, // 批次大小 "interval": 1000, // 发送间隔(毫秒) "retryCount": 3, // 重试次数 "priority": "high" // 优先级:low, normal, high }, "variables": { // 全局变量值 "companyName": "我们公司", "eventDate": "2024-01-25" } } ``` #### 响应数据 ```json { "success": true, "code": 201, "message": "任务创建成功", "data": { "id": "task123", "name": "春节祝福活动", "status": "pending", "targetCount": 500, "estimatedDuration": "00:30:00", "estimatedCompletion": "2024-01-25T00:30:00Z", "createdAt": "2024-01-20T10:30:00Z" } } ``` ### 获取任务详情 #### 接口信息 - **URL**: `/message-tasks/{id}` - **方法**: `GET` - **认证**: 需要Token - **权限**: `message-task:read` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "id": "task123", "name": "春节祝福活动", "description": "向所有VIP用户发送春节祝福", "template": { "id": "tpl123", "name": "春节祝福模板", "content": "祝 {{firstName}} 春节快乐!恭喜发财!", "type": "text" }, "targetUsers": { "type": "filter", "filters": { "status": "active", "isPremium": true }, "count": 500 }, "status": "running", "priority": "high", "scheduling": { "type": "scheduled", "scheduledTime": "2024-01-25T00:00:00Z", "timezone": "Asia/Shanghai" }, "progress": { "total": 500, "sent": 350, "failed": 5, "pending": 145, "percentage": 70.0, "estimatedRemaining": "00:15:00" }, "statistics": { "startTime": "2024-01-25T00:00:00Z", "lastSentTime": "2024-01-25T00:35:00Z", "averageResponseTime": 1.8, "successRate": 98.6, "errorRate": 1.4, "throughput": 600 // 每小时发送数量 }, "settings": { "batchSize": 50, "interval": 1000, "retryCount": 3 }, "errors": [ { "userId": "acc789", "error": "User blocked bot", "timestamp": "2024-01-25T00:15:00Z", "retryCount": 0 } ], "createdBy": "user123", "createdAt": "2024-01-20T10:30:00Z", "updatedAt": "2024-01-25T00:35:00Z" } } ``` ### 控制任务执行 #### 接口信息 - **URL**: `/message-tasks/{id}/control` - **方法**: `POST` - **认证**: 需要Token - **权限**: `message-task:control` #### 请求参数 ```json { "action": "pause" // 操作类型:start, pause, resume, cancel, retry } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "任务已暂停", "data": { "taskId": "task123", "status": "paused", "timestamp": "2024-01-25T00:40:00Z" } } ``` ### 获取发送记录 #### 接口信息 - **URL**: `/message-records` - **方法**: `GET` - **认证**: 需要Token - **权限**: `message-record:read` #### 请求参数 ```json { "page": 1, "pageSize": 50, "filters": { "taskId": "task123", // 任务ID筛选 "userId": "acc456", // 用户ID筛选 "status": "sent", // 发送状态:sent, failed, pending "sentAt": { // 发送时间范围 "$gte": "2024-01-25T00:00:00Z", "$lte": "2024-01-25T23:59:59Z" } } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "record123", "taskId": "task123", "taskName": "春节祝福活动", "templateId": "tpl123", "userId": "acc456", "userInfo": { "telegramId": "123456789", "username": "testuser", "firstName": "张三", "lastName": "" }, "message": { "type": "text", "content": "祝 张三 春节快乐!恭喜发财!", "messageId": "msg789" }, "status": "sent", "sentAt": "2024-01-25T00:15:30Z", "responseTime": 1200, // 响应时间(毫秒) "retryCount": 0, "error": null, "metadata": { "batchId": "batch001", "priority": "high" } } ], "pagination": { "page": 1, "pageSize": 50, "total": 500, "totalPages": 10 }, "summary": { "totalSent": 450, "totalFailed": 50, "successRate": 90.0, "averageResponseTime": 1800 } } } ``` --- ## 🎯 营销中心 ### 获取营销活动列表 #### 接口信息 - **URL**: `/marketing-campaigns` - **方法**: `GET` - **认证**: 需要Token - **权限**: `marketing-campaign:read` #### 请求参数 ```json { "page": 1, "pageSize": 20, "filters": { "status": "active", // 活动状态 "type": "promotion", // 活动类型 "name": { "$like": "双11" }, // 活动名称搜索 "startDate": { // 开始时间范围 "$gte": "2024-01-01", "$lte": "2024-12-31" } } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "camp123", "name": "双11购物节活动", "description": "年度最大促销活动", "type": "promotion", "status": "active", "startDate": "2024-11-01T00:00:00Z", "endDate": "2024-11-11T23:59:59Z", "budget": 100000.0, "targetAudience": { "totalCount": 50000, "segments": [ { "name": "VIP用户", "count": 5000, "criteria": { "isPremium": true, "purchaseAmount": { "$gte": 1000 } } } ] }, "channels": ["telegram", "email", "sms"], "metrics": { "impressions": 45000, "clicks": 9000, "conversions": 1800, "ctr": 20.0, // 点击率 "cvr": 4.0, // 转化率 "roi": 250.0 // 投资回报率 }, "createdBy": "user123", "createdAt": "2024-10-15T00:00:00Z", "updatedAt": "2024-11-05T10:30:00Z" } ], "pagination": { "page": 1, "pageSize": 20, "total": 30, "totalPages": 2 } } } ``` ### 创建营销活动 #### 接口信息 - **URL**: `/marketing-campaigns` - **方法**: `POST` - **认证**: 需要Token - **权限**: `marketing-campaign:create` #### 请求参数 ```json { "name": "春节促销活动", // 活动名称,必填 "description": "春节期间特惠促销", // 活动描述,可选 "type": "promotion", // 活动类型:promotion, retention, acquisition "startDate": "2024-01-20T00:00:00Z", // 开始时间,必填 "endDate": "2024-01-30T23:59:59Z", // 结束时间,必填 "budget": 50000.0, // 预算,可选 "targetAudience": { // 目标受众,必填 "segments": [ { "name": "活跃用户", "criteria": { "status": "active", "lastSeen": { "$gte": "2024-01-01" }, "messageCount": { "$gte": 10 } } } ], "excludeSegments": [ // 排除的用户群体 { "name": "已购买用户", "criteria": { "hasPurchased": true, "lastPurchase": { "$gte": "2024-01-01" } } } ] }, "channels": ["telegram", "email"], // 营销渠道 "content": { // 营销内容 "telegram": { "templateId": "tpl123", "variables": { "discount": "20%", "validUntil": "2024-01-30" } }, "email": { "subject": "春节特惠来了!", "templateId": "email_tpl456" } }, "scheduling": { // 调度设置 "strategy": "immediate", // 策略:immediate, scheduled, drip "batchSize": 1000, // 批次大小 "interval": 3600, // 间隔(秒) "timezone": "Asia/Shanghai" }, "trackingSettings": { // 跟踪设置 "enableClickTracking": true, "enableConversionTracking": true, "conversionEvents": ["purchase", "signup"], "attributionWindow": 7 // 归因窗口(天) } } ``` ### 获取客户分析 #### 接口信息 - **URL**: `/marketing/analytics/customers` - **方法**: `GET` - **认证**: 需要Token - **权限**: `marketing-analytics:read` #### 请求参数 ```json { "dateRange": { "startDate": "2024-01-01", "endDate": "2024-01-31" }, "segmentBy": "userType", // 分组维度:userType, location, channel "metrics": ["count", "revenue", "engagement"] // 需要的指标 } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "overview": { "totalCustomers": 10000, "newCustomers": 1500, "activeCustomers": 8500, "retentionRate": 85.0, "churnRate": 15.0, "averageLifetimeValue": 1200.0 }, "segments": [ { "name": "VIP用户", "count": 1000, "percentage": 10.0, "metrics": { "averageOrderValue": 500.0, "purchaseFrequency": 3.2, "lifetimeValue": 2400.0, "engagementScore": 95.0 }, "characteristics": { "avgAge": 35, "primaryLocation": "北京", "preferredChannel": "telegram" } } ], "trends": { "customerGrowth": [ { "date": "2024-01-01", "newCustomers": 50, "totalCustomers": 9500 } ], "retentionTrend": [ { "cohort": "2024-01", "week1": 95.0, "week2": 87.0, "week4": 82.0, "week8": 78.0 } ] }, "predictions": { "churnRisk": [ { "userId": "acc123", "riskScore": 0.85, "reasons": ["降低活跃度", "减少购买频率"], "recommendedActions": ["发送优惠券", "个性化推荐"] } ], "lifetimeValuePrediction": { "next30Days": 150.0, "next90Days": 380.0, "confidence": 0.82 } } } } ``` ### 获取效果统计 #### 接口信息 - **URL**: `/marketing/analytics/performance` - **方法**: `GET` - **认证**: 需要Token - **权限**: `marketing-analytics:read` #### 请求参数 ```json { "campaignId": "camp123", // 活动ID,可选 "dateRange": { "startDate": "2024-01-01", "endDate": "2024-01-31" }, "groupBy": "day", // 分组:hour, day, week, month "channels": ["telegram", "email"], // 渠道筛选 "metrics": ["impressions", "clicks", "conversions", "revenue"] } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "summary": { "impressions": 100000, "clicks": 15000, "conversions": 3000, "revenue": 150000.0, "cost": 25000.0, "ctr": 15.0, // 点击率 "cvr": 20.0, // 转化率 "cpc": 1.67, // 单次点击成本 "cpa": 8.33, // 单次获客成本 "roi": 500.0, // 投资回报率 "roas": 6.0 // 广告支出回报率 }, "byChannel": [ { "channel": "telegram", "impressions": 60000, "clicks": 10000, "conversions": 2200, "revenue": 110000.0, "cost": 15000.0, "metrics": { "ctr": 16.7, "cvr": 22.0, "roi": 633.3 } }, { "channel": "email", "impressions": 40000, "clicks": 5000, "conversions": 800, "revenue": 40000.0, "cost": 10000.0, "metrics": { "ctr": 12.5, "cvr": 16.0, "roi": 300.0 } } ], "timeline": [ { "date": "2024-01-01", "impressions": 3500, "clicks": 525, "conversions": 105, "revenue": 5250.0 } ], "topPerforming": { "campaigns": [ { "id": "camp123", "name": "双11购物节", "conversions": 1500, "revenue": 75000.0, "roi": 750.0 } ], "templates": [ { "id": "tpl123", "name": "优惠券模板", "usage": 50, "conversionRate": 25.0 } ] }, "insights": [ { "type": "opportunity", "title": "Telegram渠道表现优异", "description": "Telegram渠道的转化率比邮件高37.5%,建议增加投入", "impact": "high", "recommendation": "将预算的60%分配给Telegram渠道" } ] } } ``` --- ## 🔒 权限管理 ### 获取权限列表 #### 接口信息 - **URL**: `/permissions` - **方法**: `GET` - **认证**: 需要Token - **权限**: `permission:read` #### 请求参数 ```json { "page": 1, "pageSize": 50, "filters": { "resource": "user", // 资源类型筛选 "action": "read", // 操作类型筛选 "module": "account-management" // 模块筛选 } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "perm123", "code": "user:read", "name": "查看用户", "description": "查看用户基本信息和列表", "resource": "user", "action": "read", "module": "account-management", "isSystem": true, "createdAt": "2024-01-01T00:00:00Z" }, { "id": "perm124", "code": "user:create", "name": "创建用户", "description": "创建新的用户账号", "resource": "user", "action": "create", "module": "account-management", "isSystem": true, "createdAt": "2024-01-01T00:00:00Z" } ], "pagination": { "page": 1, "pageSize": 50, "total": 120, "totalPages": 3 }, "groupedByModule": { "account-management": [ { "resource": "user", "actions": ["create", "read", "update", "delete"] }, { "resource": "telegram-account", "actions": ["create", "read", "update", "delete", "batch"] } ], "message-management": [ { "resource": "message-template", "actions": ["create", "read", "update", "delete"] }, { "resource": "message-task", "actions": ["create", "read", "update", "delete", "control"] } ] } } } ``` ### 获取角色列表 #### 接口信息 - **URL**: `/roles` - **方法**: `GET` - **认证**: 需要Token - **权限**: `role:read` #### 请求参数 ```json { "page": 1, "pageSize": 20, "filters": { "status": "active", // 状态筛选 "isSystem": false, // 是否系统角色 "name": { "$like": "管理" } // 角色名称搜索 } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "role123", "name": "账号管理员", "description": "负责管理Telegram账号", "code": "account_admin", "status": "active", "isSystem": false, "permissions": [ { "id": "perm123", "code": "telegram-account:read", "name": "查看账号" }, { "id": "perm124", "code": "telegram-account:create", "name": "创建账号" } ], "userCount": 5, // 拥有此角色的用户数量 "createdBy": "user123", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-10T10:30:00Z" } ], "pagination": { "page": 1, "pageSize": 20, "total": 15, "totalPages": 1 } } } ``` ### 创建角色 #### 接口信息 - **URL**: `/roles` - **方法**: `POST` - **认证**: 需要Token - **权限**: `role:create` #### 请求参数 ```json { "name": "消息管理员", // 角色名称,必填 "description": "负责管理消息模板和群发任务", // 角色描述,可选 "code": "message_admin", // 角色代码,必填,唯一 "permissions": [ // 权限ID列表,必填 "perm201", "perm202", "perm203" ], "inherits": ["role456"], // 继承的角色ID列表,可选 "status": "active" // 状态,可选,默认active } ``` #### 响应数据 ```json { "success": true, "code": 201, "message": "角色创建成功", "data": { "id": "role789", "name": "消息管理员", "description": "负责管理消息模板和群发任务", "code": "message_admin", "status": "active", "permissions": [ { "id": "perm201", "code": "message-template:create", "name": "创建消息模板" } ], "createdBy": "user123", "createdAt": "2024-01-20T10:30:00Z" } } ``` ### 分配用户角色 #### 接口信息 - **URL**: `/users/{userId}/roles` - **方法**: `POST` - **认证**: 需要Token - **权限**: `user:assign-role` #### 请求参数 ```json { "roleIds": ["role123", "role456"], // 角色ID列表 "action": "assign" // 操作类型:assign, revoke, replace } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "角色分配成功", "data": { "userId": "user456", "roles": [ { "id": "role123", "name": "账号管理员", "assignedAt": "2024-01-20T10:30:00Z" }, { "id": "role456", "name": "消息管理员", "assignedAt": "2024-01-20T10:30:00Z" } ] } } ``` ### 检查用户权限 #### 接口信息 - **URL**: `/auth/check-permission` - **方法**: `POST` - **认证**: 需要Token #### 请求参数 ```json { "permissions": [ // 需要检查的权限列表 "telegram-account:read", "message-task:create" ], "resource": { // 资源信息(可选,用于资源级权限控制) "type": "telegram-account", "id": "acc123", "ownerId": "user456" } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "权限检查完成", "data": { "hasAllPermissions": false, "permissions": { "telegram-account:read": true, "message-task:create": false }, "missingPermissions": ["message-task:create"], "userId": "user123", "checkedAt": "2024-01-20T10:30:00Z" } } ``` --- ## ⚙️ 系统配置 ### 获取系统配置 #### 接口信息 - **URL**: `/system/config` - **方法**: `GET` - **认证**: 需要Token - **权限**: `system-config:read` #### 请求参数 ```json { "category": "telegram", // 配置分类:telegram, email, sms, system "keys": ["api_token", "rate_limit"] // 指定配置键,可选 } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "telegram": { "api_token": { "value": "***masked***", "type": "password", "description": "Telegram Bot API Token", "updatedAt": "2024-01-20T10:30:00Z", "updatedBy": "user123" }, "rate_limit": { "value": 30, "type": "number", "description": "每秒最大请求数", "min": 1, "max": 50, "updatedAt": "2024-01-15T08:00:00Z", "updatedBy": "user123" }, "webhook_url": { "value": "https://api.example.com/webhook/telegram", "type": "url", "description": "Webhook回调地址", "updatedAt": "2024-01-10T12:00:00Z", "updatedBy": "user123" } }, "system": { "site_name": { "value": "Telegram管理系统", "type": "string", "description": "系统名称" }, "max_file_size": { "value": 10485760, "type": "number", "description": "最大文件上传大小(字节)", "min": 1048576, "max": 104857600 }, "default_language": { "value": "zh-CN", "type": "select", "description": "默认语言", "options": [ { "value": "zh-CN", "label": "简体中文" }, { "value": "en-US", "label": "English" } ] } } } } ``` ### 更新系统配置 #### 接口信息 - **URL**: `/system/config` - **方法**: `PUT` - **认证**: 需要Token - **权限**: `system-config:update` #### 请求参数 ```json { "telegram": { "rate_limit": 25, "webhook_url": "https://new-api.example.com/webhook/telegram" }, "system": { "site_name": "新的系统名称", "max_file_size": 20971520 } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "配置更新成功", "data": { "updated": [ { "key": "telegram.rate_limit", "oldValue": 30, "newValue": 25 }, { "key": "system.site_name", "oldValue": "Telegram管理系统", "newValue": "新的系统名称" } ], "updatedBy": "user123", "updatedAt": "2024-01-20T10:30:00Z" } } ``` ### 获取系统统计 #### 接口信息 - **URL**: `/system/statistics` - **方法**: `GET` - **认证**: 需要Token - **权限**: `system:read` #### 请求参数 ```json { "dateRange": { "startDate": "2024-01-01", "endDate": "2024-01-31" }, "metrics": ["users", "messages", "tasks", "performance"] // 需要的统计指标 } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "overview": { "totalUsers": 1500, "activeUsers": 1200, "totalAccounts": 50000, "activeAccounts": 45000, "totalMessages": 1000000, "totalTasks": 500, "systemUptime": "99.9%" }, "users": { "newUsers": 150, "activeUsers": 1200, "userGrowthRate": 11.1, "userRetentionRate": 85.0, "averageSessionDuration": 1800, // 秒 "byRole": { "admin": 5, "manager": 50, "operator": 1145 } }, "messages": { "totalSent": 800000, "totalFailed": 50000, "successRate": 94.1, "averageResponseTime": 1500, // 毫秒 "byChannel": { "telegram": 700000, "email": 100000, "sms": 50000 }, "byType": { "marketing": 600000, "notification": 200000, "support": 50000 } }, "tasks": { "totalCreated": 500, "completed": 450, "failed": 30, "running": 20, "successRate": 90.0, "averageExecutionTime": 3600, // 秒 "byPriority": { "high": 100, "normal": 350, "low": 50 } }, "performance": { "cpuUsage": 45.2, "memoryUsage": 68.5, "diskUsage": 72.1, "networkIO": { "inbound": 1024000, // bytes/sec "outbound": 2048000 }, "databaseConnections": { "active": 15, "idle": 5, "total": 20 }, "cacheHitRate": 95.5, "averageApiResponseTime": 150 // 毫秒 }, "trends": [ { "date": "2024-01-01", "users": 1350, "messages": 25000, "tasks": 15 }, { "date": "2024-01-02", "users": 1355, "messages": 26000, "tasks": 18 } ] } } ``` --- ## 📁 文件管理 ### 上传文件 #### 接口信息 - **URL**: `/files/upload` - **方法**: `POST` - **认证**: 需要Token - **权限**: `file:upload` - **Content-Type**: `multipart/form-data` #### 请求参数 ```form-data file: (binary) // 文件内容,必填 category: "avatar" // 文件分类:avatar, document, image, video description: "用户头像" // 文件描述,可选 isPublic: true // 是否公开,可选,默认false ``` #### 响应数据 ```json { "success": true, "code": 201, "message": "文件上传成功", "data": { "id": "file123", "filename": "avatar.jpg", "originalName": "user-avatar.jpg", "size": 102400, "mimeType": "image/jpeg", "category": "avatar", "isPublic": true, "url": "https://cdn.example.com/files/avatar.jpg", "thumbnailUrl": "https://cdn.example.com/thumbs/avatar_thumb.jpg", "metadata": { "width": 300, "height": 300, "format": "JPEG", "colorSpace": "sRGB" }, "uploadedBy": "user123", "uploadedAt": "2024-01-20T10:30:00Z", "expiresAt": null } } ``` ### 获取文件列表 #### 接口信息 - **URL**: `/files` - **方法**: `GET` - **认证**: 需要Token - **权限**: `file:read` #### 请求参数 ```json { "page": 1, "pageSize": 20, "filters": { "category": "image", // 文件分类筛选 "mimeType": "image/jpeg", // MIME类型筛选 "uploadedBy": "user123", // 上传者筛选 "uploadedAt": { // 上传时间范围 "$gte": "2024-01-01", "$lte": "2024-01-31" }, "filename": { "$like": "avatar" } // 文件名搜索 } } ``` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "items": [ { "id": "file123", "filename": "avatar.jpg", "originalName": "user-avatar.jpg", "size": 102400, "mimeType": "image/jpeg", "category": "avatar", "isPublic": true, "url": "https://cdn.example.com/files/avatar.jpg", "thumbnailUrl": "https://cdn.example.com/thumbs/avatar_thumb.jpg", "downloadCount": 25, "uploadedBy": "user123", "uploadedAt": "2024-01-20T10:30:00Z" } ], "pagination": { "page": 1, "pageSize": 20, "total": 150, "totalPages": 8 }, "summary": { "totalSize": 52428800, // 总文件大小(字节) "totalCount": 150, "byCategory": { "image": 80, "document": 50, "video": 20 }, "storageUsed": "50.0MB", "storageLimit": "1.0GB", "storageUsedPercentage": 5.0 } } } ``` ### 获取文件详情 #### 接口信息 - **URL**: `/files/{id}` - **方法**: `GET` - **认证**: 需要Token - **权限**: `file:read` #### 响应数据 ```json { "success": true, "code": 200, "message": "获取成功", "data": { "id": "file123", "filename": "document.pdf", "originalName": "重要文档.pdf", "size": 2048000, "mimeType": "application/pdf", "category": "document", "description": "项目需求文档", "isPublic": false, "url": "https://cdn.example.com/files/document.pdf", "downloadUrl": "https://api.example.com/files/file123/download", "metadata": { "pages": 25, "author": "作者名", "title": "项目需求文档", "createdDate": "2024-01-15T00:00:00Z" }, "accessLog": [ { "userId": "user456", "action": "download", "timestamp": "2024-01-20T09:00:00Z", "ip": "192.168.1.100" } ], "downloadCount": 15, "uploadedBy": "user123", "uploadedAt": "2024-01-15T14:30:00Z", "updatedAt": "2024-01-20T10:30:00Z", "expiresAt": "2024-12-31T23:59:59Z" } } ``` ### 下载文件 #### 接口信息 - **URL**: `/files/{id}/download` - **方法**: `GET` - **认证**: 需要Token - **权限**: `file:download` #### URL参数 | 参数 | 类型 | 说明 | | ---- | ------ | ------ | | id | String | 文件ID | #### Query参数 | 参数 | 类型 | 说明 | | --------- | ------- | -------------------------- | | thumbnail | Boolean | 是否下载缩略图 | | download | Boolean | 是否强制下载(设置下载头) | #### 响应 成功时返回文件二进制内容,响应头包含: ```http Content-Type: application/octet-stream Content-Disposition: attachment; filename="filename.ext" Content-Length: 1024000 Cache-Control: private, max-age=3600 ``` ### 删除文件 #### 接口信息 - **URL**: `/files/{id}` - **方法**: `DELETE` - **认证**: 需要Token - **权限**: `file:delete` #### 响应数据 ```json { "success": true, "code": 200, "message": "文件删除成功", "data": { "id": "file123", "filename": "deleted-file.jpg", "deletedAt": "2024-01-20T10:30:00Z", "deletedBy": "user123" } } ``` --- ## 🔄 实时通信 ### WebSocket连接 #### 连接信息 - **URL**: `wss://api.example.com/ws` - **协议**: WebSocket - **认证**: 连接时需要传递Token #### 连接参数 ```javascript const ws = new WebSocket('wss://api.example.com/ws', { headers: { Authorization: 'Bearer your-jwt-token', }, }); // 或通过查询参数 const ws = new WebSocket('wss://api.example.com/ws?token=your-jwt-token'); ``` #### 连接事件 ```javascript ws.onopen = function (event) { console.log('WebSocket连接已建立'); // 发送认证消息 ws.send( JSON.stringify({ type: 'auth', token: 'your-jwt-token', }), ); }; ws.onmessage = function (event) { const message = JSON.parse(event.data); console.log('收到消息:', message); }; ws.onclose = function (event) { console.log('WebSocket连接已关闭:', event.code, event.reason); }; ws.onerror = function (error) { console.error('WebSocket错误:', error); }; ``` ### 消息格式 #### 通用消息结构 ```json { "type": "message_type", // 消息类型 "id": "msg123", // 消息ID,可选 "timestamp": "2024-01-20T10:30:00Z", // 时间戳 "data": { // 消息数据 // 具体内容根据消息类型不同 } } ``` #### 认证消息 ```json { "type": "auth", "token": "your-jwt-token" } ``` #### 认证响应 ```json { "type": "auth_result", "success": true, "message": "认证成功", "userId": "user123", "sessionId": "session456" } ``` ### 订阅频道 #### 订阅消息 ```json { "type": "subscribe", "channels": [ "user.user123", // 用户个人频道 "task.task456", // 特定任务频道 "system.notifications", // 系统通知频道 "global.announcements" // 全局公告频道 ] } ``` #### 订阅响应 ```json { "type": "subscribe_result", "success": true, "channels": [ { "name": "user.user123", "status": "subscribed" }, { "name": "task.task456", "status": "subscribed" } ] } ``` #### 取消订阅 ```json { "type": "unsubscribe", "channels": ["task.task456"] } ``` ### 实时消息类型 #### 1. 任务进度更新 ```json { "type": "task_progress", "timestamp": "2024-01-20T10:30:00Z", "data": { "taskId": "task123", "taskName": "春节祝福活动", "progress": { "total": 1000, "sent": 750, "failed": 10, "pending": 240, "percentage": 75.0 }, "estimatedCompletion": "2024-01-20T12:00:00Z", "currentRate": 50 // 每分钟发送数量 } } ``` #### 2. 任务状态变更 ```json { "type": "task_status_change", "timestamp": "2024-01-20T10:30:00Z", "data": { "taskId": "task123", "taskName": "春节祝福活动", "oldStatus": "running", "newStatus": "completed", "reason": "任务执行完成", "statistics": { "duration": 7200, // 执行时长(秒) "totalSent": 990, "totalFailed": 10, "successRate": 99.0 } } } ``` #### 3. 系统通知 ```json { "type": "system_notification", "timestamp": "2024-01-20T10:30:00Z", "data": { "id": "notify123", "title": "系统维护通知", "message": "系统将在今晚22:00-24:00进行维护,期间服务可能中断", "level": "warning", // 级别:info, warning, error, success "category": "maintenance", "targetUsers": ["user123", "user456"], // 目标用户,null表示所有用户 "actions": [ { "text": "查看详情", "url": "/system/maintenance-notice" } ], "expiresAt": "2024-01-21T00:00:00Z" } } ``` #### 4. 用户在线状态 ```json { "type": "user_status", "timestamp": "2024-01-20T10:30:00Z", "data": { "userId": "user456", "username": "testuser", "status": "online", // 状态:online, offline, away, busy "lastSeen": "2024-01-20T10:30:00Z", "device": "web" // 设备类型:web, mobile, desktop } } ``` #### 5. 实时日志 ```json { "type": "log_message", "timestamp": "2024-01-20T10:30:00Z", "data": { "level": "error", // 日志级别:debug, info, warn, error "message": "消息发送失败: 用户已屏蔽机器人", "source": "message-service", "userId": "user123", "taskId": "task456", "context": { "telegramId": "123456789", "errorCode": "BLOCKED_BY_USER" } } } ``` #### 6. 性能指标 ```json { "type": "performance_metrics", "timestamp": "2024-01-20T10:30:00Z", "data": { "cpu": 45.2, // CPU使用率 "memory": 68.5, // 内存使用率 "disk": 72.1, // 磁盘使用率 "network": { "inbound": 1024, // 入站流量 KB/s "outbound": 2048 // 出站流量 KB/s }, "database": { "connections": 15, "queryTime": 150 // 平均查询时间(毫秒) }, "activeUsers": 120, "activeTasks": 5, "messageRate": 50 // 每分钟消息数 } } ``` ### 心跳机制 #### 心跳消息 客户端每30秒发送一次心跳: ```json { "type": "ping", "timestamp": "2024-01-20T10:30:00Z" } ``` #### 心跳响应 服务器响应心跳: ```json { "type": "pong", "timestamp": "2024-01-20T10:30:00Z", "serverTime": "2024-01-20T10:30:05Z" } ``` ### 错误处理 #### 错误消息格式 ```json { "type": "error", "timestamp": "2024-01-20T10:30:00Z", "error": { "code": "INVALID_TOKEN", "message": "Token无效或已过期", "details": {} } } ``` #### 常见错误代码 | 错误代码 | 说明 | 处理建议 | | ------------------- | ------------ | -------------------- | | INVALID_TOKEN | Token无效 | 重新登录获取新Token | | TOKEN_EXPIRED | Token过期 | 刷新Token或重新登录 | | PERMISSION_DENIED | 权限不足 | 检查用户权限设置 | | RATE_LIMIT_EXCEEDED | 请求频率过高 | 减少请求频率 | | CHANNEL_NOT_FOUND | 频道不存在 | 检查频道名称是否正确 | | CONNECTION_LOST | 连接丢失 | 尝试重新连接 | ### 重连机制 #### 自动重连示例 ```javascript class WebSocketClient { constructor(url, token) { this.url = url; this.token = token; this.reconnectAttempts = 0; this.maxReconnectAttempts = 5; this.reconnectInterval = 1000; // 初始重连间隔 this.connect(); } connect() { this.ws = new WebSocket(this.url); this.ws.onopen = () => { console.log('Connected to WebSocket'); this.reconnectAttempts = 0; this.reconnectInterval = 1000; // 发送认证消息 this.authenticate(); }; this.ws.onmessage = (event) => { const message = JSON.parse(event.data); this.handleMessage(message); }; this.ws.onclose = (event) => { console.log('WebSocket connection closed:', event.code); this.handleReconnect(); }; this.ws.onerror = (error) => { console.error('WebSocket error:', error); }; } authenticate() { this.send({ type: 'auth', token: this.token, }); } handleReconnect() { if (this.reconnectAttempts < this.maxReconnectAttempts) { this.reconnectAttempts++; console.log( `Attempting to reconnect (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`, ); setTimeout(() => { this.connect(); }, this.reconnectInterval); // 指数退避策略 this.reconnectInterval = Math.min(this.reconnectInterval * 2, 30000); } else { console.error('Max reconnection attempts reached'); } } send(message) { if (this.ws.readyState === WebSocket.OPEN) { this.ws.send(JSON.stringify(message)); } else { console.warn('WebSocket is not connected'); } } handleMessage(message) { switch (message.type) { case 'auth_result': if (message.success) { console.log('Authentication successful'); this.subscribeToChannels(); } else { console.error('Authentication failed:', message.message); } break; case 'task_progress': this.onTaskProgress(message.data); break; case 'system_notification': this.onSystemNotification(message.data); break; case 'error': this.onError(message.error); break; default: console.log('Received message:', message); } } subscribeToChannels() { this.send({ type: 'subscribe', channels: [`user.${this.userId}`, 'system.notifications'], }); } onTaskProgress(data) { // 处理任务进度更新 console.log('Task progress:', data); } onSystemNotification(data) { // 处理系统通知 console.log('System notification:', data); } onError(error) { console.error('WebSocket error:', error); if (error.code === 'INVALID_TOKEN') { // Token无效,需要重新登录 this.handleTokenError(); } } handleTokenError() { // 处理Token错误,通常需要重新登录 window.location.href = '/login'; } } // 使用示例 const wsClient = new WebSocketClient('wss://api.example.com/ws', userToken); ``` --- ## 📚 附录 ### API变更历史 #### v2.0.0 (2024-01-20) - 新增营销中心相关接口 - 新增WebSocket实时通信 - 优化权限管理接口 - 增加文件管理功能 #### v1.2.0 (2023-12-15) - 新增批量操作接口 - 优化分页查询性能 - 增加更多筛选条件 #### v1.1.0 (2023-11-20) - 新增消息模板管理 - 增加任务调度功能 - 完善错误处理机制 #### v1.0.0 (2023-10-01) - 初始版本发布 - 基础的用户认证和账号管理 - 简单的消息发送功能 ### SDK与示例 #### JavaScript SDK ```javascript // 安装: npm install telegram-system-sdk import TelegramSystemSDK from 'telegram-system-sdk'; const client = new TelegramSystemSDK({ baseURL: 'https://api.example.com/v1', token: 'your-jwt-token', }); // 获取账号列表 const accounts = await client.accounts.list({ page: 1, pageSize: 20, filters: { status: 'active' }, }); // 创建群发任务 const task = await client.messages.createTask({ name: '新年祝福', templateId: 'tpl123', targetUsers: { type: 'all' }, }); // 监听实时事件 client.on('task_progress', (data) => { console.log('任务进度更新:', data); }); ``` #### Python SDK ```python # 安装: pip install telegram-system-sdk from telegram_system_sdk import TelegramSystemClient client = TelegramSystemClient( base_url='https://api.example.com/v1', token='your-jwt-token' ) # 获取账号列表 accounts = client.accounts.list( page=1, page_size=20, filters={'status': 'active'} ) # 创建消息模板 template = client.templates.create({ 'name': '欢迎模板', 'type': 'text', 'content': '欢迎 {{firstName}} 加入!' }) ``` ### 测试环境 #### Postman集合 提供完整的Postman集合文件,包含所有接口的示例请求: ```json { "info": { "name": "Telegram管理系统API", "description": "完整的API接口测试集合", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{access_token}}", "type": "string" } ] }, "variable": [ { "key": "base_url", "value": "https://api.example.com/v1" } ] } ``` #### 测试数据 提供用于测试的示例数据: ```json { "testUsers": [ { "username": "test_admin", "password": "test123456", "roles": ["admin"] }, { "username": "test_operator", "password": "test123456", "roles": ["operator"] } ], "testAccounts": [ { "telegramId": "123456789", "username": "testuser1", "firstName": "测试", "lastName": "用户1" } ], "testTemplates": [ { "name": "测试模板", "type": "text", "content": "这是一个测试消息模板,用户名:{{firstName}}" } ] } ``` --- ## 🤝 支持与反馈 ### 技术支持 - **文档地址**: https://docs.telegram-system.com - **API控制台**: https://console.telegram-system.com - **状态页面**: https://status.telegram-system.com ### 联系方式 - **技术支持邮箱**: support@telegram-system.com - **开发者邮箱**: dev@telegram-system.com - **问题反馈**: https://github.com/telegram-system/api/issues ### 更新通知 关注API更新和维护通知: - **邮件订阅**: api-updates@telegram-system.com - **Webhook通知**: 可配置Webhook接收API变更通知 - **版本发布**: 关注GitHub Release页面 --- **最后更新**: 2024-01-20 **文档版本**: v2.0.0 **API版本**: v1 > 本文档将随着API的演进持续更新,请定期查看最新版本。如有疑问或建议,欢迎通过上述渠道联系我们。