⏳ Controllo sistema...
Uptime: -- Sessioni: -- Ultimo check: --

Dispositivi Attivi

Gestisci le tue sessioni WhatsApp

Caricamento dispositivi...

Coda Messaggi

Monitoraggio invio messaggi in tempo reale

Caricamento code...
⏳ Controllo sistema...
Uptime: -- Sessioni: -- Ultimo check: --

📊 Monitor Risorse & Memoria RAM

Tracciamento in tempo reale per dispositivo e risorse di sistema (ultimi 30 giorni)

🛡️
Filtri di Rete Attivi a Monte (Media, Video, Audio e Storie Disattivati)
Le risorse multimediali pesanti vengono bloccate prima del download per proteggere la RAM del server.
🟢 Sistema Ottimizzato
✉️ Messaggi Inviati 0
Totale Inviati nel Periodo
📥 Messaggi Ricevuti 0
Totale Ricevuti nel Periodo
⚡ Dispositivo Più Attivo --
Maggiore Volume Messaggi
🛡️ Riavvii Totali & Autoguarigione 0 Eventi
Purge RAM & Recovery Evitati

📱 Occupazione RAM per Dispositivo nel Tempo

🔍 Filtra Dispositivi:

💬 Traffico Messaggi nel tempo per Dispositivo (Inviati vs Ricevuti)

🖥️ Risorse Complessive di Sistema (RAM Usata, SWAP, CPU %)

📊 Sintesi Aggregata Dispositivi e Attività

Dispositivo Colore RAM Fisica (MB) Messaggi Inviati Messaggi Ricevuti Riavvii Totali Stato / Attività
Caricamento dispositivi...

📋 Registro Riavvii & Autoguarigione Recenti

Legenda Cause: 🛡️ Contenimento RAM (>2.0 GB) ⚠️ Crash Nativo Chrome ⏱️ Timeout Risposta 💤 Inattivo (>60m) 🔌 Disconnessione Socket
Orario Dispositivo Tipo Riavvio Causa Radice (Motivo) RAM Prima ➔ Dopo Durata
Nessun riavvio registrato nelle ultime 24 ore.

Documentazione Sviluppatore

Benvenuto nell'API della Piattaforma WhatsApp. Usa questi endpoint per integrare l'invio di messaggi nelle tue applicazioni.

1. Sicurezza e Autenticazione

Tutte le chiamate API sono protette e richiedono un'autenticazione tramite API Key.

Ottenere la Chiave (Login)

Effettua una richiesta POST per ottenere il tuo token di accesso:

POST /auth/login
{
  "username": "admin",
  "password": "password123"
}

// Risposta:
{ "token": "a1b2c3d4..." }

Usare la Chiave

Includi la chiave nell'header x-api-key di ogni richiesta successiva:

x-api-key: a1b2c3d4...

2. Monitoraggio Sistema 🔍

Nuovi endpoint per monitorare lo stato del server e delle sessioni.

Health Check (Pubblico)

Controlla se il server è attivo. Non richiede autenticazione:

GET /health

// Risposta:
{
  "status": "ok",
  "pid": 12345,
  "uptime": 3600.5
}

Informazioni Sistema

Ottieni versione della libreria e numero di sessioni attive:

GET /system/info

// Risposta:
{
  "pid": 12345,
  "installed": "1.34.4",
  "latest": "1.34.4",
  "updateAvailable": false,
  "sessions": 2
}

3. Gestione Sessioni

Le sessioni di WhatsApp sono gestite tramite clientId (una stringa univoca definita da te).

Stati della Sessione

Una sessione può trovarsi in uno dei seguenti stati:

Stato Descrizione
INITIALIZING Sessione in fase di avvio
QR_READY QR code pronto per la scansione
AUTHENTICATED QR scansionato, sincronizzazione in corso
READY ✅ Pronto per inviare/ricevere messaggi
DISCONNECTED Disconnesso, riconnessione automatica in corso
RECONNECTING Tentativo di riconnessione
AUTH_FAILURE ❌ Autenticazione fallita

4. Endpoint API

Crea Sessione

POST /sessions
{ "clientId": "il-tuo-id" }

Lista Sessioni

GET /sessions

// Risposta:
[
  { "id": "session-1", "status": "READY", "lastError": null },
  { "id": "session-2", "status": "QR_READY", "lastError": null }
]

Ottieni Stato

GET /sessions/:clientId/status

// Risposta:
{ "status": "READY", "lastError": null }

Ottieni QR Code

GET /sessions/:clientId/qr

// Risposta (se disponibile):
{ "qr": "data:image/png;base64,...", "raw": "..." }

Elimina Sessione

DELETE /sessions/:clientId

Invia Messaggio (con Coda)

I messaggi vengono accodati e inviati con ritardi casuali per simulare un comportamento umano.

🔒 Comportamento Coda:

Esempio: Un messaggio di 50 caratteri richiederà ~15-25 secondi

POST /sessions/:clientId/message
{
  "number": "39333123456",
  "message": "Ciao Mondo"
}

// Risposta:
{
  "queued": true,
  "position": 5,
  "estimatedDelay": "15-55 seconds"
}

Per inviare immediatamente (senza coda), aggiungi "immediate": true:

{
  "number": "39333123456",
  "message": "Urgente!",
  "immediate": true
}

Stato Coda

GET /sessions/:clientId/queue

// Risposta:
{
  "pending": 5,
  "processing": true,
  "queueSize": 6
}

Ricevi Messaggi (Webhook) ⚡

Per ricevere i messaggi in tempo reale, configura la variabile d'ambiente WEBHOOK_URL nel file .env.

Il sistema invierà una richiesta POST automatica a quell'URL per ogni nuovo messaggio.

Esempio di Payload JSON inviato:

{
  "sessionId": "session-1",
  "from": "39333123456@c.us",
  "to": "39333987654@c.us",
  "body": "Ciao!",
  "context": "Privato",
  "timestamp": 1704283400,
  "hasMedia": false,
  "type": "chat"
}

Nota: Non sono presenti firme di sicurezza o criptografia nell'header. Assicurati che l'URL del tuo Webhook sia segreto o gestisca la convalida internamente.

Polling (Alternativa Lenta)

Se non puoi usare i Webhook, puoi interrogare periodicamente questo endpoint:

GET /sessions/:clientId/messages

5. Filtri Messaggi ⚙️

Puoi filtrare quali tipi di messaggi vengono salvati nei log e inviati al webhook. I tipi disponibili sono:

Tipo Descrizione
Privato Messaggi uno-a-uno diretti
Gruppo Messaggi nei gruppi
Canale Aggiornamenti dai Canali/Newsletter
Stato Storie/Status dei contatti
Broadcast Liste broadcast
Media Foto, video, audio (se deselezionato, i media vengono bloccati all'origine a livello browser risparmiando il 70% di RAM)

Ottieni Filtri

GET /sessions/:clientId/filters

// Risposta:
{ "filters": ["Privato", "Gruppo"] }

Imposta Filtri

PUT /sessions/:clientId/filters
{
  "filters": ["Privato"]  // Solo messaggi privati
}

// Risposta:
{ "success": true, "filters": ["Privato"] }

Nota: Se l'array è vuoto [], tutti i messaggi passano (nessun filtro attivo).

6. Configurazione .env

Variabili d'ambiente disponibili:

# Porta del server (default: 3000)
PORT=3000

# Credenziali admin
ADMIN_USERNAME=admin
ADMIN_PASSWORD=password123

# API Key fissa (opzionale, altrimenti generata automaticamente)
WA_API_KEY=your_secret_key

# URL per ricevere messaggi in tempo reale
WEBHOOK_URL=https://tuo-server.com/webhook

7. Troubleshooting

Il server non parte

Se vedi l'errore "Another instance is already running", elimina il file .server.pid:

rm .server.pid

Le sessioni non si ripristinano

Controlla che non ci siano processi Chrome orfani:

pkill -9 -f ".wwebjs_auth"

Verificare lo stato del sistema

curl http://localhost:3000/health