diff --git a/src/app.ts b/src/app.ts index 0510e7f..dd46728 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,3 +1,5 @@ +// import path from "path"; + import compression from "compression"; import cookieParser from "cookie-parser"; import cors from "cors"; @@ -142,6 +144,11 @@ class App { */ app.use(cors(appConfig.cors)); + /** + * serve static files from project root (for test files) + */ + app.use(express.static(process.cwd())); + /** * config passport */ diff --git a/src/modules/chatbot/providers/llm.service.ts b/src/modules/chatbot/providers/llm.service.ts index f067aa9..07a95bf 100644 --- a/src/modules/chatbot/providers/llm.service.ts +++ b/src/modules/chatbot/providers/llm.service.ts @@ -16,7 +16,7 @@ export class LLMService { constructor(@inject(IOCTYPES.ChatbotDataContextService) private dataContextService: DataContextService) { this.logger = new Logger("LLMService"); this.config = { - model: process.env.OPENAI_BASE_URL || CHATBOT_CONSTANTS.DEFAULT_MODEL, + model: process.env.OPENAI_MODEL || CHATBOT_CONSTANTS.DEFAULT_MODEL, temperature: Number(process.env.OPENAI_TEMPERATURE || CHATBOT_CONSTANTS.DEFAULT_TEMPERATURE), maxTokens: Number(process.env.OPENAI_MAX_TOKENS || CHATBOT_CONSTANTS.DEFAULT_MAX_TOKENS), topP: Number(process.env.OPENAI_TOP_P || "0.95"), @@ -66,8 +66,7 @@ export class LLMService { }); const botMessage = - completion.choices[0]?.message?.content || - "متأسفم، نمی‌توانم پاسخی تولید کنم. لطفاً سوال خود را دوباره مطرح کنید. 🤖"; + completion.choices[0]?.message?.content || "متأسفم، نمی‌توانم پاسخی تولید کنم. لطفاً سوال خود را دوباره مطرح کنید. 🤖"; // Calculate token usage from OpenAI response const tokensUsed = (completion.usage?.total_tokens || 0) + this.estimateTokens(systemInstruction); diff --git a/test-chatbot-socket.html b/test-chatbot-socket.html new file mode 100644 index 0000000..8ad4fd1 --- /dev/null +++ b/test-chatbot-socket.html @@ -0,0 +1,293 @@ + + + + + + Chatbot Socket.IO Test + + + + +
+

Chatbot Socket.IO Test Client

+ +
+
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+ +
+ +
+
+ + + +
+ +
+

Event Log:

+
+
+
+ + + + + diff --git a/test-chatbot-socket.js b/test-chatbot-socket.js new file mode 100644 index 0000000..e7e3f5c --- /dev/null +++ b/test-chatbot-socket.js @@ -0,0 +1,99 @@ +// Test script for ChatbotGateway Socket.IO connection +// Run with: node test-chatbot-socket.js + +const io = require("socket.io-client"); + +// Connect to the chatbot gateway +// The path option matches the path configured in ChatbotGateway +const socket = io("http://localhost:4000", { + path: "/ws-chatbot", + transports: ["websocket"], + // Optional: Add token for authenticated connection + // query: { + // token: "your-jwt-token-here" + // } +}); + +socket.on("connect", () => { + console.log("✅ Connected to ChatbotGateway!"); + console.log("Socket ID:", socket.id); + + // Test: Create a session + console.log("\n📤 Creating session..."); + socket.emit("create_session"); +}); + +socket.on("authenticated", (data) => { + console.log("✅ Authenticated:", data); +}); + +socket.on("unauthorized", (data) => { + console.log("❌ Unauthorized:", data); +}); + +socket.on("session_created", (data) => { + console.log("✅ Session created:", JSON.stringify(data, null, 2)); + + // Test: Join the session + if (data.data && data.data.id) { + console.log("\n📤 Joining session:", data.data.id); + socket.emit("join_chat", data.data.id); + } +}); + +socket.on("chat_joined", (data) => { + console.log("✅ Joined chat:", JSON.stringify(data, null, 2)); + + // Test: Send a message + if (data.data && data.data.id) { + console.log("\n📤 Sending test message..."); + socket.emit("send_message", { + sessionId: data.data.id, + content: "Hello, chatbot!", + }); + } +}); + +socket.on("message_received", (data) => { + console.log("📨 Message received:", JSON.stringify(data, null, 2)); +}); + +socket.on("bot_response_start", (data) => { + console.log("🤖 Bot response started:", JSON.stringify(data, null, 2)); +}); + +socket.on("bot_response_chunk", (data) => { + process.stdout.write(data.data?.chunk || ""); +}); + +socket.on("bot_response_end", (data) => { + console.log("\n✅ Bot response completed:", JSON.stringify(data, null, 2)); +}); + +socket.on("bot_response", (data) => { + console.log("🤖 Bot response:", JSON.stringify(data, null, 2)); +}); + +socket.on("error", (data) => { + console.log("❌ Error:", JSON.stringify(data, null, 2)); +}); + +socket.on("session_error", (data) => { + console.log("❌ Session error:", JSON.stringify(data, null, 2)); +}); + +socket.on("message_error", (data) => { + console.log("❌ Message error:", JSON.stringify(data, null, 2)); +}); + +socket.on("disconnect", (reason) => { + console.log("❌ Disconnected:", reason); +}); + +socket.on("connect_error", (error) => { + console.log("❌ Connection error:", error.message); +}); + +// Keep the script running +process.stdin.resume(); +