Install
openclaw skills install teamgram-client-e2e-flowDocuments the KHF Android client architecture and complete end-to-end data flows for login, messaging, and file operations through all Teamgram Server layers.
openclaw skills install teamgram-client-e2e-flow从 KHF 源码提取(必须与服务端兼容):
TLRPC.LAYER = 222BuildVars.APP_ID = 4BuildVars.APP_HASH = "014b35b6184100b085b0d0572f9b5103"ConnectionsManager 负责:
native_init(...) 初始化 MTProto(layer/api_id/设备信息)native_sendRequest(...) 发送 RPC客户端通过 JNI 调用 Native C++ 层实现 MTProto 协议,包括:
MessagesController 负责 dialogs/messages/users/chats 的本地模型与网络请求,典型方法:
Client (KHF)
-> TL: auth.sendCode(phone_number, api_id, api_hash, settings)
-> MTProto encrypted message
-> gnetway decrypt + QuickAck + SendDataToSession
-> session decode TLMessage2 -> route to /mtproto.RPCAuthorization via IDMap
-> bff.authorization.AuthSendCode
-> biz.user (check phone registered)
-> status (online sessions)
-> verify-code plugin (sms) OR app code
<- bff returns auth.SentCode or error
<- session wraps rpc_result
<- gnetway encrypts + send back
<- client parses auth.SentCode
Client
-> TL: messages.sendMessage / messages.sendMedia / ...
-> gnetway -> session -> bff.messages
-> bff.messages
-> biz_service (dialog/message/chat/user)
-> msg service (异步投递 + Kafka)
-> messenger.msg produces to Kafka Inbox-T
-> inbox consumes Inbox-T, writes inbox/outbox state
-> produces updates to Kafka Sync-T
-> sync consumes Sync-T, decides UpdatesMe/NotMe/PushRpcResult
-> sync calls session (gRPC) to push updates/rpc_result
-> session routes to correct sessionId
-> gnetway encrypt -> client
Client
-> files.upload* / upload.getFile
-> bff.files
-> dfs 保存/获取 file parts
-> media 生成缩略图/元数据
-> db 写入 documents/photos/photo_sizes/...
<- 返回 inputFile / fileLocation / document/photo
DFS
- Minio buckets: documents/photos/videos/encryptedfiles
- MiniHttp 0.0.0.0:11701 提供 HTTP 下载入口
| 错误 | 含义 | 排查方向 |
|---|---|---|
| PHONE_NUMBER_INVALID | 手机号格式不正确 | 检查国际格式(+86...) |
| PHONE_NUMBER_BANNED | 手机号被封禁 | 检查 predefined_users 表 |
| SESSION_PASSWORD_NEEDED | 需要两步验证 | 用户设置了密码 |
| AUTH_KEY_UNREGISTERED | auth_key 未注册 | 清除客户端数据重新握手 |
| CONNECTION_NOT_INITED | 未调用 initConnection | 客户端需先发 initConnection |
| ERR_ENTERPRISE_IS_BLOCKED | 企业版功能锁定 | 需要解除企业版拦截(修改 biz_service 中的企业版检查逻辑) |
| METHOD_NOT_IMPL | RPC 方法未实现 | 检查 BFF handler 和 session IDMap 路由是否配置 |
Teamgram 社区版中部分功能被企业版锁定拦截,表现为:
ERR_ENTERPRISE_IS_BLOCKED 错误checkEnterprise() 函数拦截解锁方法:修改 biz_service 中对应 helper 的企业版检查逻辑,移除或绕过 checkEnterprise() 调用。
TMessagesProj/jni/tgnet/ConnectionsManager.cppTMessagesProj/src/main/java/org/telegram/messenger/MessagesController.javaTMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.javaTMessagesProj/src/main/java/org/telegram/messenger/BuildVars.javaapp/interface/gnetway/app/interface/session/app/bff/app/service/biz/app/messenger/teamgramd/etc/teamgramd/deploy/sql/