Media e allegati
Il supporto per i media avanzati permette agli operatori di fornire assistenza completa:- Supporto immagini/video: rendering inline dei media ricevuti.
- Invio di documenti: condividi PDF, ricevute o manuali direttamente in chat.
- Messaggi vocali: ascolta le note vocali dei clienti direttamente nella posta in arrivo.
- Trascina e rilascia: carica facilmente gli allegati trascinandoli nel composer.
Ricerca e filtro avanzati
Trova esattamente ciò di cui hai bisogno in pochi secondi, anche tra migliaia di conversazioni.Ricerca globale
Cerca parole chiave in tutte le cronologie dei messaggi. Il motore indicizza sia i messaggi in entrata che quelli in uscita per un recupero rapido.Filtro delle conversazioni
Filtra la vista della posta in arrivo per:- Assegnatario: visualizza le chat gestite da membri specifici del team.
- Tag: approfondisci segmenti specifici (es. “Urgente”, “Lead”).
- Stato: alterna tra gli stati
Open,PendingeResolved. - Non letti / senza risposta: concentra l’elenco sui thread che richiedono ancora l’attenzione dell’operatore.
- Gruppi: mostra solo le conversazioni di gruppo WhatsApp basate su metadata, utile per i pilot interni del team e le operazioni per coorti turistiche.
- Ultima interazione: trova le conversazioni inattive da un determinato periodo di tempo.
Conversazioni di gruppo WhatsApp
Switchbord può contrassegnare le conversazioni come gruppi tramiteconversations.metadata e mostrarle nella posta in arrivo tramite una pillola Gruppi vicino ai filtri delle conversazioni. Questa prima release è una base di visibilità e filtraggio: la gestione completa del ciclo di vita dei gruppi, la gestione dei partecipanti, i controlli sui link di invito e i vincoli di invio specifici per i gruppi restano lavoro futuro.
Stato della connessione
Keepalive in tempo reale e banner di connessione
La posta in arrivo dipende da un WebSocket Supabase Realtime persistente per mostrare i messaggi in entrata in tempo reale. Le scheda del browser in background o in sospensione limitano i timer e il sistema operativo può interrompere quel socket senza che la scheda se ne accorga — il classico caso in cui “l’app appare bloccata finché non faccio un aggiornamento forzato”. Un hookuseRealtimeKeepalive mantiene ora la connessione affidabile:
- Al risveglio della scheda (
visibilitychange → visible,focusdella finestra o eventoonlinedel browser) riconnette il socket realtime e i canali se non sono in buono stato e sempre esegue un recupero dati delle conversazioni oltre al thread aperto — una scheda in sospensione ha di solito perso eventi anche se il socket stesso è sopravvissuto. - Un controllo heartbeat ogni 20 secondi, solo mentre la scheda è visibile, verifica che il socket riporti ancora la connessione attiva. In caso contrario, si ripristina automaticamente — la connessione non può rimanere silenziosamente inattiva a tempo indefinito.
- I risvegli multipli vengono raggruppati (debounce) in un unico ciclo di ripristino, poiché
visibilitychange,focuseonlinespesso si attivano insieme.
Il punto fondamentale di questa funzionalità è che la posta in arrivo non deve mai apparire attiva mentre è effettivamente disconnessa. Se vedi conversazioni non aggiornate senza banner, si tratta di un bug — segnalalo, invece di dare per scontato che un aggiornamento forzato abbia risolto silenziosamente qualcosa che era rotto.
Scheda delle conversazioni persistenti
Sopra il riquadro della chat, la posta in arrivo mantiene delle scheda in stile Chrome per le conversazioni che un operatore ha aperto — così passare tra un gruppo di thread attivi non richiede di tornare ogni volta alla barra laterale.- Le scheda sono limitate a 8 — aprire una nona conversazione chiude la scheda più vecchia.
- A partire dalle versioni v0.18.14/v0.18.22, le scheda persistono al ricaricamento (F5 manuale, un refresh di un componente server o un remount guidato dal realtime) tramite
localStorage, con namespace per area di lavoro (switchbord.inbox.tabs.<workspaceId>), così le scheda non si mescolano mai tra aree di lavoro diverse. Le operazioni di lettura/scrittura sono sicure per SSR e tollerano valori memorizzati corrotti o vuoti. - Una scheda la cui conversazione ha messaggi in entrata non letti riceve lo stesso evidenziatore verde smeraldo di una riga non letta nell’elenco delle conversazioni — riempimento, un accento sul lato superiore, un punto smeraldo e un titolo in grassetto. La scheda attiva non mostra mai i non letti (visualizzare una conversazione la azzera).
- Ogni scheda porta anche il badge di stato in tempo reale “Draft with me” del GB-Agent di quella conversazione (viola/pulsante durante la generazione, verde quando pronto, ambra durante il passaggio, rosso in caso di errore, nascosto quando inattivo) — consulta Connettore gb-agent → Draft with me per la semantica completa del badge di stato.
Integrazione CRM
La Posta in arrivo è strettamente integrata con il database dei contatti:- Barra laterale del contatto: visualizza profili dettagliati dei clienti, inclusi campi personalizzati e attività passate, senza uscire dalla conversazione.
- Gestione dei tag: aggiungi o rimuovi tag in tempo reale per aggiornare il segmento di un contatto.
- Risoluzione dell’avatar: recupera automaticamente gli avatar da profili pubblici o integrazioni CRM per aiutare gli operatori a riconoscere i contatti frequenti.
Strumenti di produttività
- Risposte rapide: modelli predefiniti per le domande comuni, per garantire risposte rapide e coerenti.
- Note interne: lascia commenti privati per altri membri del team all’interno di un thread di conversazione.
- Logica di assegnazione: instrada manualmente o automaticamente le conversazioni all’operatore o al team giusto.