// 完整流程调试脚本 const WebSocket = require('ws'); const WS_URL = 'ws://localhost:3003'; const TEST_MANAGER_ID = '22'; let managerWs = null; let userWs = null; let newConversationId = null; let testUserId = 'test_customer_' + Date.now(); console.log('=== 启动完整流程调试 ==='); console.log(`测试用户ID: ${testUserId}`); // 步骤1: 连接客服并认证 function connectManager() { return new Promise((resolve) => { managerWs = new WebSocket(WS_URL); managerWs.on('open', () => { console.log('✅ 客服WebSocket连接已建立'); // 发送认证消息 const authMsg = JSON.stringify({ type: 'auth', managerId: TEST_MANAGER_ID, userType: 'manager' }); console.log('📤 客服发送认证消息:', authMsg); managerWs.send(authMsg); }); managerWs.on('message', (data) => { try { const message = JSON.parse(data.toString()); console.log('📥 客服收到消息:', JSON.stringify(message)); if (message.type === 'auth_success') { console.log('✅ 客服认证成功'); resolve(); } } catch (e) { console.error('❌ 客服解析消息失败:', e); } }); }); } // 步骤2: 连接用户并认证 function connectUser() { return new Promise((resolve) => { userWs = new WebSocket(WS_URL); userWs.on('open', () => { console.log('✅ 客户WebSocket连接已建立'); // 发送认证消息 const authMsg = JSON.stringify({ type: 'auth', userId: testUserId, userType: 'user' }); console.log('📤 客户发送认证消息:', authMsg); userWs.send(authMsg); }); userWs.on('message', (data) => { try { const message = JSON.parse(data.toString()); console.log('📥 客户收到消息:', JSON.stringify(message)); if (message.type === 'auth_success') { console.log('✅ 客户认证成功'); resolve(); } } catch (e) { console.error('❌ 客户解析消息失败:', e); } }); }); } // 步骤3: 用户发送消息创建新会话 function userSendMessage() { return new Promise((resolve) => { const messageId = 'test_user_' + Date.now(); const userMessage = { type: 'chat_message', payload: { messageId: messageId, managerId: TEST_MANAGER_ID, content: '你好,我是测试客户,我想咨询一个问题', contentType: 1 } }; console.log('\n📤 客户发送消息:', JSON.stringify(userMessage)); userWs.send(JSON.stringify(userMessage)); // 监听消息发送成功确认 const userMessageHandler = (data) => { try { const message = JSON.parse(data.toString()); if (message.type === 'message_sent') { console.log('✅ 客户消息发送成功确认'); newConversationId = message.payload.conversationId; console.log('📝 新创建的会话ID:', newConversationId); userWs.removeListener('message', userMessageHandler); resolve(); } } catch (e) { console.error('❌ 解析用户消息响应失败:', e); } }; userWs.addListener('message', userMessageHandler); }); } // 步骤4: 客服使用新会话ID回复消息 function managerReplyMessage() { return new Promise((resolve) => { if (!newConversationId) { console.error('❌ 没有获取到会话ID'); resolve(false); return; } const messageId = 'test_manager_' + Date.now(); const replyMessage = { type: 'chat_message', payload: { messageId: messageId, conversationId: newConversationId, content: '您好,我是客服,请问有什么可以帮助您的?', contentType: 1 } }; console.log('\n📤 客服发送回复消息:', JSON.stringify(replyMessage)); managerWs.send(JSON.stringify(replyMessage)); // 监听回复消息的结果 const managerMessageHandler = (data) => { try { const message = JSON.parse(data.toString()); console.log('📥 客服收到回复结果:', JSON.stringify(message)); if (message.type === 'error') { console.error('❌ 客服回复失败:', message.message); managerWs.removeListener('message', managerMessageHandler); resolve(false); } else if (message.type === 'message_sent') { console.log('✅ 客服回复发送成功!'); managerWs.removeListener('message', managerMessageHandler); resolve(true); } } catch (e) { console.error('❌ 解析客服消息响应失败:', e); } }; managerWs.addListener('message', managerMessageHandler); }); } // 主函数 async function main() { try { // 连接客服 await connectManager(); await new Promise(resolve => setTimeout(resolve, 1000)); // 连接用户 await connectUser(); await new Promise(resolve => setTimeout(resolve, 1000)); // 用户发送消息创建会话 await userSendMessage(); await new Promise(resolve => setTimeout(resolve, 2000)); // 客服回复消息 const success = await managerReplyMessage(); if (!success) { console.log('\n🔄 尝试替代格式...'); // 尝试不使用payload包装 const messageId = 'test_manager_alt_' + Date.now(); const alternativeMessage = { type: 'chat_message', messageId: messageId, conversationId: newConversationId, content: '测试替代格式:不使用payload包装', contentType: 1 }; console.log('📤 客服发送替代格式消息:', JSON.stringify(alternativeMessage)); managerWs.send(JSON.stringify(alternativeMessage)); } // 等待5秒后关闭连接 setTimeout(() => { console.log('\n=== 调试结束 ==='); if (managerWs) managerWs.close(); if (userWs) userWs.close(); }, 5000); } catch (error) { console.error('❌ 调试过程中出错:', error); if (managerWs) managerWs.close(); if (userWs) userWs.close(); } } // 启动调试 main();