// bot-jitsi.js import puppeteer from "puppeteer"; import fs from "fs"; import dotenv from "dotenv"; import OpenAI from "openai"; dotenv.config(); // 🔑 Inicializa a API da OpenAI const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); const roomName = process.env.ROOM_NAME || process.argv[2]; const jitsiUrl = `https://meet.jit.si/${roomName}`; async function main() { console.log("🚀 Iniciando bot do MedConnect para Jitsi..."); console.log("🔗 Sala:", jitsiUrl); const userDataPath = "C:/Users/SEU_USUARIO/AppData/Local/Google/Chrome/User Data"; // 🔸 Mude SEU_USUARIO const browser = await puppeteer.launch({ headless: false, userDataDir: userDataPath, args: [ "--use-fake-ui-for-media-stream", "--no-sandbox", "--disable-setuid-sandbox", "--allow-file-access", ], }); const page = await browser.newPage(); await page.goto(jitsiUrl); await page.waitForSelector(".new-toolbox", { timeout: 60000 }); console.log("✅ Conectado à sala Jitsi com sucesso!"); await page.keyboard.press("m"); await page.keyboard.press("v"); console.log("🎥 Câmera e microfone desativados."); const audioPath = `./recording-${Date.now()}.webm`; if (fs.existsSync(audioPath)) { console.log("🔊 Processando áudio gravado..."); const transcription = await openai.audio.transcriptions.create({ file: fs.createReadStream(audioPath), model: "whisper-1", language: "pt", }); console.log("📝 Transcrição:", transcription.text); const summary = await openai.chat.completions.create({ model: "gpt-4o-mini", messages: [ { role: "system", content: "Você é um assistente médico que resume reuniões clínicas." }, { role: "user", content: `Resuma em formato de relatório: ${transcription.text}` }, ], }); const relatorio = summary.choices[0].message.content; fs.writeFileSync("./relatorio.txt", relatorio); console.log("📄 Relatório gerado com sucesso em relatorio.txt!"); } else { console.log("⚠️ Nenhum áudio gravado"); } console.log("🤖 Bot ativo na reunião. Você pode ver a aba aberta no navegador."); } main().catch((err) => { console.error("❌ Erro ao executar o bot:", err); });