82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
// 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);
|
|
});
|