[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fit\u002Fdocs\u002Fcanaux\u002Fchat-widget":3,"docs-nav-it":370},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":364,"_id":365,"_source":366,"_file":367,"_stem":368,"_extension":369},"\u002Fit\u002Fdocs\u002Fcanaux\u002Fchat-widget","canaux",false,"","Widget chat web","Widget chat integrabile in qualsiasi sito con un unico script JS: Shadow DOM, nessun cookie, 8 lingue, protezioni anti-abuso attive di default.",{"type":11,"children":12,"toc":356},"root",[13,29,36,115,121,155,167,184,190,195,248,254,303,309],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27],{"type":19,"value":20},"text","Il ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"widget chat",{"type":19,"value":28}," è uno script JS che integri nel tuo sito web (marketing, supporto, app). Apre una finestra di conversazione alimentata da una delle tue pipeline betool; le risposte dell'agent vengono visualizzate man mano (streaming).",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"funzionalità",[34],{"type":19,"value":35},"Funzionalità",{"type":14,"tag":37,"props":38,"children":39},"ul",{},[40,51,61,87,97],{"type":14,"tag":41,"props":42,"children":43},"li",{},[44,49],{"type":14,"tag":22,"props":45,"children":46},{},[47],{"type":19,"value":48},"Uno snippet",{"type":19,"value":50}," da incollare nella tua pagina. Nessuna dipendenza npm; il widget vive in uno Shadow DOM, quindi il CSS del tuo sito non lo deforma (e viceversa).",{"type":14,"tag":41,"props":52,"children":53},{},[54,59],{"type":14,"tag":22,"props":55,"children":56},{},[57],{"type":19,"value":58},"Token pubblico",{"type":19,"value":60}," — rigenerabile in qualsiasi momento dall'editor. Nessun segreto lato client.",{"type":14,"tag":41,"props":62,"children":63},{},[64,69,71,78,80,85],{"type":14,"tag":22,"props":65,"children":66},{},[67],{"type":19,"value":68},"Continuità per scheda",{"type":19,"value":70}," — l'identificativo della conversazione è conservato in ",{"type":14,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":19,"value":77},"sessionStorage",{"type":19,"value":79},": un ricaricamento della pagina riprende il filo, chiudere la scheda lo termina. Il widget non deposita ",{"type":14,"tag":22,"props":81,"children":82},{},[83],{"type":19,"value":84},"alcun cookie",{"type":19,"value":86},".",{"type":14,"tag":41,"props":88,"children":89},{},[90,95],{"type":14,"tag":22,"props":91,"children":92},{},[93],{"type":19,"value":94},"8 lingue",{"type":19,"value":96}," — l'interfaccia del widget segue la lingua del browser del visitatore.",{"type":14,"tag":41,"props":98,"children":99},{},[100,105,107,113],{"type":14,"tag":22,"props":101,"children":102},{},[103],{"type":19,"value":104},"Protezioni anti-abuso attive per impostazione predefinita",{"type":19,"value":106}," — 20 messaggi al minuto per IP, 10 nuove sessioni al minuto per IP, massimo 4.000 caratteri per messaggio (regolabili; ",{"type":14,"tag":72,"props":108,"children":110},{"className":109},[],[111],{"type":19,"value":112},"0",{"type":19,"value":114}," disattiva una protezione). Un limite globale per widget (20 volte il limite per IP) blocca anche le inondazioni distribuite su più IP.",{"type":14,"tag":30,"props":116,"children":118},{"id":117},"configurazione",[119],{"type":19,"value":120},"Configurazione",{"type":14,"tag":122,"props":123,"children":124},"ol",{},[125,143],{"type":14,"tag":41,"props":126,"children":127},{},[128,130,135,137,142],{"type":19,"value":129},"Nell'editor del modello, configura il nodo ",{"type":14,"tag":22,"props":131,"children":132},{},[133],{"type":19,"value":134},"Start",{"type":19,"value":136}," con un ricevitore ",{"type":14,"tag":22,"props":138,"children":139},{},[140],{"type":19,"value":141},"Chat (widget web)",{"type":19,"value":86},{"type":14,"tag":41,"props":144,"children":145},{},[146,148,153],{"type":19,"value":147},"Al salvataggio, betool genera il token pubblico e mostra lo ",{"type":14,"tag":22,"props":149,"children":150},{},[151],{"type":19,"value":152},"snippet di integrazione",{"type":19,"value":154},", pronto da copiare:",{"type":14,"tag":156,"props":157,"children":162},"pre",{"className":158,"code":160,"language":161,"meta":7},[159],"language-html","\u003Cscript src=\"https:\u002F\u002Fplatform.betool.ai\u002Fwidget\u002Fv1\u002Fwidget.js\">\u003C\u002Fscript>\n\u003Cscript>\n  BetoolChat.init({ token: \"\u003Ctoken-public-du-widget>\" });\n\u003C\u002Fscript>\n","html",[163],{"type":14,"tag":72,"props":164,"children":165},{"__ignoreMap":7},[166],{"type":19,"value":160},{"type":14,"tag":122,"props":168,"children":170},{"start":169},3,[171],{"type":14,"tag":41,"props":172,"children":173},{},[174,176,182],{"type":19,"value":175},"Incolla questo snippet nel tag ",{"type":14,"tag":72,"props":177,"children":179},{"className":178},[],[180],{"type":19,"value":181},"\u003Cbody>",{"type":19,"value":183}," del tuo sito. Il widget appare automaticamente, nell'angolo in basso a destra per impostazione predefinita.",{"type":14,"tag":30,"props":185,"children":187},{"id":186},"personalizzazione",[188],{"type":19,"value":189},"Personalizzazione",{"type":14,"tag":15,"props":191,"children":192},{},[193],{"type":19,"value":194},"Dalla configurazione del ricevitore:",{"type":14,"tag":37,"props":196,"children":197},{},[198,208,218,228,238],{"type":14,"tag":41,"props":199,"children":200},{},[201,206],{"type":14,"tag":22,"props":202,"children":203},{},[204],{"type":19,"value":205},"Aspetto",{"type":19,"value":207}," — titolo visualizzato, colore primario, posizione (quattro angoli), forma del launcher (linguetta o bolla) e relativa etichetta.",{"type":14,"tag":41,"props":209,"children":210},{},[211,216],{"type":14,"tag":22,"props":212,"children":213},{},[214],{"type":19,"value":215},"Testi",{"type":19,"value":217}," — messaggio di benvenuto, testo del campo di inserimento, testo di stato (o indicazione « online » tradotta).",{"type":14,"tag":41,"props":219,"children":220},{},[221,226],{"type":14,"tag":22,"props":222,"children":223},{},[224],{"type":19,"value":225},"Rendering",{"type":19,"value":227}," — visualizzazione del markdown delle risposte (attiva per impostazione predefinita).",{"type":14,"tag":41,"props":229,"children":230},{},[231,236],{"type":14,"tag":22,"props":232,"children":233},{},[234],{"type":19,"value":235},"Contesto di pagina",{"type":19,"value":237}," — trasmette a ogni messaggio l'origine e il percorso della pagina corrente (mai la query string). Attivo per impostazione predefinita, disattivabile.",{"type":14,"tag":41,"props":239,"children":240},{},[241,246],{"type":14,"tag":22,"props":242,"children":243},{},[244],{"type":19,"value":245},"Ambito",{"type":19,"value":247}," — limita le origini autorizzate.",{"type":14,"tag":30,"props":249,"children":251},{"id":250},"sicurezza",[252],{"type":19,"value":253},"Sicurezza",{"type":14,"tag":15,"props":255,"children":256},{},[257,258,264,266,271,273,278,280,286,288,294,296,301],{"type":19,"value":20},{"type":14,"tag":72,"props":259,"children":261},{"className":260},[],[262],{"type":19,"value":263},"token",{"type":19,"value":265}," è ",{"type":14,"tag":22,"props":267,"children":268},{},[269],{"type":19,"value":270},"pubblico per progettazione",{"type":19,"value":272},": permette soltanto di parlare con il modello che porta questo ricevitore. Se elenchi delle ",{"type":14,"tag":22,"props":274,"children":275},{},[276],{"type":19,"value":277},"Origini autorizzate",{"type":19,"value":279},", una richiesta proveniente da un'altra origine viene rifiutata lato server (",{"type":14,"tag":72,"props":281,"children":283},{"className":282},[],[284],{"type":19,"value":285},"403",{"type":19,"value":287},"); un elenco vuoto (o ",{"type":14,"tag":72,"props":289,"children":291},{"className":290},[],[292],{"type":19,"value":293},"*",{"type":19,"value":295},") non impone alcuna restrizione — da riservare allo sviluppo. Per revocare un token compromesso: pulsante ",{"type":14,"tag":22,"props":297,"children":298},{},[299],{"type":19,"value":300},"rigenera",{"type":19,"value":302}," accanto all'URL pubblico, nella configurazione del ricevitore (tutti gli snippet già in produzione smettono allora di funzionare).",{"type":14,"tag":30,"props":304,"children":306},{"id":305},"limitazioni",[307],{"type":19,"value":308},"Limitazioni",{"type":14,"tag":37,"props":310,"children":311},{},[312,324,351],{"type":14,"tag":41,"props":313,"children":314},{},[315,317,322],{"type":19,"value":316},"Nessun ",{"type":14,"tag":22,"props":318,"children":319},{},[320],{"type":19,"value":321},"co-browsing",{"type":19,"value":323},": l'agent non vede la pagina dell'utente, solo la sua origine e il suo percorso (se il contesto di pagina è attivo).",{"type":14,"tag":41,"props":325,"children":326},{},[327,328,333,335,342,344,350],{"type":19,"value":316},{"type":14,"tag":22,"props":329,"children":330},{},[331],{"type":19,"value":332},"invio di allegati",{"type":19,"value":334}," dal widget. Per ricevere file, usa una pipeline ",{"type":14,"tag":336,"props":337,"children":339},"a",{"href":338},"\u002Fit\u002Fdocs\u002Fcanaux\u002Femail",[340],{"type":19,"value":341},"email",{"type":19,"value":343}," o ",{"type":14,"tag":336,"props":345,"children":347},{"href":346},"\u002Fit\u002Fdocs\u002Fcanaux\u002Fwebhook",[348],{"type":19,"value":349},"webhook",{"type":19,"value":86},{"type":14,"tag":41,"props":352,"children":353},{},[354],{"type":19,"value":355},"Nessuna ripresa della conversazione da una visita all'altra: chiudere la scheda termina il filo.",{"title":7,"searchDepth":357,"depth":357,"links":358},2,[359,360,361,362,363],{"id":32,"depth":357,"text":35},{"id":117,"depth":357,"text":120},{"id":186,"depth":357,"text":189},{"id":250,"depth":357,"text":253},{"id":305,"depth":357,"text":308},"markdown","content:it:docs:2.canaux:4.chat-widget.md","content","it\u002Fdocs\u002F2.canaux\u002F4.chat-widget.md","it\u002Fdocs\u002F2.canaux\u002F4.chat-widget","md",[371],{"title":372,"_path":373,"children":374},"It","\u002Fit",[375],{"title":376,"_path":377,"children":378},"Docs","\u002Fit\u002Fdocs",[379,392,416,444,457,472,485,546],{"title":380,"_path":381,"children":382},"Per iniziare","\u002Fit\u002Fdocs\u002Fdemarrer",[383,386,389],{"title":384,"_path":385},"Benvenuto","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":387,"_path":388},"Creare un account","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":390,"_path":391},"Collegare una chiave LLM","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":393,"_path":394,"children":395},"Canali","\u002Fit\u002Fdocs\u002Fcanaux",[396,399,402,404,405,407,410,413],{"title":397,"_path":398},"Panoramica dei canali","\u002Fit\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":400,"_path":401},"Telefonia in tempo reale","\u002Fit\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":403,"_path":338},"Email",{"title":8,"_path":4},{"title":406,"_path":346},"Webhook HTTP",{"title":408,"_path":409},"Messaggistica (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fit\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":411,"_path":412},"Meta Lead Ads","\u002Fit\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":414,"_path":415},"Schedule (cron)","\u002Fit\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":417,"_path":418,"children":419},"Pipeline","\u002Fit\u002Fdocs\u002Fpipelines",[420,423,426,429,432,435,438,441],{"title":421,"_path":422},"L'editor visuale","\u002Fit\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":424,"_path":425},"Agenti IA","\u002Fit\u002Fdocs\u002Fpipelines\u002Fagents",{"title":427,"_path":428},"Operatori deterministici","\u002Fit\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":430,"_path":431},"Controllo di flusso","\u002Fit\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":433,"_path":434},"Code Step","\u002Fit\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":436,"_path":437},"Sotto-pipeline","\u002Fit\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":439,"_path":440},"Azioni no-code","\u002Fit\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":442,"_path":443},"Base di conoscenza","\u002Fit\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":445,"_path":446,"children":447},"Supervisione","\u002Fit\u002Fdocs\u002Fsupervision",[448,451,454],{"title":449,"_path":450},"Cronologia delle esecuzioni","\u002Fit\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":452,"_path":453},"Crediti e metering","\u002Fit\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":455,"_path":456},"Benchmark","\u002Fit\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":253,"_path":458,"children":459},"\u002Fit\u002Fdocs\u002Fsecurite",[460,463,466,469],{"title":461,"_path":462},"Principi di sicurezza","\u002Fit\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":464,"_path":465},"Multi-tenancy rigorosa","\u002Fit\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":467,"_path":468},"Audit RGPD e registro degli accessi","\u002Fit\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":470,"_path":471},"Deployment sovrano","\u002Fit\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":473,"_path":474,"children":475},"Sviluppatori","\u002Fit\u002Fdocs\u002Fdeveloppeurs",[476,479,482],{"title":477,"_path":478},"API Admin","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":480,"_path":481},"Webhook in uscita","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":483,"_path":484},"Pilotare betool da Claude (MCP)","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":486,"_path":487,"children":488},"Integrazioni","\u002Fit\u002Fdocs\u002Fintegrations",[489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543],{"title":490,"_path":491},"Panoramica delle integrazioni","\u002Fit\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":493,"_path":494},"Stripe","\u002Fit\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":496,"_path":497},"GitHub","\u002Fit\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":499,"_path":500},"Google","\u002Fit\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":502,"_path":503},"LinkedIn Ads","\u002Fit\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":505,"_path":506},"Kavkom","\u002Fit\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":508,"_path":509},"Jira","\u002Fit\u002Fdocs\u002Fintegrations\u002Fjira",{"title":511,"_path":512},"Slack","\u002Fit\u002Fdocs\u002Fintegrations\u002Fslack",{"title":514,"_path":515},"SMS","\u002Fit\u002Fdocs\u002Fintegrations\u002Fsms",{"title":517,"_path":518},"Enable Banking (open banking)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":520,"_path":521},"CRM, marketing e produttività","\u002Fit\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":523,"_path":524},"HeyGen (video)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":526,"_path":527},"La Poste","\u002Fit\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":529,"_path":530},"CRM verticali (beTool Application, Qhare)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":532,"_path":533},"Mitti (ispezioni sul campo)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":535,"_path":536},"Meta (Messenger, Pagine, Meta Ads)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":538,"_path":539},"Onoff Business (Beta)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":541,"_path":542},"Smart Life \u002F Tuya (oggetti connessi)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":544,"_path":545},"Prodotti beTool (Desktop, Kiosk, Terminal)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":547,"_path":548,"children":549},"Casi d'uso","\u002Fit\u002Fdocs\u002Fcas-usage",[550,553,556,559,562,565],{"title":551,"_path":552},"Agenti di business tipo","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":554,"_path":555},"CFO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":557,"_path":558},"COO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":560,"_path":561},"CTO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":563,"_path":564},"Product Manager IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":566,"_path":567},"Assistente personale","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]