Diagnostic guide for WhatsApp system issues
Guida diagnostica completa per problemi con il sistema WhatsApp del CRM.
1. Il numero e' spam?
SELECT * FROM whatsapp_spam WHERE mobile_number = '{PHONE}';
-- Provare anche variazioni formato
SELECT * FROM whatsapp_spam
WHERE mobile_number IN ('+393456789012', '393456789012', '3456789012');
Se presente: il messaggio e' stato bloccato e il counter incrementato.
2. Il webhook e' arrivato?
crm-agent-service su Railway/whatsapp-webhook nei logSELECT id, from_name, contact_number, chat_name, body_text, date, created_at
FROM command_center_inbox
WHERE type = 'whatsapp'
AND contact_number = '{PHONE}'
ORDER BY created_at DESC LIMIT 10;
Se presente: il messaggio c'e' ma non e' stato processato (l'utente non ha cliccato "Done").
4. E' gia' in production?
SELECT i.interaction_id, i.interaction_date, i.summary, ch.chat_name
FROM interactions i
LEFT JOIN chats ch ON i.chat_id = ch.id
WHERE i.interaction_type = 'whatsapp'
AND i.external_interaction_id = '{MESSAGE_UID}';
5. TimelinesAI e' connesso?
1. Stato connessione Baileys
curl -s https://command-center-backend-production.up.railway.app/whatsapp/status
Risposte e azioni:
| Status | Significato | Azione |
|---|---|---|
connected | Tutto OK | Il problema e' altrove |
disconnected | Sessione persa | Serve re-scan QR |
connecting | Si sta riconnettendo | Attendere 30s e riprovare |
qr_ready | QR pronto per scan | Scansionare QR |
2. Se disconnected o qr_ready:
https://command-center-backend-production.up.railway.app/whatsapp/qr-image3. Se errore "Stream Errored (conflict)":
curl -X POST https://command-center-backend-production.up.railway.app/whatsapp/logout
4. Formato numero errato:
+ ne' lo zero iniziale393456789012+393456789012, 03456789012Il flusso di salvataggio dei messaggi inviati via Baileys dipende dal multi-device sync:
Baileys invia → WhatsApp sync → TimelinesAI riceve → webhook → command_center_inbox
1. TimelinesAI e' attivo?
2. Baileys E TimelinesAI sono entrambi connessi?
3. Multi-device sync funziona?
-- Duplicati in production
SELECT external_interaction_id, COUNT(*) as count
FROM interactions
WHERE interaction_type = 'whatsapp'
AND external_interaction_id IS NOT NULL
GROUP BY external_interaction_id
HAVING COUNT(*) > 1;
-- 1. Il contatto ha questo numero?
SELECT * FROM contact_mobiles WHERE mobile = '{PHONE}';
-- 2. Esiste il collegamento chat?
SELECT * FROM contact_chats cc
JOIN chats ch ON cc.chat_id = ch.id
WHERE cc.contact_id = '{CONTACT_UUID}';
-- Quanti partecipanti registrati?
SELECT COUNT(*) FROM contact_chats WHERE chat_id = '{CHAT_UUID}';
-- Chi c'e'?
SELECT c.first_name, c.last_name, cm.mobile
FROM contact_chats cc
JOIN contacts c ON cc.contact_id = c.contact_id
LEFT JOIN contact_mobiles cm ON c.contact_id = cm.contact_id
WHERE cc.chat_id = '{CHAT_UUID}';
STATO 1: SOLO IN WHATSAPP
- Non ancora ricevuto da TimelinesAI
- Nessun record nel CRM
|
(webhook TimelinesAI)
v
STATO 2: STAGING (command_center_inbox)
- Ricevuto via webhook
- Visibile nel tab WhatsApp del CRM
- In attesa di processing utente
|
(user "Done")
v
STATO 3: PRODUCTION (chats + interactions)
- Processato e archiviato
- Collegato a contatti via contact_chats
- Record interaction creato
- Rimosso da command_center_inbox
-- E' in staging?
SELECT EXISTS(
SELECT 1 FROM command_center_inbox
WHERE type = 'whatsapp' AND message_uid = '{MESSAGE_UID}'
) as in_staging;
-- E' in production?
SELECT EXISTS(
SELECT 1 FROM interactions
WHERE interaction_type = 'whatsapp' AND external_interaction_id = '{MESSAGE_UID}'
) as in_production;
| Stato | Dove | Indicatori |
|---|---|---|
| Non ricevuto | Solo WhatsApp | Nessun record CRM |
| In staging | command_center_inbox | type = 'whatsapp' |
| Processato | chats + interactions | Ha interaction_id, collegato a chat |
| Archiviato | interactions, rimosso da inbox | Ha record interaction |
| Spam | whatsapp_spam | Numero nella tabella spam |
| Servizio | Platform | Ruolo |
|---|---|---|
command-center-backend | Railway (Node.js) | Invio via Baileys |
crm-agent-service | Railway (Python/FastAPI) | Ricezione webhook TimelinesAI |
| TimelinesAI | SaaS | Ricezione messaggi WhatsApp |
| Baileys | Libreria Node.js | Invio messaggi WhatsApp (gratis) |
command-center-backend (Railway)crm-agent-service (Railway)crm-agent-service/app/main.py/home/user/crm-frontend/docs/WHATSAPP_SENDING.mdskills/whatsapp.mdhttps://command-center-backend-production.up.railway.apphttps://command-center-backend-production.up.railway.app/whatsapp/qr-image