[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fes\u002Fdocs\u002Fpipelines\u002Fcontrole-flux":3,"docs-nav-es":538},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":532,"_id":533,"_source":534,"_file":535,"_stem":536,"_extension":537},"\u002Fes\u002Fdocs\u002Fpipelines\u002Fcontrole-flux","pipelines",false,"","Control de flujo","Filtros, enrutamiento, bucles, paralelismo — para gobernar las rutas de ejecución.",{"type":11,"children":12,"toc":524},"root",[13,29,36,50,55,238,259,265,283,287,320,332,338,350,431,436,453,459,478,484],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27],{"type":19,"value":20},"text","Más allá de los agentes y los operadores, betool proporciona ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"nodos de control",{"type":19,"value":28}," para estructurar la lógica de un pipeline.",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"filtro",[34],{"type":19,"value":35},"Filtro",{"type":14,"tag":15,"props":37,"children":38},{},[39,41,48],{"type":19,"value":40},"Un nodo ",{"type":14,"tag":42,"props":43,"children":45},"code",{"className":44},[],[46],{"type":19,"value":47},"filter",{"type":19,"value":49}," es una puerta determinista: la ejecución continúa hacia los nodos aguas abajo si se cumplen sus condiciones; si no, la rama se detiene ahí.",{"type":14,"tag":15,"props":51,"children":52},{},[53],{"type":19,"value":54},"Configuración:",{"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},"Condiciones",{"type":19,"value":69}," — cada una con la forma ",{"type":14,"tag":42,"props":71,"children":73},{"className":72},[],[74],{"type":19,"value":75},"{campo, operador, valor}",{"type":19,"value":77},". El campo es un selector en el flujo (",{"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},"…); el valor es una cadena, admite plantillas.",{"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},"Combinador",{"type":19,"value":103}," — ",{"type":14,"tag":42,"props":105,"children":107},{"className":106},[],[108],{"type":19,"value":109},"AND",{"type":19,"value":111}," (por defecto) u ",{"type":14,"tag":42,"props":113,"children":115},{"className":114},[],[116],{"type":19,"value":117},"OR",{"type":19,"value":119}," entre las condiciones.",{"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},"Operadores",{"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},", comparaciones numéricas ",{"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},", pertenencia a una lista ",{"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}," (valores separados por comas). Un operador desconocido se rechaza al guardar.",{"type":14,"tag":15,"props":239,"children":240},{},[241,243,249,251,257],{"type":19,"value":242},"Uso típico: eliminar el ruido antes de los costes de LLM aguas abajo — ignorar los correos cuyo ",{"type":14,"tag":42,"props":244,"children":246},{"className":245},[],[247],{"type":19,"value":248},"from",{"type":19,"value":250}," esté en una lista de bloqueo, o los webhooks cuyo ",{"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},"router",[263],{"type":19,"value":264},"Router",{"type":14,"tag":15,"props":266,"children":267},{},[268,269,274,276,281],{"type":19,"value":40},{"type":14,"tag":42,"props":270,"children":272},{"className":271},[],[273],{"type":19,"value":261},{"type":19,"value":275}," envía la ejecución hacia una de sus ",{"type":14,"tag":22,"props":277,"children":278},{},[279],{"type":19,"value":280},"rutas con nombre",{"type":19,"value":282},". La decisión la toma un LLM a partir de un prompt de enrutamiento y del contexto que compones — para enrutar según una intención, una categoría, un tono.",{"type":14,"tag":15,"props":284,"children":285},{},[286],{"type":19,"value":54},{"type":14,"tag":56,"props":288,"children":289},{},[290,300,310],{"type":14,"tag":60,"props":291,"children":292},{},[293,298],{"type":14,"tag":22,"props":294,"children":295},{},[296],{"type":19,"value":297},"Prompt",{"type":19,"value":299}," — la instrucción de clasificación.",{"type":14,"tag":60,"props":301,"children":302},{},[303,308],{"type":14,"tag":22,"props":304,"children":305},{},[306],{"type":19,"value":307},"Rutas",{"type":19,"value":309}," — para cada nombre de ruta, el subgrafo que se ejecuta. Cada ruta declarada debe estar cableada; si no, se rechaza la publicación.",{"type":14,"tag":60,"props":311,"children":312},{},[313,318],{"type":14,"tag":22,"props":314,"children":315},{},[316],{"type":19,"value":317},"Modelo",{"type":19,"value":319}," — posibilidad de dedicar un LLM ligero al enrutamiento (tiering) para controlar el coste y la latencia.",{"type":14,"tag":15,"props":321,"children":322},{},[323,325,330],{"type":19,"value":324},"Para un enrutamiento estrictamente determinista (valor exacto de un campo, estado HTTP), prefiere nodos ",{"type":14,"tag":42,"props":326,"children":328},{"className":327},[],[329],{"type":19,"value":47},{"type":19,"value":331}," colocados en paralelo: el predicado es entonces mecánico, no interpretado.",{"type":14,"tag":30,"props":333,"children":335},{"id":334},"bucle-foreach",[336],{"type":19,"value":337},"Bucle (foreach)",{"type":14,"tag":15,"props":339,"children":340},{},[341,342,348],{"type":19,"value":40},{"type":14,"tag":42,"props":343,"children":345},{"className":344},[],[346],{"type":19,"value":347},"foreach",{"type":19,"value":349}," itera sobre una colección. Configuración:",{"type":14,"tag":56,"props":351,"children":352},{},[353,367,381,395,409],{"type":14,"tag":60,"props":354,"children":355},{},[356,365],{"type":14,"tag":22,"props":357,"children":358},{},[359],{"type":14,"tag":42,"props":360,"children":362},{"className":361},[],[363],{"type":19,"value":364},"items",{"type":19,"value":366}," — el selector de la lista sobre la que iterar.",{"type":14,"tag":60,"props":368,"children":369},{},[370,379],{"type":14,"tag":22,"props":371,"children":372},{},[373],{"type":14,"tag":42,"props":374,"children":376},{"className":375},[],[377],{"type":19,"value":378},"as",{"type":19,"value":380}," — el nombre local del elemento actual.",{"type":14,"tag":60,"props":382,"children":383},{},[384,393],{"type":14,"tag":22,"props":385,"children":386},{},[387],{"type":14,"tag":42,"props":388,"children":390},{"className":389},[],[391],{"type":19,"value":392},"max",{"type":19,"value":394}," — límite de iteraciones (por defecto 10): por encima, la lista se trunca y el evento se registra.",{"type":14,"tag":60,"props":396,"children":397},{},[398,407],{"type":14,"tag":22,"props":399,"children":400},{},[401],{"type":14,"tag":42,"props":402,"children":404},{"className":403},[],[405],{"type":19,"value":406},"collect",{"type":19,"value":408}," — (opcional) la clave donde acumular los resultados de cada iteración.",{"type":14,"tag":60,"props":410,"children":411},{},[412,421,423,429],{"type":14,"tag":22,"props":413,"children":414},{},[415],{"type":14,"tag":42,"props":416,"children":418},{"className":417},[],[419],{"type":19,"value":420},"max_per_minute",{"type":19,"value":422}," — (opcional) cadencia máxima, para espaciar las iteraciones cuando el cuerpo del bucle llama a una API que limita el caudal. ",{"type":14,"tag":42,"props":424,"children":426},{"className":425},[],[427],{"type":19,"value":428},"0",{"type":19,"value":430}," (por defecto) = sin límite.",{"type":14,"tag":15,"props":432,"children":433},{},[434],{"type":19,"value":435},"En cada vuelta, el subgrafo interno se ejecuta sobre el elemento actual.",{"type":14,"tag":437,"props":438,"children":440},"alert",{"type":439},"warning",[441],{"type":14,"tag":15,"props":442,"children":443},{},[444,446,451],{"type":19,"value":445},"El límite ",{"type":14,"tag":42,"props":447,"children":449},{"className":448},[],[450],{"type":19,"value":392},{"type":19,"value":452}," es tu salvaguarda de coste: una lista inesperada de 10 000 elementos nunca disparará 10 000 ejecuciones.",{"type":14,"tag":30,"props":454,"children":456},{"id":455},"paralelo",[457],{"type":19,"value":458},"Paralelo",{"type":14,"tag":15,"props":460,"children":461},{},[462,463,469,471,476],{"type":19,"value":40},{"type":14,"tag":42,"props":464,"children":466},{"className":465},[],[467],{"type":19,"value":468},"parallel",{"type":19,"value":470}," ejecuta varios subgrafos ",{"type":14,"tag":22,"props":472,"children":473},{},[474],{"type":19,"value":475},"de forma concurrente",{"type":19,"value":477}," y espera a que todos hayan terminado antes de continuar. Útil para consultar varias fuentes independientes (una búsqueda en el CRM + una lectura de agenda) sin sumar las latencias.",{"type":14,"tag":30,"props":479,"children":481},{"id":480},"buenas-prácticas",[482],{"type":19,"value":483},"Buenas prácticas",{"type":14,"tag":56,"props":485,"children":486},{},[487,504,514],{"type":14,"tag":60,"props":488,"children":489},{},[490,495,497,502],{"type":14,"tag":22,"props":491,"children":492},{},[493],{"type":19,"value":494},"Filtra pronto.",{"type":19,"value":496}," Cada exchange que atraviesa un agente cuesta tokens; un ",{"type":14,"tag":42,"props":498,"children":500},{"className":499},[],[501],{"type":19,"value":47},{"type":19,"value":503}," aguas arriba no cuesta nada.",{"type":14,"tag":60,"props":505,"children":506},{},[507,512],{"type":14,"tag":22,"props":508,"children":509},{},[510],{"type":19,"value":511},"Mantén el enrutamiento legible.",{"type":19,"value":513}," Un router con 12 rutas es señal de que hacen falta dos niveles de clasificación en lugar de una lógica condensada.",{"type":14,"tag":60,"props":515,"children":516},{},[517,522],{"type":14,"tag":22,"props":518,"children":519},{},[520],{"type":19,"value":521},"Limita los bucles anidados.",{"type":19,"value":523}," Un bucle dentro de un bucle multiplica los costes. Prefiere transformar la colección aguas arriba.",{"title":7,"searchDepth":525,"depth":525,"links":526},2,[527,528,529,530,531],{"id":32,"depth":525,"text":35},{"id":261,"depth":525,"text":264},{"id":334,"depth":525,"text":337},{"id":455,"depth":525,"text":458},{"id":480,"depth":525,"text":483},"markdown","content:es:docs:3.pipelines:4.controle-flux.md","content","es\u002Fdocs\u002F3.pipelines\u002F4.controle-flux.md","es\u002Fdocs\u002F3.pipelines\u002F4.controle-flux","md",[539],{"title":540,"_path":541,"children":542},"Es","\u002Fes",[543],{"title":544,"_path":545,"children":546},"Docs","\u002Fes\u002Fdocs",[547,560,588,614,627,643,656,717],{"title":548,"_path":549,"children":550},"Primeros pasos","\u002Fes\u002Fdocs\u002Fdemarrer",[551,554,557],{"title":552,"_path":553},"Bienvenido","\u002Fes\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":555,"_path":556},"Crear una cuenta","\u002Fes\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":558,"_path":559},"Conectar una clave LLM","\u002Fes\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":561,"_path":562,"children":563},"Canales","\u002Fes\u002Fdocs\u002Fcanaux",[564,567,570,573,576,579,582,585],{"title":565,"_path":566},"Visión general de los canales","\u002Fes\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":568,"_path":569},"Telefonía en tiempo real","\u002Fes\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":571,"_path":572},"Email","\u002Fes\u002Fdocs\u002Fcanaux\u002Femail",{"title":574,"_path":575},"Widget de chat web","\u002Fes\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":577,"_path":578},"Webhook HTTP","\u002Fes\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":580,"_path":581},"Mensajería (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fes\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":583,"_path":584},"Meta Lead Ads","\u002Fes\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":586,"_path":587},"Schedule (cron)","\u002Fes\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":589,"_path":590,"children":591},"Pipelines","\u002Fes\u002Fdocs\u002Fpipelines",[592,595,598,601,602,605,608,611],{"title":593,"_path":594},"El editor visual","\u002Fes\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":596,"_path":597},"Agentes IA","\u002Fes\u002Fdocs\u002Fpipelines\u002Fagents",{"title":599,"_path":600},"Operadores deterministas","\u002Fes\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":8,"_path":4},{"title":603,"_path":604},"Code Steps","\u002Fes\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":606,"_path":607},"Sub-pipelines","\u002Fes\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":609,"_path":610},"Acciones no-code","\u002Fes\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":612,"_path":613},"Base de conocimiento","\u002Fes\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":615,"_path":616,"children":617},"Supervisión","\u002Fes\u002Fdocs\u002Fsupervision",[618,621,624],{"title":619,"_path":620},"Historial de ejecuciones","\u002Fes\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":622,"_path":623},"Créditos y medición","\u002Fes\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":625,"_path":626},"Benchmarks","\u002Fes\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":628,"_path":629,"children":630},"Seguridad","\u002Fes\u002Fdocs\u002Fsecurite",[631,634,637,640],{"title":632,"_path":633},"Principios de seguridad","\u002Fes\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":635,"_path":636},"Multi-tenancy estricto","\u002Fes\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":638,"_path":639},"Auditoría RGPD y registro de accesos","\u002Fes\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":641,"_path":642},"Despliegue soberano","\u002Fes\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":644,"_path":645,"children":646},"Desarrolladores","\u002Fes\u002Fdocs\u002Fdeveloppeurs",[647,650,653],{"title":648,"_path":649},"API de administración","\u002Fes\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":651,"_path":652},"Webhooks salientes","\u002Fes\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":654,"_path":655},"Pilota betool desde Claude (MCP)","\u002Fes\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":657,"_path":658,"children":659},"Integraciones","\u002Fes\u002Fdocs\u002Fintegrations",[660,663,666,669,672,675,678,681,684,687,690,693,696,699,702,705,708,711,714],{"title":661,"_path":662},"Visión general de las integraciones","\u002Fes\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":664,"_path":665},"Stripe","\u002Fes\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":667,"_path":668},"GitHub","\u002Fes\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":670,"_path":671},"Google","\u002Fes\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":673,"_path":674},"LinkedIn Ads","\u002Fes\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":676,"_path":677},"Kavkom","\u002Fes\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":679,"_path":680},"Jira","\u002Fes\u002Fdocs\u002Fintegrations\u002Fjira",{"title":682,"_path":683},"Slack","\u002Fes\u002Fdocs\u002Fintegrations\u002Fslack",{"title":685,"_path":686},"SMS","\u002Fes\u002Fdocs\u002Fintegrations\u002Fsms",{"title":688,"_path":689},"Enable Banking (open banking)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":691,"_path":692},"CRM, marketing y productividad","\u002Fes\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":694,"_path":695},"HeyGen (vídeo)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":697,"_path":698},"La Poste","\u002Fes\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":700,"_path":701},"CRM de negocio (beTool Application, Qhare)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":703,"_path":704},"Mitti (inspecciones de campo)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":706,"_path":707},"Meta (Messenger, Páginas, Meta Ads)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":709,"_path":710},"Onoff Business (Beta)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":712,"_path":713},"Smart Life \u002F Tuya (objetos conectados)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":715,"_path":716},"Productos beTool (Desktop, Kiosk, Terminal)","\u002Fes\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":718,"_path":719,"children":720},"Casos de uso","\u002Fes\u002Fdocs\u002Fcas-usage",[721,724,727,730,733,736],{"title":722,"_path":723},"Agentes de negocio tipo","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":725,"_path":726},"CFO IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":728,"_path":729},"COO IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":731,"_path":732},"CTO IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":734,"_path":735},"Product Manager IA","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":737,"_path":738},"Asistente personal","\u002Fes\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]