/** * Chatear con el bot de WhatsApp desde la consola, sin Meta. * * Habla directo con `procesarMensaje`, que es lo mismo que invoca el webhook, así * que ejercita la conversación completa contra la base a la que apunte DATABASE_URL * (turnos incluidos: lo que reserves acá queda guardado). * * DATABASE_URL=... npx tsx scripts/chat-bot.ts [telefono] * * Acepta entrada interactiva o por tubería (una línea por mensaje). * Comandos propios: /salir, /reset (borra la conversación de ese teléfono). */ import { createInterface } from "readline"; import { prisma } from "../src/lib/prisma"; import { procesarMensaje } from "../src/lib/whatsapp-bot"; const telefono = process.argv[2] ?? "5493510000000"; function mostrar(resp: { tipo: string; texto: string; botones?: { titulo: string }[] }[]) { for (const r of resp) { console.log("\n🤖 " + r.texto.replace(/\n/g, "\n ")); if (r.tipo === "botones" && r.botones) console.log(" [ " + r.botones.map((b) => b.titulo).join(" ] [ ") + " ]"); } } async function main() { console.log(`Chateando como ${telefono}. /salir para terminar, /reset para empezar de cero.`); const rl = createInterface({ input: process.stdin, terminal: false }); for await (const linea of rl) { const texto = linea.trim(); if (texto === "/salir") break; if (texto === "/reset") { await prisma.conversacionWhatsapp.deleteMany({ where: { telefono } }); console.log("\n(conversación borrada)"); continue; } console.log(`\n👤 ${texto}`); mostrar(await procesarMensaje(telefono, texto)); } await prisma.$disconnect(); } main().catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); });