[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fes\u002Fdocs\u002Fcanaux\u002Fchat-widget":3,"docs-nav-es":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},"\u002Fes\u002Fdocs\u002Fcanaux\u002Fchat-widget","canaux",false,"","Widget de chat web","Widget de chat integrable en cualquier sitio web con un único script JS.",{"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","El ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"widget de chat",{"type":19,"value":28}," es un script JS que integras en tu sitio web (marketing, soporte, aplicación). Abre una ventana de conversación impulsada por uno de tus pipelines de betool; las respuestas del agente se muestran a medida que se generan (streaming).",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"características",[34],{"type":19,"value":35},"Características",{"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},"Un snippet",{"type":19,"value":50}," que pegar en tu página. Sin dependencias npm; el widget vive en un Shadow DOM, así que el CSS de tu sitio no lo deforma (y a la inversa).",{"type":14,"tag":41,"props":52,"children":53},{},[54,59],{"type":14,"tag":22,"props":55,"children":56},{},[57],{"type":19,"value":58},"Token público",{"type":19,"value":60}," — regenerable en cualquier momento desde el editor. Ningún secreto del lado del cliente.",{"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},"Continuidad por pestaña",{"type":19,"value":70}," — el identificador de conversación se conserva en ",{"type":14,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":19,"value":77},"sessionStorage",{"type":19,"value":79},": recargar la página retoma el hilo, cerrar la pestaña lo termina. El widget no deposita ",{"type":14,"tag":22,"props":81,"children":82},{},[83],{"type":19,"value":84},"ninguna 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 idiomas",{"type":19,"value":96}," — la interfaz del widget sigue el idioma del navegador del visitante.",{"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},"Protecciones antiabuso activas por defecto",{"type":19,"value":106}," — 20 mensajes por minuto y por IP, 10 sesiones nuevas por minuto y por IP, 4 000 caracteres como máximo por mensaje (ajustables; ",{"type":14,"tag":72,"props":108,"children":110},{"className":109},[],[111],{"type":19,"value":112},"0",{"type":19,"value":114}," desactiva una protección). Un límite global por widget (20 veces el límite por IP) bloquea también las avalanchas repartidas entre varias IP.",{"type":14,"tag":30,"props":116,"children":118},{"id":117},"puesta-en-marcha",[119],{"type":19,"value":120},"Puesta en marcha",{"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},"En el editor del modelo, configura el nodo ",{"type":14,"tag":22,"props":131,"children":132},{},[133],{"type":19,"value":134},"Start",{"type":19,"value":136}," con un receptor ",{"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 guardar, betool genera el token público y muestra el ",{"type":14,"tag":22,"props":149,"children":150},{},[151],{"type":19,"value":152},"snippet de integración",{"type":19,"value":154},", listo para copiar:",{"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},"Pega este snippet en la etiqueta ",{"type":14,"tag":72,"props":177,"children":179},{"className":178},[],[180],{"type":19,"value":181},"\u003Cbody>",{"type":19,"value":183}," de tu sitio. El widget aparece automáticamente, abajo a la derecha por defecto.",{"type":14,"tag":30,"props":185,"children":187},{"id":186},"personalización",[188],{"type":19,"value":189},"Personalización",{"type":14,"tag":15,"props":191,"children":192},{},[193],{"type":19,"value":194},"Desde la configuración del receptor:",{"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},"Apariencia",{"type":19,"value":207}," — título mostrado, color primario, posición (cuatro esquinas), forma del lanzador (pestaña o burbuja) y su texto.",{"type":14,"tag":41,"props":209,"children":210},{},[211,216],{"type":14,"tag":22,"props":212,"children":213},{},[214],{"type":19,"value":215},"Textos",{"type":19,"value":217}," — mensaje de bienvenida, texto del campo de entrada, texto de estado (o indicación «en línea» traducida).",{"type":14,"tag":41,"props":219,"children":220},{},[221,226],{"type":14,"tag":22,"props":222,"children":223},{},[224],{"type":19,"value":225},"Renderizado",{"type":19,"value":227}," — visualización del markdown de las respuestas (activada por defecto).",{"type":14,"tag":41,"props":229,"children":230},{},[231,236],{"type":14,"tag":22,"props":232,"children":233},{},[234],{"type":19,"value":235},"Contexto de página",{"type":19,"value":237}," — transmite con cada mensaje el origen y la ruta de la página actual (nunca la query string). Activado por defecto, desactivable.",{"type":14,"tag":41,"props":239,"children":240},{},[241,246],{"type":14,"tag":22,"props":242,"children":243},{},[244],{"type":19,"value":245},"Perímetro",{"type":19,"value":247}," — restringir los orígenes permitidos.",{"type":14,"tag":30,"props":249,"children":251},{"id":250},"seguridad",[252],{"type":19,"value":253},"Seguridad",{"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}," es ",{"type":14,"tag":22,"props":267,"children":268},{},[269],{"type":19,"value":270},"público por diseño",{"type":19,"value":272},": solo permite hablar con el modelo que lleva este receptor. Si indicas ",{"type":14,"tag":22,"props":274,"children":275},{},[276],{"type":19,"value":277},"Orígenes permitidos",{"type":19,"value":279},", una petición procedente de otro origen se rechaza del lado del servidor (",{"type":14,"tag":72,"props":281,"children":283},{"className":282},[],[284],{"type":19,"value":285},"403",{"type":19,"value":287},"); una lista vacía (o ",{"type":14,"tag":72,"props":289,"children":291},{"className":290},[],[292],{"type":19,"value":293},"*",{"type":19,"value":295},") no impone ninguna restricción — resérvala para el desarrollo. Para revocar un token comprometido: botón ",{"type":14,"tag":22,"props":297,"children":298},{},[299],{"type":19,"value":300},"regenerar",{"type":19,"value":302}," junto a la URL pública, en la configuración del receptor (todos los snippets ya en producción dejan entonces de funcionar).",{"type":14,"tag":30,"props":304,"children":306},{"id":305},"limitaciones",[307],{"type":19,"value":308},"Limitaciones",{"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},"Sin ",{"type":14,"tag":22,"props":318,"children":319},{},[320],{"type":19,"value":321},"co-browsing",{"type":19,"value":323},": el agente no ve la página del usuario, solo su origen y su ruta (si el contexto de página está activado).",{"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},"envío de archivos adjuntos",{"type":19,"value":334}," desde el widget. Para recibir archivos, utiliza un pipeline de ",{"type":14,"tag":336,"props":337,"children":339},"a",{"href":338},"\u002Fes\u002Fdocs\u002Fcanaux\u002Femail",[340],{"type":19,"value":341},"correo electrónico",{"type":19,"value":343}," o de ",{"type":14,"tag":336,"props":345,"children":347},{"href":346},"\u002Fes\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},"Sin reanudación de la conversación de una visita a otra: cerrar la pestaña termina el hilo.",{"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:es:docs:2.canaux:4.chat-widget.md","content","es\u002Fdocs\u002F2.canaux\u002F4.chat-widget.md","es\u002Fdocs\u002F2.canaux\u002F4.chat-widget","md",[371],{"title":372,"_path":373,"children":374},"Es","\u002Fes",[375],{"title":376,"_path":377,"children":378},"Docs","\u002Fes\u002Fdocs",[379,392,416,444,457,472,485,546],{"title":380,"_path":381,"children":382},"Primeros pasos","\u002Fes\u002Fdocs\u002Fdemarrer",[383,386,389],{"title":384,"_path":385},"Bienvenido","\u002Fes\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":387,"_path":388},"Crear una cuenta","\u002Fes\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":390,"_path":391},"Conectar una clave LLM","\u002Fes\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":393,"_path":394,"children":395},"Canales","\u002Fes\u002Fdocs\u002Fcanaux",[396,399,402,404,405,407,410,413],{"title":397,"_path":398},"Visión general de los canales","\u002Fes\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":400,"_path":401},"Telefonía en tiempo real","\u002Fes\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":403,"_path":338},"Email",{"title":8,"_path":4},{"title":406,"_path":346},"Webhook HTTP",{"title":408,"_path":409},"Mensajería (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fes\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":411,"_path":412},"Meta Lead Ads","\u002Fes\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":414,"_path":415},"Schedule (cron)","\u002Fes\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":417,"_path":418,"children":419},"Pipelines","\u002Fes\u002Fdocs\u002Fpipelines",[420,423,426,429,432,435,438,441],{"title":421,"_path":422},"El editor visual","\u002Fes\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":424,"_path":425},"Agentes IA","\u002Fes\u002Fdocs\u002Fpipelines\u002Fagents",{"title":427,"_path":428},"Operadores deterministas","\u002Fes\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":430,"_path":431},"Control de flujo","\u002Fes\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":433,"_path":434},"Code Steps","\u002Fes\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":436,"_path":437},"Sub-pipelines","\u002Fes\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":439,"_path":440},"Acciones no-code","\u002Fes\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":442,"_path":443},"Base de conocimiento","\u002Fes\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":445,"_path":446,"children":447},"Supervisión","\u002Fes\u002Fdocs\u002Fsupervision",[448,451,454],{"title":449,"_path":450},"Historial de ejecuciones","\u002Fes\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":452,"_path":453},"Créditos y medición","\u002Fes\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":455,"_path":456},"Benchmarks","\u002Fes\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":253,"_path":458,"children":459},"\u002Fes\u002Fdocs\u002Fsecurite",[460,463,466,469],{"title":461,"_path":462},"Principios de seguridad","\u002Fes\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":464,"_path":465},"Multi-tenancy estricto","\u002Fes\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":467,"_path":468},"Auditoría RGPD y registro de accesos","\u002Fes\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":470,"_path":471},"Despliegue soberano","\u002Fes\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":473,"_path":474,"children":475},"Desarrolladores","\u002Fes\u002Fdocs\u002Fdeveloppeurs",[476,479,482],{"title":477,"_path":478},"API de administración","\u002Fes\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":480,"_path":481},"Webhooks salientes","\u002Fes\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":483,"_path":484},"Pilota betool desde Claude (MCP)","\u002Fes\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":486,"_path":487,"children":488},"Integraciones","\u002Fes\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},"Visión general de las integraciones","\u002Fes\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":493,"_path":494},"Stripe","\u002Fes\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":496,"_path":497},"GitHub","\u002Fes\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":499,"_path":500},"Google","\u002Fes\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":502,"_path":503},"LinkedIn Ads","\u002Fes\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":505,"_path":506},"Kavkom","\u002Fes\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":508,"_path":509},"Jira","\u002Fes\u002Fdocs\u002Fintegrations\u002Fjira",{"title":511,"_path":512},"Slack","\u002Fes\u002Fdocs\u002Fintegrations\u002Fslack",{"title":514,"_path":515},"SMS","\u002Fes\u002Fdocs\u002Fintegrations\u002Fsms",{"title":517,"_path":518},"Enable Banking (open banking)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":520,"_path":521},"CRM, marketing y productividad","\u002Fes\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":523,"_path":524},"HeyGen (vídeo)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":526,"_path":527},"La Poste","\u002Fes\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":529,"_path":530},"CRM de negocio (beTool Application, Qhare)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":532,"_path":533},"Mitti (inspecciones de campo)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":535,"_path":536},"Meta (Messenger, Páginas, Meta Ads)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":538,"_path":539},"Onoff Business (Beta)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":541,"_path":542},"Smart Life \u002F Tuya (objetos conectados)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":544,"_path":545},"Productos beTool (Desktop, Kiosk, Terminal)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":547,"_path":548,"children":549},"Casos de uso","\u002Fes\u002Fdocs\u002Fcas-usage",[550,553,556,559,562,565],{"title":551,"_path":552},"Agentes de negocio tipo","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":554,"_path":555},"CFO IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":557,"_path":558},"COO IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":560,"_path":561},"CTO IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":563,"_path":564},"Product Manager IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":566,"_path":567},"Asistente personal","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]