Risoluzione dei problemi
Checklist diagnostica per BluBot — widget assente, CORS, CSP, domini, z-index, cache CDN, ad blocker, proxy e versioni.
Questa pagina raccoglie i problemi ricorrenti nell'installazione di BluBot, con sintomo, causa e rimedio. Prima di aprire un ticket esegui la checklist di verifica rapida.
Verifica rapida
Lo script è stato caricato?
Apri la console del browser e digita window.BluBot. Se restituisce undefined
lo script non è arrivato: passa alla scheda Rete.
La richiesta di configurazione va a buon fine?
Nella scheda Rete filtra per blupantheon. La chiamata a
api.blupantheon.com/blubot/v1/config deve rispondere 200.
Ci sono errori in console?
Cerca i messaggi che iniziano con BluBot:. Il codice riportato identifica
il problema in modo univoco.
Il progetto è pubblicato?
Un progetto in bozza risponde solo con la chiave di development.
Il dominio è autorizzato?
Confronta l'origine esatta della pagina con l'elenco dei domini autorizzati,
inclusi protocollo e presenza di www.
Tabella di riferimento
| Sintomo | Causa probabile | Rimedio |
|---|---|---|
| Nessun launcher, nessun errore | Script non incluso o rimosso da un plugin di ottimizzazione | Verifica il sorgente della pagina; escludi il file dalle regole di minificazione |
window.BluBot non definito | Script bloccato da CSP o da un'estensione | Aggiungi le direttive CSP; prova in finestra anonima |
403 origin_not_allowed | Dominio non in allowlist | Aggiungi l'origine esatta in Domini autorizzati |
401 invalid_project_key | Chiave errata o di un altro ambiente | Copia la chiave dalla scheda Chiavi dell'ambiente corretto |
410 project_archived | Progetto archiviato o sospeso | Riattiva il progetto o verifica l'abbonamento |
| Errore CORS in console | Richiesta verso un dominio errato o proxy che riscrive gli header | Verifica l'URL dello script; escludi il traffico dal proxy |
| Launcher presente ma coperto | Conflitto di z-index o overflow: hidden sul contenitore | Aumenta --bp-z-index; monta il widget su body |
| Widget su una versione vecchia | Cache della CDN o del browser | Svuota la cache; verifica BluBot.version |
| Chat aperta ma nessuna risposta | WebSocket bloccato dal proxy aziendale | Autorizza wss://api.blupantheon.com; verifica il ripiego su polling |
| Widget assente solo per alcuni utenti | Ad blocker o estensione per la privacy | Rinomina il percorso; comunica un canale alternativo |
| Doppio widget in pagina | Snippet inserito due volte | Rimuovi la duplicazione tra tema e gestore di tag |
| Widget invisibile su mobile | hideOnMobile attivo o contenitore senza altezza | Disattiva l'opzione; imposta un'altezza al contenitore |
| Utente sbagliato nella Console | setUser con identificativo instabile | Usa un identificativo persistente; invoca reset() al logout |
Diagnosi per sintomo
Sintomo. Nessun launcher in basso a destra, nessun messaggio di errore evidente.
Cause possibili.
- Lo script non è presente nel documento finale.
- Un plugin di ottimizzazione lo ha rimandato, unito o rimosso.
- La pagina lo include ma il
bodyviene sostituito da un framework dopo il caricamento. - Il progetto è archiviato.
Verifica.
document.querySelectorAll('script[src*="blubot"]').length;
window.BluBot?.version;Il primo comando deve restituire 1. Se restituisce 0 lo script non c'è;
se restituisce 2 o più hai una doppia installazione.
Rimedio.
- Controlla il sorgente della pagina servita, non il template.
- Escludi
bpblubot.umd.jsda combinazione, minificazione e caricamento ritardato del tuo plugin di ottimizzazione. - Su applicazioni a singola pagina, monta il widget con la strategia descritta in Installazione.
Sintomo. In console compare un messaggio del tipo "Access to fetch at api.blupantheon.com has been blocked by CORS policy".
Causa. L'API risponde con gli header CORS corretti solo per le origini autorizzate del progetto. Un errore CORS indica quasi sempre un dominio non in allowlist, oppure un proxy intermedio che riscrive o rimuove gli header.
Rimedio.
Rileva l'origine esatta
window.location.origin;Confronta con l'allowlist
Il confronto è letterale: https://acme.it e https://www.acme.it sono origini diverse.
Verifica il proxy
Se il traffico passa da un reverse proxy o da un WAF, assicurati che non rimuova
gli header Access-Control-Allow-Origin e Access-Control-Allow-Headers.
Non aggiungere proxy inversi
Non far transitare le chiamate dell'API tramite il tuo dominio: il widget rileverebbe un'origine incoerente e il WebSocket non si stabilirebbe.
Sintomo. In console: "Refused to load the script ... because it violates the following Content Security Policy directive".
Causa. La CSP del sito non elenca i domini di Blu Pantheon.
Rimedio. Aggiungi le direttive seguenti alla tua policy.
script-src 'self' https://static.blupantheon.com;
connect-src 'self' https://api.blupantheon.com wss://api.blupantheon.com;
img-src 'self' data: https://static.blupantheon.com https://assets.blupantheon.com;
media-src 'self' https://static.blupantheon.com;
font-src 'self' data:;
style-src 'self' 'unsafe-inline';
frame-src 'none';Esempio di header completo:
Content-Security-Policy: default-src 'self'; script-src 'self' https://static.blupantheon.com; connect-src 'self' https://api.blupantheon.com wss://api.blupantheon.com; img-src 'self' data: https://static.blupantheon.com https://assets.blupantheon.com; style-src 'self' 'unsafe-inline'; font-src 'self' data:; frame-src 'none'Perché serve unsafe-inline per gli stili
Il widget inietta i propri stili nella shadow root. Se non puoi concedere
'unsafe-inline', richiedi al supporto l'attivazione della modalità con nonce
e passa il tuo nonce con data-csp-nonce sul tag script.
Sintomo. Il widget non si inizializza; in console compare
BluBot: origin not allowed e l'API risponde 403 origin_not_allowed.
Causa. L'origine della pagina non è tra i domini autorizzati dell'ambiente a cui appartiene la chiave usata.
Rimedio.
https://www.acme.it
https://acme.it
https://*.acme.it
https://staging.acme.it
http://localhost:3000Punti da controllare:
- Protocollo obbligatorio:
acme.itsenzahttps://non è valido. - Il carattere jolly copre un solo livello di sottodominio.
- In
productionè ammesso solohttps. - La propagazione richiede fino a 60 secondi.
- Verifica di usare la chiave dell'ambiente giusto: una chiave di
developmentsu un dominio di produzione produce lo stesso errore.
Sintomo. Il widget esiste nel DOM ma è coperto da un banner cookie, da una barra fissa o da un menu, oppure risulta tagliato.
Cause.
- Un elemento della pagina ha uno
z-indexsuperiore. - Un antenato del widget crea un contesto di sovrapposizione
(
transform,filter,will-change,contain). - Un contenitore ha
overflow: hidden.
Verifica.
const host = document.querySelector('blubot-widget');
console.log(host.parentElement.tagName, getComputedStyle(host).zIndex);Il genitore deve essere BODY.
Rimedio.
:root {
--bp-z-index: 2147483600;
}Se il genitore non è body, sposta lo snippet: deve essere incluso come figlio
diretto del body e non dentro un contenitore con trasformazioni.
Per il banner cookie, coordinane lo z-index in modo che resti sopra il widget
finché il consenso non è espresso.
Sintomo. Le modifiche pubblicate nella Console non si vedono, oppure
BluBot.version riporta una versione superata.
Cause. Cache del browser, cache di un CDN intermedio (Cloudflare, Akamai), cache di un plugin di ottimizzazione, service worker che serve una copia locale.
Verifica.
window.BluBot.version;
performance.getEntriesByType('resource')
.filter((r) => r.name.includes('blubot'))
.map((r) => ({ url: r.name, transferSize: r.transferSize }));Un transferSize uguale a 0 indica una risposta servita dalla cache.
Rimedio.
- Ricarica ignorando la cache con
Ctrl+Maiusc+R. - Svuota la cache del tuo CDN per il percorso
/blubot/*. - Verifica che il service worker non intercetti il dominio della CDN.
- Le configurazioni del progetto non sono nel bundle: se cambiano colori o messaggi e non li vedi, il problema è la cache della configurazione, che si aggiorna entro 60 secondi.
Header di cache
Il bundle su URL con versione è immutabile e memorizzabile per un anno.
L'URL /v1/ ha una validità di 5 minuti con rivalidazione.
Sintomo. Il widget non compare solo per alcuni utenti; nella scheda Rete
la richiesta risulta annullata o con stato net::ERR_BLOCKED_BY_CLIENT.
Causa. Estensioni come uBlock Origin, AdGuard, Ghostery e le protezioni integrate di Brave e Firefox bloccano gli script categorizzati come chat o analytics.
Verifica. Apri il sito in una finestra anonima con le estensioni disattivate. Se il widget compare, il blocco è lato client.
Rimedio.
- Nessuna azione tecnica elimina completamente il problema: le liste sono gestite da terze parti.
- Riduci l'impatto con un dominio personalizzato per la CDN, disponibile sui piani
Business ed Enterprise:
chat.acme.itè raramente presente nelle liste. - Prevedi un percorso alternativo sempre visibile (numero di telefono, modulo di contatto) per non perdere l'utente.
- Non tentare di aggirare i blocchi con offuscamento: viola le condizioni d'uso dei browser e peggiora la reputazione del dominio.
Sintomo. La chat si apre, i messaggi partono ma le risposte arrivano con
diversi secondi di ritardo o non arrivano. In console compare
BluBot: websocket_failed.
Causa. Proxy, firewall o soluzioni di ispezione TLS che non supportano l'aggiornamento del protocollo a WebSocket, oppure che chiudono le connessioni persistenti dopo un timeout breve.
Verifica.
const ws = new WebSocket('wss://api.blupantheon.com/blubot/v1/echo');
ws.onopen = () => console.log('WebSocket disponibile');
ws.onerror = () => console.log('WebSocket bloccato');Rimedio.
Chiedi al reparto IT di autorizzare quanto segue.
Destinazione: api.blupantheon.com
Porte: 443
Protocolli: HTTPS e WSS (aggiornamento a WebSocket consentito)
Timeout: almeno 120 secondi sulle connessioni persistenti
Ispezione: escludere il dominio dall ispezione TLSIl widget ripiega automaticamente sul polling ogni 3 secondi quando il WebSocket non è disponibile: il servizio resta utilizzabile, con latenza superiore.
Sintomo. Funzionalità documentate non disponibili, metodi dell'API assenti, comportamenti divergenti tra ambienti.
Causa. L'URL punta a una versione bloccata, oppure a un file copiato sul tuo server invece che alla CDN.
Verifica.
console.log(window.BluBot.version);
console.log(document.querySelector('script[src*="blubot"]').src);Rimedio.
| URL in uso | Azione |
|---|---|
/blubot/1.18.0/blubot.umd.js | Passa a /blubot/v1/bpblubot.umd.js |
| File ospitato sul tuo dominio | Torna alla CDN: le copie locali non ricevono aggiornamenti |
/blubot/next/blubot.umd.js | Riportalo a v1 in produzione |
Non ospitare il bundle sul tuo server
Una copia locale non riceve correzioni di sicurezza e può diventare incompatibile con l'API. Se hai vincoli che lo impongono, contatta il supporto per un accordo di distribuzione.
Raccolta di informazioni per il supporto
Se il problema persiste, allega al ticket i dati seguenti.
Comando diagnostico da eseguire nella console del browser
copy(JSON.stringify({ v: window.BluBot?.version, url: location.href, ua: navigator.userAgent }, null, 2))Copia automaticamente il risultato negli appunti.
| Informazione | Come ottenerla |
|---|---|
| Versione del widget | window.BluBot.version |
| Chiave e ambiente del progetto | Console, sezione Chiavi |
| URL della pagina | Indirizzo completo in cui si verifica il problema |
| Browser e sistema operativo | navigator.userAgent |
| Identificativo di sessione | Payload dell'evento ready |
| Registro della console | Esportazione completa, non uno screenshot |
| Registro della rete | File HAR con le richieste verso blupantheon.com |
| Orario dell'evento | Data, ora e fuso orario |
Prima di condividere un file HAR
Un file HAR può contenere cookie e token di sessione. Usa l'opzione di esportazione senza contenuti sensibili, oppure invialo attraverso il canale cifrato indicato in Supporto.
Passi successivi
- Installazione — rivedi la procedura per la tua piattaforma.
- Configurazione — controlla i valori delle opzioni.
- Supporto — canali, livelli di servizio e apertura di un ticket.