refactor: migrate workflow to v2 core and archive legacy modules
This commit is contained in:
81
core/websocket_client_v2.py
Normal file
81
core/websocket_client_v2.py
Normal file
@@ -0,0 +1,81 @@
|
||||
import asyncio
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime
|
||||
from core.orchestrator import init_orchestrator
|
||||
from core.websocket_connection_flow import connect_flow, receive_messages_flow
|
||||
from core.websocket_send_flow import send_message_flow
|
||||
from utils.observability import emit_activity
|
||||
|
||||
logger = logging.getLogger("cs_agent")
|
||||
|
||||
class QingjianAPIClient:
|
||||
"""
|
||||
重构后的轻简API客户端 (协议全复刻版)
|
||||
"""
|
||||
|
||||
def __init__(self, uri=None, enable_agent: bool = True):
|
||||
from config.config import QINGJIAN_WS_URI
|
||||
self.uri = uri or QINGJIAN_WS_URI
|
||||
self.websocket = None
|
||||
self.running = True
|
||||
self.logger = logger
|
||||
self.enable_agent = enable_agent
|
||||
|
||||
# 初始化新架构总指挥部
|
||||
self.orchestrator = init_orchestrator(ws_client=self)
|
||||
logger.info("[WebSocket] 新架构 Orchestrator 已就绪。")
|
||||
|
||||
def _activity_log(self, event: str, **kwargs):
|
||||
emit_activity(logger, event=event, **kwargs)
|
||||
|
||||
async def connect(self):
|
||||
await connect_flow(self)
|
||||
|
||||
async def receive_messages(self):
|
||||
await receive_messages_flow(self)
|
||||
|
||||
async def handle_message(self, message):
|
||||
"""收到消息处理"""
|
||||
try:
|
||||
data = json.loads(message)
|
||||
await self.orchestrator.on_raw_message_received(platform="qianniu", raw_data=data)
|
||||
except Exception as e:
|
||||
logger.error(f"[WebSocket] 处理消息异常: {e}")
|
||||
|
||||
async def send(self, customer_id: str, acc_id: str, acc_type: str, content: str, msg_type: int = 0):
|
||||
"""
|
||||
【协议全复刻】严格按照 legacy/websocket_outbound_flow.py 的结构
|
||||
"""
|
||||
# 注意:在这里 from_id 竟然填的是 customer_id,这是逆向接口的特殊要求
|
||||
msg_payload = {
|
||||
"msg_id": "",
|
||||
"acc_id": acc_id,
|
||||
"msg": content,
|
||||
"from_id": customer_id,
|
||||
"from_name": "",
|
||||
"cy_id": customer_id,
|
||||
"acc_type": acc_type,
|
||||
"msg_type": msg_type,
|
||||
"cy_name": "",
|
||||
}
|
||||
await self.send_message(msg_payload)
|
||||
|
||||
async def send_message(self, message_dict: dict):
|
||||
"""底层的 WebSocket 发送"""
|
||||
await send_message_flow(self, message_dict)
|
||||
|
||||
def get_time(self):
|
||||
return datetime.now().strftime("%H:%M:%S")
|
||||
|
||||
async def run(self):
|
||||
await self.connect()
|
||||
await self.receive_messages()
|
||||
|
||||
if __name__ == "__main__":
|
||||
client = QingjianAPIClient()
|
||||
try:
|
||||
asyncio.run(client.run())
|
||||
except KeyboardInterrupt:
|
||||
logger.info("已停止")
|
||||
Reference in New Issue
Block a user