[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fpipelines\u002Fcontrole-flux":3,"docs-nav-fr":539},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":533,"_id":534,"_source":535,"_file":536,"_stem":537,"_extension":538},"\u002Fdocs\u002Fpipelines\u002Fcontrole-flux","pipelines",false,"","Contrôle de flux","Filtres, routage, boucles, parallélisme — pour piloter les chemins d'exécution.",{"type":11,"children":12,"toc":525},"root",[13,29,36,50,55,238,259,265,284,288,321,333,339,351,432,437,454,460,479,485],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27],{"type":19,"value":20},"text","Au-delà des agents et opérateurs, betool fournit des ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"nœuds de contrôle",{"type":19,"value":28}," pour structurer la logique d'un pipeline.",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"filtre",[34],{"type":19,"value":35},"Filtre",{"type":14,"tag":15,"props":37,"children":38},{},[39,41,48],{"type":19,"value":40},"Un nœud ",{"type":14,"tag":42,"props":43,"children":45},"code",{"className":44},[],[46],{"type":19,"value":47},"filter",{"type":19,"value":49}," est une porte déterministe : l'exécution continue vers les nœuds aval si ses conditions sont satisfaites, sinon la branche s'arrête là.",{"type":14,"tag":15,"props":51,"children":52},{},[53],{"type":19,"value":54},"Configuration :",{"type":14,"tag":56,"props":57,"children":58},"ul",{},[59,94,120],{"type":14,"tag":60,"props":61,"children":62},"li",{},[63,68,70,76,78,84,86,92],{"type":14,"tag":22,"props":64,"children":65},{},[66],{"type":19,"value":67},"Conditions",{"type":19,"value":69}," — chacune de la forme ",{"type":14,"tag":42,"props":71,"children":73},{"className":72},[],[74],{"type":19,"value":75},"{champ, opérateur, valeur}",{"type":19,"value":77},". Le champ est un sélecteur dans le flux (",{"type":14,"tag":42,"props":79,"children":81},{"className":80},[],[82],{"type":19,"value":83},"exchange.intent",{"type":19,"value":85},", ",{"type":14,"tag":42,"props":87,"children":89},{"className":88},[],[90],{"type":19,"value":91},"webhook.payload.type",{"type":19,"value":93},"…) ; la valeur est une chaîne, templatable.",{"type":14,"tag":60,"props":95,"children":96},{},[97,102,104,110,112,118],{"type":14,"tag":22,"props":98,"children":99},{},[100],{"type":19,"value":101},"Combinateur",{"type":19,"value":103}," — ",{"type":14,"tag":42,"props":105,"children":107},{"className":106},[],[108],{"type":19,"value":109},"AND",{"type":19,"value":111}," (défaut) ou ",{"type":14,"tag":42,"props":113,"children":115},{"className":114},[],[116],{"type":19,"value":117},"OR",{"type":19,"value":119}," entre les conditions.",{"type":14,"tag":60,"props":121,"children":122},{},[123,128,129,135,137,143,144,150,151,157,158,164,165,171,172,178,179,185,186,192,194,200,201,207,208,214,215,221,223,229,230,236],{"type":14,"tag":22,"props":124,"children":125},{},[126],{"type":19,"value":127},"Opérateurs",{"type":19,"value":103},{"type":14,"tag":42,"props":130,"children":132},{"className":131},[],[133],{"type":19,"value":134},"equals",{"type":19,"value":136}," \u002F ",{"type":14,"tag":42,"props":138,"children":140},{"className":139},[],[141],{"type":19,"value":142},"not_equals",{"type":19,"value":85},{"type":14,"tag":42,"props":145,"children":147},{"className":146},[],[148],{"type":19,"value":149},"contains",{"type":19,"value":136},{"type":14,"tag":42,"props":152,"children":154},{"className":153},[],[155],{"type":19,"value":156},"not_contains",{"type":19,"value":85},{"type":14,"tag":42,"props":159,"children":161},{"className":160},[],[162],{"type":19,"value":163},"starts_with",{"type":19,"value":85},{"type":14,"tag":42,"props":166,"children":168},{"className":167},[],[169],{"type":19,"value":170},"ends_with",{"type":19,"value":85},{"type":14,"tag":42,"props":173,"children":175},{"className":174},[],[176],{"type":19,"value":177},"regex",{"type":19,"value":85},{"type":14,"tag":42,"props":180,"children":182},{"className":181},[],[183],{"type":19,"value":184},"is_empty",{"type":19,"value":136},{"type":14,"tag":42,"props":187,"children":189},{"className":188},[],[190],{"type":19,"value":191},"is_not_empty",{"type":19,"value":193},", comparaisons numériques ",{"type":14,"tag":42,"props":195,"children":197},{"className":196},[],[198],{"type":19,"value":199},"gt",{"type":19,"value":136},{"type":14,"tag":42,"props":202,"children":204},{"className":203},[],[205],{"type":19,"value":206},"gte",{"type":19,"value":136},{"type":14,"tag":42,"props":209,"children":211},{"className":210},[],[212],{"type":19,"value":213},"lt",{"type":19,"value":136},{"type":14,"tag":42,"props":216,"children":218},{"className":217},[],[219],{"type":19,"value":220},"lte",{"type":19,"value":222},", appartenance à une liste ",{"type":14,"tag":42,"props":224,"children":226},{"className":225},[],[227],{"type":19,"value":228},"in",{"type":19,"value":136},{"type":14,"tag":42,"props":231,"children":233},{"className":232},[],[234],{"type":19,"value":235},"not_in",{"type":19,"value":237}," (valeurs séparées par des virgules). Un opérateur inconnu est refusé à l'enregistrement.",{"type":14,"tag":15,"props":239,"children":240},{},[241,243,249,251,257],{"type":19,"value":242},"Utilisation typique : éliminer le bruit avant les coûts LLM downstream — ignorer les emails dont le ",{"type":14,"tag":42,"props":244,"children":246},{"className":245},[],[247],{"type":19,"value":248},"from",{"type":19,"value":250}," est dans une blacklist, ou les webhooks dont ",{"type":14,"tag":42,"props":252,"children":254},{"className":253},[],[255],{"type":19,"value":256},"type != \"order.created\"",{"type":19,"value":258},".",{"type":14,"tag":30,"props":260,"children":262},{"id":261},"routeur",[263],{"type":19,"value":264},"Routeur",{"type":14,"tag":15,"props":266,"children":267},{},[268,269,275,277,282],{"type":19,"value":40},{"type":14,"tag":42,"props":270,"children":272},{"className":271},[],[273],{"type":19,"value":274},"router",{"type":19,"value":276}," envoie l'exécution vers une de ses ",{"type":14,"tag":22,"props":278,"children":279},{},[280],{"type":19,"value":281},"routes nommées",{"type":19,"value":283},". La décision est prise par un LLM à partir d'un prompt de routage et du contexte que vous composez — pour router selon une intention, une catégorie, un ton.",{"type":14,"tag":15,"props":285,"children":286},{},[287],{"type":19,"value":54},{"type":14,"tag":56,"props":289,"children":290},{},[291,301,311],{"type":14,"tag":60,"props":292,"children":293},{},[294,299],{"type":14,"tag":22,"props":295,"children":296},{},[297],{"type":19,"value":298},"Prompt",{"type":19,"value":300}," — la consigne de classement.",{"type":14,"tag":60,"props":302,"children":303},{},[304,309],{"type":14,"tag":22,"props":305,"children":306},{},[307],{"type":19,"value":308},"Routes",{"type":19,"value":310}," — pour chaque nom de route, le sous-graphe à exécuter. Chaque route déclarée doit être câblée, sinon la publication est refusée.",{"type":14,"tag":60,"props":312,"children":313},{},[314,319],{"type":14,"tag":22,"props":315,"children":316},{},[317],{"type":19,"value":318},"Modèle",{"type":19,"value":320}," — possibilité de dédier un LLM léger au routage (tiering) pour maîtriser coût et latence.",{"type":14,"tag":15,"props":322,"children":323},{},[324,326,331],{"type":19,"value":325},"Pour un routage strictement déterministe (valeur exacte d'un champ, statut HTTP), préférez des nœuds ",{"type":14,"tag":42,"props":327,"children":329},{"className":328},[],[330],{"type":19,"value":47},{"type":19,"value":332}," posés en parallèle : le prédicat est alors mécanique, pas interprété.",{"type":14,"tag":30,"props":334,"children":336},{"id":335},"boucle-foreach",[337],{"type":19,"value":338},"Boucle (foreach)",{"type":14,"tag":15,"props":340,"children":341},{},[342,343,349],{"type":19,"value":40},{"type":14,"tag":42,"props":344,"children":346},{"className":345},[],[347],{"type":19,"value":348},"foreach",{"type":19,"value":350}," itère sur une collection. Configuration :",{"type":14,"tag":56,"props":352,"children":353},{},[354,368,382,396,410],{"type":14,"tag":60,"props":355,"children":356},{},[357,366],{"type":14,"tag":22,"props":358,"children":359},{},[360],{"type":14,"tag":42,"props":361,"children":363},{"className":362},[],[364],{"type":19,"value":365},"items",{"type":19,"value":367}," — le sélecteur de la liste sur laquelle itérer.",{"type":14,"tag":60,"props":369,"children":370},{},[371,380],{"type":14,"tag":22,"props":372,"children":373},{},[374],{"type":14,"tag":42,"props":375,"children":377},{"className":376},[],[378],{"type":19,"value":379},"as",{"type":19,"value":381}," — le nom local de l'élément courant.",{"type":14,"tag":60,"props":383,"children":384},{},[385,394],{"type":14,"tag":22,"props":386,"children":387},{},[388],{"type":14,"tag":42,"props":389,"children":391},{"className":390},[],[392],{"type":19,"value":393},"max",{"type":19,"value":395}," — plafond d'itérations (défaut 10) : au-delà, la liste est tronquée et l'événement journalisé.",{"type":14,"tag":60,"props":397,"children":398},{},[399,408],{"type":14,"tag":22,"props":400,"children":401},{},[402],{"type":14,"tag":42,"props":403,"children":405},{"className":404},[],[406],{"type":19,"value":407},"collect",{"type":19,"value":409}," — (optionnel) la clé où accumuler les résultats de chaque itération.",{"type":14,"tag":60,"props":411,"children":412},{},[413,422,424,430],{"type":14,"tag":22,"props":414,"children":415},{},[416],{"type":14,"tag":42,"props":417,"children":419},{"className":418},[],[420],{"type":19,"value":421},"max_per_minute",{"type":19,"value":423}," — (optionnel) cadence maximale, pour espacer les itérations quand le corps de boucle appelle une API qui plafonne le débit. ",{"type":14,"tag":42,"props":425,"children":427},{"className":426},[],[428],{"type":19,"value":429},"0",{"type":19,"value":431}," (défaut) = aucune limite.",{"type":14,"tag":15,"props":433,"children":434},{},[435],{"type":19,"value":436},"À chaque tour, le sous-graphe interne s'exécute sur l'élément courant.",{"type":14,"tag":438,"props":439,"children":441},"alert",{"type":440},"warning",[442],{"type":14,"tag":15,"props":443,"children":444},{},[445,447,452],{"type":19,"value":446},"Le plafond ",{"type":14,"tag":42,"props":448,"children":450},{"className":449},[],[451],{"type":19,"value":393},{"type":19,"value":453}," est votre garde-fou de coût : une liste inattendue de 10 000 éléments ne déclenchera jamais 10 000 exécutions.",{"type":14,"tag":30,"props":455,"children":457},{"id":456},"parallèle",[458],{"type":19,"value":459},"Parallèle",{"type":14,"tag":15,"props":461,"children":462},{},[463,464,470,472,477],{"type":19,"value":40},{"type":14,"tag":42,"props":465,"children":467},{"className":466},[],[468],{"type":19,"value":469},"parallel",{"type":19,"value":471}," exécute plusieurs sous-graphes ",{"type":14,"tag":22,"props":473,"children":474},{},[475],{"type":19,"value":476},"en concurrence",{"type":19,"value":478}," et attend qu'ils aient tous terminé avant de continuer. Utile pour interroger plusieurs sources indépendantes (une recherche CRM + une lecture d'agenda) sans additionner les latences.",{"type":14,"tag":30,"props":480,"children":482},{"id":481},"bonnes-pratiques",[483],{"type":19,"value":484},"Bonnes pratiques",{"type":14,"tag":56,"props":486,"children":487},{},[488,505,515],{"type":14,"tag":60,"props":489,"children":490},{},[491,496,498,503],{"type":14,"tag":22,"props":492,"children":493},{},[494],{"type":19,"value":495},"Filtrez tôt.",{"type":19,"value":497}," Chaque exchange qui traverse un agent coûte des tokens ; un ",{"type":14,"tag":42,"props":499,"children":501},{"className":500},[],[502],{"type":19,"value":47},{"type":19,"value":504}," en amont ne coûte rien.",{"type":14,"tag":60,"props":506,"children":507},{},[508,513],{"type":14,"tag":22,"props":509,"children":510},{},[511],{"type":19,"value":512},"Gardez le routage lisible.",{"type":19,"value":514}," Un routeur à 12 routes est le signe qu'il faut deux étages de classification plutôt qu'une logique condensée.",{"type":14,"tag":60,"props":516,"children":517},{},[518,523],{"type":14,"tag":22,"props":519,"children":520},{},[521],{"type":19,"value":522},"Limitez les boucles imbriquées.",{"type":19,"value":524}," Une boucle dans une boucle multiplie les coûts. Préférez transformer la collection en amont.",{"title":7,"searchDepth":526,"depth":526,"links":527},2,[528,529,530,531,532],{"id":32,"depth":526,"text":35},{"id":261,"depth":526,"text":264},{"id":335,"depth":526,"text":338},{"id":456,"depth":526,"text":459},{"id":481,"depth":526,"text":484},"markdown","content:docs:3.pipelines:4.controle-flux.md","content","docs\u002F3.pipelines\u002F4.controle-flux.md","docs\u002F3.pipelines\u002F4.controle-flux","md",[540],{"title":541,"_path":542,"children":543},"Docs","\u002Fdocs",[544,557,585,611,624,640,653,714],{"title":545,"_path":546,"children":547},"Démarrer","\u002Fdocs\u002Fdemarrer",[548,551,554],{"title":549,"_path":550},"Bienvenue","\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":552,"_path":553},"Créer un compte","\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":555,"_path":556},"Brancher une clé LLM","\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":558,"_path":559,"children":560},"Canaux","\u002Fdocs\u002Fcanaux",[561,564,567,570,573,576,579,582],{"title":562,"_path":563},"Vue d'ensemble des canaux","\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":565,"_path":566},"Téléphonie temps réel","\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":568,"_path":569},"Email","\u002Fdocs\u002Fcanaux\u002Femail",{"title":571,"_path":572},"Chat widget web","\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":574,"_path":575},"Webhook HTTP","\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":577,"_path":578},"Messageries (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":580,"_path":581},"Meta Lead Ads","\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":583,"_path":584},"Planification (cron)","\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":586,"_path":587,"children":588},"Pipelines","\u002Fdocs\u002Fpipelines",[589,592,595,598,599,602,605,608],{"title":590,"_path":591},"L'éditeur visuel","\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":593,"_path":594},"Agents IA","\u002Fdocs\u002Fpipelines\u002Fagents",{"title":596,"_path":597},"Opérateurs déterministes","\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":8,"_path":4},{"title":600,"_path":601},"Étapes de code","\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":603,"_path":604},"Sous-pipelines","\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":606,"_path":607},"Actions sans code","\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":609,"_path":610},"Base de connaissances","\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":612,"_path":613,"children":614},"Supervision","\u002Fdocs\u002Fsupervision",[615,618,621],{"title":616,"_path":617},"Historique d'exécutions","\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":619,"_path":620},"Crédits & metering","\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":622,"_path":623},"Benchmarks","\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":625,"_path":626,"children":627},"Sécurité","\u002Fdocs\u002Fsecurite",[628,631,634,637],{"title":629,"_path":630},"Principes de sécurité","\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":632,"_path":633},"Multi-tenant strict","\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":635,"_path":636},"Audit RGPD & journal d'accès","\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":638,"_path":639},"Déploiement souverain","\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":641,"_path":642,"children":643},"Développeurs","\u002Fdocs\u002Fdeveloppeurs",[644,647,650],{"title":645,"_path":646},"API admin","\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":648,"_path":649},"Webhooks sortants","\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":651,"_path":652},"Piloter betool depuis Claude (MCP)","\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":654,"_path":655,"children":656},"Intégrations","\u002Fdocs\u002Fintegrations",[657,660,663,666,669,672,675,678,681,684,687,690,693,696,699,702,705,708,711],{"title":658,"_path":659},"Vue d'ensemble des intégrations","\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":661,"_path":662},"Stripe","\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":664,"_path":665},"GitHub","\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":667,"_path":668},"Google","\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":670,"_path":671},"LinkedIn Ads","\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":673,"_path":674},"Kavkom","\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":676,"_path":677},"Jira","\u002Fdocs\u002Fintegrations\u002Fjira",{"title":679,"_path":680},"Slack","\u002Fdocs\u002Fintegrations\u002Fslack",{"title":682,"_path":683},"SMS","\u002Fdocs\u002Fintegrations\u002Fsms",{"title":685,"_path":686},"Enable Banking (open banking)","\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":688,"_path":689},"CRM, marketing & productivité","\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":691,"_path":692},"HeyGen (vidéo)","\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":694,"_path":695},"La Poste","\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":697,"_path":698},"CRM métier (beTool Application, Qhare)","\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":700,"_path":701},"Mitti (inspections terrain)","\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":703,"_path":704},"Meta (Messenger, Pages, Meta Ads)","\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":706,"_path":707},"Onoff Business (Beta)","\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":709,"_path":710},"Smart Life \u002F Tuya (objets connectés)","\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":712,"_path":713},"Produits beTool (Desktop, Kiosk, Terminal)","\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":715,"_path":716,"children":717},"Cas d'usage","\u002Fdocs\u002Fcas-usage",[718,721,724,727,730,733],{"title":719,"_path":720},"Agents métier types","\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":722,"_path":723},"CFO IA","\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":725,"_path":726},"COO IA","\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":728,"_path":729},"CTO IA","\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":731,"_path":732},"Product Manager IA","\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":734,"_path":735},"Assistant personnel","\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]