收件箱
TelegramOS 统一收件箱:把你所有 Telegram 账号的全部对话汇入同一个队列,并支持分派与回复。
收件箱把工作区中每个账号的私信、群组、频道和机器人对话汇聚成一条实时信息流。
统一收件箱概念
每个账号通过各自的代理维持自己的 MTProto 连接。私聊、基础群组和超级群组始终会被采集。广播频道的帖子只有在该频道位于你的已跟踪群组列表中时才会被采集(需主动开启;该列表每 5 分钟刷新一次)。
消息按账号、聊天 ID 和 Telegram 消息 ID 去重。
| 功能 | 说明 |
|---|---|
| 实时更新 | Socket.IO 连接在新消息到达时立即推送。无需轮询。 |
| 按账号筛选 | 将收件箱筛选为只显示某一个账号的消息。 |
| 按聊天筛选 | 筛选到特定的聊天、群组或频道。 |
| 未读计数 | 按账号和按聊天的未读计数器。 |
| 搜索 | 对所有消息进行全文搜索(在采集时建立索引)。 |
| 回复 | 直接从收件箱回复任意私信或群组消息。 |
负责人、标签与状态
每个会话都有一位负责人、一组标签和一个状态。工作区中拥有收件箱读取权限的成员都能看到这三项。
| 字段 | 工作方式 |
|---|---|
| 负责人 | 会话标题栏中的 Assign to me 认领该会话,Unassign 释放它。认领会加上 300 秒的锁;在此期间尝试认领的队友会收到“Locked by another agent”。控制台只会把会话分配给点击的人;PATCH /api/conversations/{id} 接受任意 assignee_id。 |
| 标签 | 自由文本标签,最长 40 个字符。可在会话标题栏中添加或移除,通过批量选择为多个会话添加同一标签,并按标签筛选列表(会话必须包含所有选中的标签)。 |
| 状态 | open、pending 或 resolved。可在会话标题栏中设置,也可批量解决或重新打开会话。列表为每种状态提供一个标签页。解决会记录解决时间,重新打开会清除它。 |
实时更新
收件箱通过站点主机上路径为 /ws 的 Socket.IO 4 推送新消息(wss://telegramos.net/ws)。在握手时使用你的会话 JWT(auth.token)、access_token Cookie 或 API 密钥进行认证。限定区域的 API 密钥需要具备 read 和 inbox 权限。
事件以带名称的 Socket.IO 消息形式到达,而不是单一信封:套接字就绪时为 system.connected,随后新消息为 inbox.message,还有 notification.new、account.power_changed 等。使用 subscribe:account 订阅某个账号的事件流;服务器会拒绝订阅不属于你工作区的账号。
事件通过 Redis pub/sub 实时推送,不会重放。离线的客户端会错过这些事件。要补齐遗漏,请使用 Webhook(inbox.new_message、inbox.message_failed、inbox.read;带签名且会重试),或通过 GET /api/conversations/{id}/messages?after_msg_id=… 拉取更新的消息。
编辑与删除的处理
当消息在 Telegram 上被编辑时,已存储的文本会被覆盖。不保留编辑历史。
删除不会同步。在 Telegram 上删除的消息仍会保留在收件箱中。
附件
你通过收件箱上传的文件存储在兼容 S3 的对象存储(MinIO)中。
| 属性 | 值 |
|---|---|
| 存储后端 | MinIO(兼容 S3) |
| 最大上传大小 | 每个文件 20 MB |
| 下载 | 通过 API 流式传输。不提供预签名链接。 |
| 入站媒体 | 不会自动下载。按需获取。 |
消息存储
消息文本以明文形式存储在数据库中。静态数据未加密。
租用账号的登录验证码会话
来自 Telegram 服务会话(peer ID 777000)的消息包含登录验证码、2FA 恢复码和会话确认。它们与其他消息一样被存储,但对于租用账号,会在查询时被隐藏:收件箱不会返回它们。777000 默认位于隐藏 peer 列表中。
为什么这很重要: 777000 会话是 Telegram 发送一次性登录验证码的地方。如果租用者能够查看这些消息,就可以从另一个 Telegram 客户端以底层手机号所有者的身份完成认证,从而破坏租用隔离模型。隐藏这些消息是一条核心的隐私与安全边界。
收件箱保留期
统一收件箱中的消息在关联账号的整个生命周期内保留。当账号被释放时(订阅到期 + 宽限期),该账号的所有消息会被永久删除。不存在单独的仅针对收件箱的保留期。