service-teams-browser-bot/src/index.ts
ValueOn AG 043349f529 Initial commit: Browser-based Teams Meeting Bot
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 22:44:57 +01:00

74 lines
2 KiB
TypeScript

import { SessionManager } from './sessionManager';
import { HttpServer } from './server/httpServer';
import { logger } from './utils/logger';
import { config } from './config';
let sessionManager: SessionManager;
let httpServer: HttpServer;
async function main(): Promise<void> {
logger.info('Starting Teams Browser Bot Service...');
logger.info(`Environment: ${config.nodeEnv}`);
logger.info(`Port: ${config.port}`);
logger.info(`Gateway URL: ${config.gatewayWsUrl}`);
logger.info(`Headless: ${config.botHeadless}`);
// Initialize session manager
sessionManager = new SessionManager();
await sessionManager.initialize();
// Start HTTP server
httpServer = new HttpServer({
onJoinRequest: async (sessionId, meetingUrl, botName) => {
await sessionManager.createSession(sessionId, meetingUrl, botName);
},
onLeaveRequest: async (sessionId) => {
await sessionManager.endSession(sessionId);
},
onStatusRequest: (sessionId) => {
return sessionManager.getSessionStatus(sessionId);
},
});
await httpServer.start();
logger.info('Teams Browser Bot Service started successfully');
}
// Graceful shutdown
async function shutdown(signal: string): Promise<void> {
logger.info(`Received ${signal}, shutting down...`);
try {
if (httpServer) {
await httpServer.stop();
}
if (sessionManager) {
await sessionManager.shutdown();
}
logger.info('Shutdown complete');
process.exit(0);
} catch (error) {
logger.error('Error during shutdown:', error);
process.exit(1);
}
}
process.on('SIGTERM', () => shutdown('SIGTERM'));
process.on('SIGINT', () => shutdown('SIGINT'));
// Handle uncaught errors
process.on('uncaughtException', (error) => {
logger.error('Uncaught exception:', error);
shutdown('uncaughtException');
});
process.on('unhandledRejection', (reason, promise) => {
logger.error('Unhandled rejection at:', promise, 'reason:', reason);
});
// Start the service
main().catch((error) => {
logger.error('Failed to start service:', error);
process.exit(1);
});