[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fcanaux\u002Fchat-widget":3,"docs-nav-fr":371},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":365,"_id":366,"_source":367,"_file":368,"_stem":369,"_extension":370},"\u002Fdocs\u002Fcanaux\u002Fchat-widget","canaux",false,"","Chat widget web","Widget de chat embarquable sur n'importe quel site, en script JS unique.",{"type":11,"children":12,"toc":357},"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","Le ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"chat widget",{"type":19,"value":28}," est un script JS que vous embarquez sur votre site (marketing, support, app). Il ouvre une fenêtre de conversation animée par un de vos pipelines betool ; les réponses de l'agent s'affichent au fil de l'eau (streaming).",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"caractéristiques",[34],{"type":19,"value":35},"Caractéristiques",{"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}," à coller dans votre page. Aucune dépendance npm ; le widget vit dans un Shadow DOM, donc le CSS de votre site ne le déforme pas (et inversement).",{"type":14,"tag":41,"props":52,"children":53},{},[54,59],{"type":14,"tag":22,"props":55,"children":56},{},[57],{"type":19,"value":58},"Token public",{"type":19,"value":60}," — régénérable à tout moment depuis l'éditeur. Pas de secret côté 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é par onglet",{"type":19,"value":70}," — l'identifiant de conversation est conservé en ",{"type":14,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":19,"value":77},"sessionStorage",{"type":19,"value":79}," : un rechargement de page reprend le fil, fermer l'onglet le termine. Le widget ne dépose ",{"type":14,"tag":22,"props":81,"children":82},{},[83],{"type":19,"value":84},"aucun 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 langues",{"type":19,"value":96}," — l'interface du widget suit la langue du navigateur du visiteur.",{"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},"Garde-fous anti-abus actifs par défaut",{"type":19,"value":106}," — 20 messages par minute et par IP, 10 nouvelles sessions par minute et par IP, 4 000 caractères maximum par message (réglables ; ",{"type":14,"tag":72,"props":108,"children":110},{"className":109},[],[111],{"type":19,"value":112},"0",{"type":19,"value":114}," désactive une protection). Un plafond global par widget (20 fois la limite par IP) bloque aussi les inondations réparties sur plusieurs IP.",{"type":14,"tag":30,"props":116,"children":118},{"id":117},"mise-en-place",[119],{"type":19,"value":120},"Mise en place",{"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},"Dans l'éditeur du modèle, configurez le nœud ",{"type":14,"tag":22,"props":131,"children":132},{},[133],{"type":19,"value":134},"Start",{"type":19,"value":136}," avec un récepteur ",{"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},"À l'enregistrement, betool génère le token public et affiche le ",{"type":14,"tag":22,"props":149,"children":150},{},[151],{"type":19,"value":152},"snippet d'intégration",{"type":19,"value":154},", prêt à copier :",{"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},"Collez ce snippet dans la balise ",{"type":14,"tag":72,"props":177,"children":179},{"className":178},[],[180],{"type":19,"value":181},"\u003Cbody>",{"type":19,"value":183}," de votre site. Le widget apparaît automatiquement, en bas à droite par défaut.",{"type":14,"tag":30,"props":185,"children":187},{"id":186},"personnalisation",[188],{"type":19,"value":189},"Personnalisation",{"type":14,"tag":15,"props":191,"children":192},{},[193],{"type":19,"value":194},"Depuis la configuration du récepteur :",{"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},"Apparence",{"type":19,"value":207}," — titre affiché, couleur primaire, position (quatre coins), forme du lanceur (onglet ou bulle) et son libellé.",{"type":14,"tag":41,"props":209,"children":210},{},[211,216],{"type":14,"tag":22,"props":212,"children":213},{},[214],{"type":19,"value":215},"Textes",{"type":19,"value":217}," — message d'accueil, texte du champ de saisie, texte de statut (ou affichage « en ligne » traduit).",{"type":14,"tag":41,"props":219,"children":220},{},[221,226],{"type":14,"tag":22,"props":222,"children":223},{},[224],{"type":19,"value":225},"Rendu",{"type":19,"value":227}," — affichage du markdown des réponses (activé par défaut).",{"type":14,"tag":41,"props":229,"children":230},{},[231,236],{"type":14,"tag":22,"props":232,"children":233},{},[234],{"type":19,"value":235},"Contexte de page",{"type":19,"value":237}," — transmet à chaque message l'origine et le chemin de la page courante (jamais la query string). Activé par défaut, désactivable.",{"type":14,"tag":41,"props":239,"children":240},{},[241,246],{"type":14,"tag":22,"props":242,"children":243},{},[244],{"type":19,"value":245},"Périmètre",{"type":19,"value":247}," — restreindre les origines autorisées.",{"type":14,"tag":30,"props":249,"children":251},{"id":250},"sécurité",[252],{"type":19,"value":253},"Sécurité",{"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}," est ",{"type":14,"tag":22,"props":267,"children":268},{},[269],{"type":19,"value":270},"public par design",{"type":19,"value":272}," : il ne permet que de parler au modèle qui porte ce récepteur. Si vous listez des ",{"type":14,"tag":22,"props":274,"children":275},{},[276],{"type":19,"value":277},"origines autorisées",{"type":19,"value":279},", une requête venue d'une autre origine est refusée côté serveur (",{"type":14,"tag":72,"props":281,"children":283},{"className":282},[],[284],{"type":19,"value":285},"403",{"type":19,"value":287},") ; une liste vide (ou ",{"type":14,"tag":72,"props":289,"children":291},{"className":290},[],[292],{"type":19,"value":293},"*",{"type":19,"value":295},") n'impose aucune restriction — à réserver au développement. Pour révoquer un token compromis : bouton ",{"type":14,"tag":22,"props":297,"children":298},{},[299],{"type":19,"value":300},"régénérer",{"type":19,"value":302}," à côté de l'URL publique, dans la configuration du récepteur (tous les snippets déjà en production cessent alors de fonctionner).",{"type":14,"tag":30,"props":304,"children":306},{"id":305},"limites",[307],{"type":19,"value":308},"Limites",{"type":14,"tag":37,"props":310,"children":311},{},[312,324,352],{"type":14,"tag":41,"props":313,"children":314},{},[315,317,322],{"type":19,"value":316},"Pas de ",{"type":14,"tag":22,"props":318,"children":319},{},[320],{"type":19,"value":321},"co-browsing",{"type":19,"value":323}," : l'agent ne voit pas la page de l'utilisateur, seulement son origine et son chemin (si le contexte de page est activé).",{"type":14,"tag":41,"props":325,"children":326},{},[327,329,334,336,343,345,351],{"type":19,"value":328},"Pas d'",{"type":14,"tag":22,"props":330,"children":331},{},[332],{"type":19,"value":333},"envoi de pièces jointes",{"type":19,"value":335}," depuis le widget. Pour recevoir des fichiers, utilisez un pipeline ",{"type":14,"tag":337,"props":338,"children":340},"a",{"href":339},"\u002Fdocs\u002Fcanaux\u002Femail",[341],{"type":19,"value":342},"email",{"type":19,"value":344}," ou ",{"type":14,"tag":337,"props":346,"children":348},{"href":347},"\u002Fdocs\u002Fcanaux\u002Fwebhook",[349],{"type":19,"value":350},"webhook",{"type":19,"value":86},{"type":14,"tag":41,"props":353,"children":354},{},[355],{"type":19,"value":356},"Pas de reprise de conversation d'une visite à l'autre : fermer l'onglet termine le fil.",{"title":7,"searchDepth":358,"depth":358,"links":359},2,[360,361,362,363,364],{"id":32,"depth":358,"text":35},{"id":117,"depth":358,"text":120},{"id":186,"depth":358,"text":189},{"id":250,"depth":358,"text":253},{"id":305,"depth":358,"text":308},"markdown","content:docs:2.canaux:4.chat-widget.md","content","docs\u002F2.canaux\u002F4.chat-widget.md","docs\u002F2.canaux\u002F4.chat-widget","md",[372],{"title":373,"_path":374,"children":375},"Docs","\u002Fdocs",[376,389,413,441,454,469,482,543],{"title":377,"_path":378,"children":379},"Démarrer","\u002Fdocs\u002Fdemarrer",[380,383,386],{"title":381,"_path":382},"Bienvenue","\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":384,"_path":385},"Créer un compte","\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":387,"_path":388},"Brancher une clé LLM","\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":390,"_path":391,"children":392},"Canaux","\u002Fdocs\u002Fcanaux",[393,396,399,401,402,404,407,410],{"title":394,"_path":395},"Vue d'ensemble des canaux","\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":397,"_path":398},"Téléphonie temps réel","\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":400,"_path":339},"Email",{"title":8,"_path":4},{"title":403,"_path":347},"Webhook HTTP",{"title":405,"_path":406},"Messageries (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":408,"_path":409},"Meta Lead Ads","\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":411,"_path":412},"Planification (cron)","\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":414,"_path":415,"children":416},"Pipelines","\u002Fdocs\u002Fpipelines",[417,420,423,426,429,432,435,438],{"title":418,"_path":419},"L'éditeur visuel","\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":421,"_path":422},"Agents IA","\u002Fdocs\u002Fpipelines\u002Fagents",{"title":424,"_path":425},"Opérateurs déterministes","\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":427,"_path":428},"Contrôle de flux","\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":430,"_path":431},"Étapes de code","\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":433,"_path":434},"Sous-pipelines","\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":436,"_path":437},"Actions sans code","\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":439,"_path":440},"Base de connaissances","\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":442,"_path":443,"children":444},"Supervision","\u002Fdocs\u002Fsupervision",[445,448,451],{"title":446,"_path":447},"Historique d'exécutions","\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":449,"_path":450},"Crédits & metering","\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":452,"_path":453},"Benchmarks","\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":253,"_path":455,"children":456},"\u002Fdocs\u002Fsecurite",[457,460,463,466],{"title":458,"_path":459},"Principes de sécurité","\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":461,"_path":462},"Multi-tenant strict","\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":464,"_path":465},"Audit RGPD & journal d'accès","\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":467,"_path":468},"Déploiement souverain","\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":470,"_path":471,"children":472},"Développeurs","\u002Fdocs\u002Fdeveloppeurs",[473,476,479],{"title":474,"_path":475},"API admin","\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":477,"_path":478},"Webhooks sortants","\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":480,"_path":481},"Piloter betool depuis Claude (MCP)","\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":483,"_path":484,"children":485},"Intégrations","\u002Fdocs\u002Fintegrations",[486,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,540],{"title":487,"_path":488},"Vue d'ensemble des intégrations","\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":490,"_path":491},"Stripe","\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":493,"_path":494},"GitHub","\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":496,"_path":497},"Google","\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":499,"_path":500},"LinkedIn Ads","\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":502,"_path":503},"Kavkom","\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":505,"_path":506},"Jira","\u002Fdocs\u002Fintegrations\u002Fjira",{"title":508,"_path":509},"Slack","\u002Fdocs\u002Fintegrations\u002Fslack",{"title":511,"_path":512},"SMS","\u002Fdocs\u002Fintegrations\u002Fsms",{"title":514,"_path":515},"Enable Banking (open banking)","\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":517,"_path":518},"CRM, marketing & productivité","\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":520,"_path":521},"HeyGen (vidéo)","\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":523,"_path":524},"La Poste","\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":526,"_path":527},"CRM métier (beTool Application, Qhare)","\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":529,"_path":530},"Mitti (inspections terrain)","\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":532,"_path":533},"Meta (Messenger, Pages, Meta Ads)","\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":535,"_path":536},"Onoff Business (Beta)","\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":538,"_path":539},"Smart Life \u002F Tuya (objets connectés)","\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":541,"_path":542},"Produits beTool (Desktop, Kiosk, Terminal)","\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":544,"_path":545,"children":546},"Cas d'usage","\u002Fdocs\u002Fcas-usage",[547,550,553,556,559,562],{"title":548,"_path":549},"Agents métier types","\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":551,"_path":552},"CFO IA","\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":554,"_path":555},"COO IA","\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":557,"_path":558},"CTO IA","\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":560,"_path":561},"Product Manager IA","\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":563,"_path":564},"Assistant personnel","\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]