123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- const express = require('express');
- const cors = require('cors');
- const bodyParser = require('body-parser');
- const app = express();
- const PORT = 8080;
- // 使用中间件
- app.use(cors()); // 允许跨域请求
- app.use(bodyParser.json()); // 解析JSON请求体
- // 会话存储
- const sessions = {};
- // 生成唯一会话ID
- function generateSessionId() {
- return 'session_' + Date.now() + '_' + Math.random().toString(36).substring(2, 15);
- }
- // 开始新会话
- app.post('/api/ai/travel/start', (req, res) => {
- const sessionId = generateSessionId();
- sessions[sessionId] = {
- id: sessionId,
- messages: [],
- createdAt: new Date()
- };
-
- console.log(`新会话已创建: ${sessionId}`);
-
- res.json({
- code: 200,
- sessionId: sessionId,
- msg: '欢迎使用AI旅行助手,请问有什么可以帮助您的?'
- });
- });
- // 聊天接口
- app.post('/api/ai/travel/chat', (req, res) => {
- const sessionId = req.headers.sessionid;
- const message = req.body.message;
- const logToConsole = req.body.logToConsole || req.headers['x-log-to-console'] === 'true';
-
- console.log(`收到消息请求: sessionId=${sessionId}, logToConsole=${logToConsole}`);
-
- // 检查会话是否存在
- if (!sessions[sessionId]) {
- console.log(`会话不存在: ${sessionId}`);
- return res.status(404).json({
- code: 404,
- msg: '会话不存在,请重新开始对话'
- });
- }
-
- // 记录消息
- sessions[sessionId].messages.push({
- role: 'user',
- content: message,
- timestamp: new Date()
- });
-
- // 在控制台输出消息
- if (logToConsole || message.includes('[LOG_TO_CONSOLE]') || message.includes('[CONSOLE_TEST]')) {
- console.log('\n======== 前端消息输出到控制台 ========');
- console.log(`会话ID: ${sessionId}`);
- console.log(`时间: ${new Date().toLocaleString()}`);
- console.log(`消息内容: ${message}`);
- console.log('======================================\n');
- }
-
- // 模拟AI回复
- const aiReply = `我已收到您的消息: "${message.replace(/\[LOG_TO_CONSOLE\]|\[CONSOLE_TEST\]/g, '')}"`;
-
- // 记录AI回复
- sessions[sessionId].messages.push({
- role: 'assistant',
- content: aiReply,
- timestamp: new Date()
- });
-
- // 返回成功响应
- res.json({
- code: 200,
- msg: '消息已发送',
- data: {
- reply: aiReply
- }
- });
- });
- // 获取状态接口
- app.get('/api/ai/travel/status', (req, res) => {
- const sessionId = req.headers.sessionid;
-
- // 检查会话是否存在
- if (!sessions[sessionId]) {
- return res.status(404).json({
- code: 404,
- msg: '会话不存在'
- });
- }
-
- // 获取最新的AI回复
- const messages = sessions[sessionId].messages;
- let lastAiMessage = null;
-
- for (let i = messages.length - 1; i >= 0; i--) {
- if (messages[i].role === 'assistant') {
- lastAiMessage = messages[i];
- break;
- }
- }
-
- res.json({
- code: 200,
- reply: lastAiMessage ? lastAiMessage.content : null,
- hasNewMessage: !!lastAiMessage
- });
- });
- // 结束会话
- app.post('/api/ai/travel/end', (req, res) => {
- const sessionId = req.headers.sessionid;
-
- // 检查会话是否存在
- if (sessions[sessionId]) {
- console.log(`结束会话: ${sessionId}`);
- delete sessions[sessionId];
- }
-
- res.json({
- code: 200,
- msg: '会话已结束'
- });
- });
- // 启动服务器
- app.listen(PORT, () => {
- console.log(`服务器已启动,监听端口: ${PORT}`);
- console.log(`API基础URL: http://localhost:${PORT}`);
- });
|