NAiOSOmni
omnichatv0.8.1Conecta WhatsApp y Telegram a NAiOS. Dashboard con KPIs y gráficas, inbox unificado, auto-reply IA con tools, agentes verticales, modo simulación demo y multi-tenant.
Descripción
OmniChat convierte cualquier canal de mensajería en una interfaz a NAiOS. Vincula WhatsApp Personal (Baileys, vía QR), WhatsApp Business Platform oficial (Meta Cloud API) o Telegram Bot. Incluye dashboard con KPIs auto-calculados + gráficas (línea, donut, heatmap), inbox unificado en tiempo real (SSE), auto-respuesta IA con tool-calling, 14 herramientas (generar/editar imágenes, transcribir audio, mandar email, consultar KB, crear presentaciones/landings/forms, guardar pedidos estructurados...), 5 modos de canal (cerrado, whitelist, blacklist, cliente, gateway de adquisición), modo SIMULACIÓN para demos donde el cliente elige qué agente probar, comandos por self-chat (/on, /off, /pause, /ai), self-link via /claim para que tus clientes registrados usen su propio contexto NAiOS, onboarding gateway con magic-link login, AGENTES VERTICALES: bots especializados (pedidos a domicilio, leads inmobiliarios, reservas restaurante, etc.) con prompt + variables de negocio + JSON schema de captura, generados por IA-wizard, con CRM integrado, auto-recovery del worker tras pérdida de sesión y reconexión sin re-vincular cuando las credenciales siguen válidas.
Funcionalidades (26)
Vincula tu número como dispositivo via QR o código. Soporta grupos. Worker process aislado.
Conexión oficial con Meta Cloud API. Cero riesgo de ban, plantillas, webhooks HMAC verificados.
Bot oficial vía Bot API. Token de @BotFather, sin riesgo, gratis. Soporta grupos y media.
Lista de conversaciones + thread + composer. SSE push, multimedia visual (imágenes, audios, vídeos).
Loop tool-calling: 12 herramientas listas (generar/editar imágenes, audios, KB, email, presentaciones...).
Typing indicator escalado por longitud, jitter aleatorio, cool-down post-respuesta manual del owner.
Cerrado, whitelist, blacklist, cliente, gateway. Configurable visualmente.
Convierte tu canal en funnel: cualquier desconocido invitado a crear cuenta gratis NAiOS con magic-link.
Users registrados pueden vincular su WhatsApp con /claim email + /code. Bot usa SU prompt y SUS tokens.
Override por peer: force-on/off, prompt custom, pausa, todo desde UI.
Editor visual por día con franjas horarias, modo OOO con mensaje custom.
Cuotas msg/min/hora/día, detección automática de bursts, protege contra bans.
/on /off /pause /status /test /prompt /ai /help desde tu propio self-chat.
6 plantillas: restaurante, soporte, inmobiliaria, salón, ventas B2B, asistente personal.
Endpoint con totales y stats por canal, errores, mensajes/día, sesiones activas.
Crea bots especializados (pedidos, leads, reservas) describiendo en lenguaje natural — la IA genera prompt, campos y email.
Los pedidos se guardan en BD con JSON Schema. Vista CRM con filtros, estados, edición, notas, export CSV.
Aviso por email + WhatsApp al teléfono vinculado cuando llega un pedido nuevo. Confirmación automática al cliente.
Cada nuevo registro dispara POST firmado con HMAC-SHA256 a tu URL externa (Zapier, Make, n8n, CRM). Retry exponencial + log de entregas.
4 columnas (nuevo / contactado / completado / archivado) con arrastrar y soltar entre estados. Toggle tabla/Kanban persistido.
Diagrama interactivo generado por IA a partir del prompt — visualiza turnos, decisiones, herramientas y campos capturados. Zoom/pan + export SVG.
Tab principal con KPIs, gráficas (Chart.js: línea/donut/barras + heatmap D3), actividad reciente unificada y health-check con acciones.
Home con KPIs auto-calculados (mensajes, pedidos, conversión, tokens) + line chart 30d entrantes/salientes + donut estados + heatmap hora×día + top canales/agentes + alertas de salud.
Pone un canal en modo demo: el cliente elige entre los agentes que tú habilites. 5 textos editables, comandos /exit /cambiar /menu /help, records marcados con flag is_simulation.
Tras pérdida de sesión WhatsApp Web (cierre server-side, límite de 4 dispositivos, reinicio del server) el worker se rearranca solo reusando el auth_blob guardado. Botón 'Reconectar' explícito si el auto falla.
Picker de contactos integrado: agenda sincronizada (wa-personal) o peers vistos. En Bandeja primero eliges canal y luego contacto, te lleva al thread vacío listo para escribir.
Changelog
- Seams para otros módulos (contrato con Campañas): listChannelsFor(userId) devuelve los canales del usuario (propios + compartidos con permiso reply) con kind/label/phone/connected; sendFor(userId, { channelId, to, text?, template?, meta? }) envía por un canal del usuario normalizando el destino al peer de cada driver (teléfono → JID en wa-personal, dígitos en wa-cloud, chat_id@telegram) y devuelve { ok, messageId, channelKind } o { ok:false, error: bad_args|no_channel|not_connected|forbidden|needs_template|transport }. Nunca lanzan.
- wa-cloud: el error 131047 (fuera de la ventana de 24 h) se reporta como needs_template; con template { name, language, params[] } se envía la plantilla de Meta.
- El envío manual del inbox y sendFor comparten el mismo camino interno (_dispatchOutgoing + _attributeOutgoing): registro en la conversación y atribución sent_by_user_id idénticos; sendFor añade además una entrada en el log del canal (categoría send) con el módulo de origen.
- Test nuevo tests/omnichat/test-send-seam.js (driver fingido).