[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fit\u002Fdocs\u002Fpipelines\u002Fcontrole-flux":3,"docs-nav-it":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},"\u002Fit\u002Fdocs\u002Fpipelines\u002Fcontrole-flux","pipelines",false,"","Controllo di flusso","Filtri, routing, loop, parallelismo — per governare i percorsi di esecuzione.",{"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","Oltre agli agent e agli operatori, betool fornisce ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"nodi di controllo",{"type":19,"value":28}," per strutturare la logica di una 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}," è una porta deterministica: l'esecuzione prosegue verso i nodi a valle se le sue condizioni sono soddisfatte, altrimenti il ramo si ferma lì.",{"type":14,"tag":15,"props":51,"children":52},{},[53],{"type":19,"value":54},"Configurazione:",{"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},"Condizioni",{"type":19,"value":69}," — ciascuna nella forma ",{"type":14,"tag":42,"props":71,"children":73},{"className":72},[],[74],{"type":19,"value":75},"{campo, operatore, valore}",{"type":19,"value":77},". Il campo è un selettore nel flusso (",{"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},"…); il valore è una stringa, che supporta i template.",{"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},"Combinatore",{"type":19,"value":103}," — ",{"type":14,"tag":42,"props":105,"children":107},{"className":106},[],[108],{"type":19,"value":109},"AND",{"type":19,"value":111}," (predefinito) oppure ",{"type":14,"tag":42,"props":113,"children":115},{"className":114},[],[116],{"type":19,"value":117},"OR",{"type":19,"value":119}," tra le condizioni.",{"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},"Operatori",{"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},", confronti numerici ",{"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},", appartenenza a un elenco ",{"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}," (valori separati da virgole). Un operatore sconosciuto viene rifiutato al salvataggio.",{"type":14,"tag":15,"props":239,"children":240},{},[241,243,249,251,257],{"type":19,"value":242},"Uso tipico: eliminare il rumore prima dei costi LLM a valle — ignorare le email il cui ",{"type":14,"tag":42,"props":244,"children":246},{"className":245},[],[247],{"type":19,"value":248},"from",{"type":19,"value":250}," è in una blacklist, o i webhook il cui ",{"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}," invia l'esecuzione verso una delle sue ",{"type":14,"tag":22,"props":277,"children":278},{},[279],{"type":19,"value":280},"route con nome",{"type":19,"value":282},". La decisione è presa da un LLM a partire da un prompt di routing e dal contesto che componi — per instradare in base a un'intenzione, una categoria, 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}," — l'istruzione di classificazione.",{"type":14,"tag":60,"props":301,"children":302},{},[303,308],{"type":14,"tag":22,"props":304,"children":305},{},[306],{"type":19,"value":307},"Route",{"type":19,"value":309}," — per ogni nome di route, il sottografo da eseguire. Ogni route dichiarata deve essere collegata, altrimenti la pubblicazione viene rifiutata.",{"type":14,"tag":60,"props":311,"children":312},{},[313,318],{"type":14,"tag":22,"props":314,"children":315},{},[316],{"type":19,"value":317},"Modello",{"type":19,"value":319}," — possibilità di dedicare un LLM leggero al routing (tiering) per tenere sotto controllo costi e latenza.",{"type":14,"tag":15,"props":321,"children":322},{},[323,325,330],{"type":19,"value":324},"Per un routing strettamente deterministico (valore esatto di un campo, stato HTTP), preferisci nodi ",{"type":14,"tag":42,"props":326,"children":328},{"className":327},[],[329],{"type":19,"value":47},{"type":19,"value":331}," disposti in parallelo: il predicato è allora meccanico, non interpretato.",{"type":14,"tag":30,"props":333,"children":335},{"id":334},"loop-foreach",[336],{"type":19,"value":337},"Loop (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 su una collezione. Configurazione:",{"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}," — il selettore della lista su cui iterare.",{"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}," — il nome locale dell'elemento corrente.",{"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}," — limite di iterazioni (predefinito 10): oltre, la lista viene troncata e l'evento registrato.",{"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}," — (facoltativo) la chiave in cui accumulare i risultati di ogni iterazione.",{"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}," — (facoltativo) cadenza massima, per distanziare le iterazioni quando il corpo del loop chiama un'API che limita il throughput. ",{"type":14,"tag":42,"props":424,"children":426},{"className":425},[],[427],{"type":19,"value":428},"0",{"type":19,"value":430}," (predefinito) = nessun limite.",{"type":14,"tag":15,"props":432,"children":433},{},[434],{"type":19,"value":435},"A ogni iterazione, il sottografo interno viene eseguito sull'elemento corrente.",{"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},"Il limite ",{"type":14,"tag":42,"props":447,"children":449},{"className":448},[],[450],{"type":19,"value":392},{"type":19,"value":452}," è la tua protezione sui costi: una lista inattesa di 10 000 elementi non innescherà mai 10 000 esecuzioni.",{"type":14,"tag":30,"props":454,"children":456},{"id":455},"parallelo",[457],{"type":19,"value":458},"Parallelo",{"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}," esegue più sottografi ",{"type":14,"tag":22,"props":472,"children":473},{},[474],{"type":19,"value":475},"in concorrenza",{"type":19,"value":477}," e attende che siano tutti terminati prima di proseguire. Utile per interrogare più sorgenti indipendenti (una ricerca CRM + una lettura del calendario) senza sommare le latenze.",{"type":14,"tag":30,"props":479,"children":481},{"id":480},"buone-pratiche",[482],{"type":19,"value":483},"Buone pratiche",{"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 presto.",{"type":19,"value":496}," Ogni exchange che attraversa un agent costa token; un ",{"type":14,"tag":42,"props":498,"children":500},{"className":499},[],[501],{"type":19,"value":47},{"type":19,"value":503}," a monte non costa nulla.",{"type":14,"tag":60,"props":505,"children":506},{},[507,512],{"type":14,"tag":22,"props":508,"children":509},{},[510],{"type":19,"value":511},"Mantieni il routing leggibile.",{"type":19,"value":513}," Un router con 12 route è il segnale che servono due livelli di classificazione piuttosto che una logica condensata.",{"type":14,"tag":60,"props":515,"children":516},{},[517,522],{"type":14,"tag":22,"props":518,"children":519},{},[520],{"type":19,"value":521},"Limita i loop annidati.",{"type":19,"value":523}," Un loop dentro un loop moltiplica i costi. Preferisci trasformare la collezione a monte.",{"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:it:docs:3.pipelines:4.controle-flux.md","content","it\u002Fdocs\u002F3.pipelines\u002F4.controle-flux.md","it\u002Fdocs\u002F3.pipelines\u002F4.controle-flux","md",[539],{"title":540,"_path":541,"children":542},"It","\u002Fit",[543],{"title":544,"_path":545,"children":546},"Docs","\u002Fit\u002Fdocs",[547,560,588,614,627,643,656,717],{"title":548,"_path":549,"children":550},"Per iniziare","\u002Fit\u002Fdocs\u002Fdemarrer",[551,554,557],{"title":552,"_path":553},"Benvenuto","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":555,"_path":556},"Creare un account","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":558,"_path":559},"Collegare una chiave LLM","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":561,"_path":562,"children":563},"Canali","\u002Fit\u002Fdocs\u002Fcanaux",[564,567,570,573,576,579,582,585],{"title":565,"_path":566},"Panoramica dei canali","\u002Fit\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":568,"_path":569},"Telefonia in tempo reale","\u002Fit\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":571,"_path":572},"Email","\u002Fit\u002Fdocs\u002Fcanaux\u002Femail",{"title":574,"_path":575},"Widget chat web","\u002Fit\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":577,"_path":578},"Webhook HTTP","\u002Fit\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":580,"_path":581},"Messaggistica (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fit\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":583,"_path":584},"Meta Lead Ads","\u002Fit\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":586,"_path":587},"Schedule (cron)","\u002Fit\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":589,"_path":590,"children":591},"Pipeline","\u002Fit\u002Fdocs\u002Fpipelines",[592,595,598,601,602,605,608,611],{"title":593,"_path":594},"L'editor visuale","\u002Fit\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":596,"_path":597},"Agenti IA","\u002Fit\u002Fdocs\u002Fpipelines\u002Fagents",{"title":599,"_path":600},"Operatori deterministici","\u002Fit\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":8,"_path":4},{"title":603,"_path":604},"Code Step","\u002Fit\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":606,"_path":607},"Sotto-pipeline","\u002Fit\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":609,"_path":610},"Azioni no-code","\u002Fit\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":612,"_path":613},"Base di conoscenza","\u002Fit\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":615,"_path":616,"children":617},"Supervisione","\u002Fit\u002Fdocs\u002Fsupervision",[618,621,624],{"title":619,"_path":620},"Cronologia delle esecuzioni","\u002Fit\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":622,"_path":623},"Crediti e metering","\u002Fit\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":625,"_path":626},"Benchmark","\u002Fit\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":628,"_path":629,"children":630},"Sicurezza","\u002Fit\u002Fdocs\u002Fsecurite",[631,634,637,640],{"title":632,"_path":633},"Principi di sicurezza","\u002Fit\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":635,"_path":636},"Multi-tenancy rigorosa","\u002Fit\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":638,"_path":639},"Audit RGPD e registro degli accessi","\u002Fit\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":641,"_path":642},"Deployment sovrano","\u002Fit\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":644,"_path":645,"children":646},"Sviluppatori","\u002Fit\u002Fdocs\u002Fdeveloppeurs",[647,650,653],{"title":648,"_path":649},"API Admin","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":651,"_path":652},"Webhook in uscita","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":654,"_path":655},"Pilotare betool da Claude (MCP)","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":657,"_path":658,"children":659},"Integrazioni","\u002Fit\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},"Panoramica delle integrazioni","\u002Fit\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":664,"_path":665},"Stripe","\u002Fit\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":667,"_path":668},"GitHub","\u002Fit\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":670,"_path":671},"Google","\u002Fit\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":673,"_path":674},"LinkedIn Ads","\u002Fit\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":676,"_path":677},"Kavkom","\u002Fit\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":679,"_path":680},"Jira","\u002Fit\u002Fdocs\u002Fintegrations\u002Fjira",{"title":682,"_path":683},"Slack","\u002Fit\u002Fdocs\u002Fintegrations\u002Fslack",{"title":685,"_path":686},"SMS","\u002Fit\u002Fdocs\u002Fintegrations\u002Fsms",{"title":688,"_path":689},"Enable Banking (open banking)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":691,"_path":692},"CRM, marketing e produttività","\u002Fit\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":694,"_path":695},"HeyGen (video)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":697,"_path":698},"La Poste","\u002Fit\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":700,"_path":701},"CRM verticali (beTool Application, Qhare)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":703,"_path":704},"Mitti (ispezioni sul campo)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":706,"_path":707},"Meta (Messenger, Pagine, Meta Ads)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":709,"_path":710},"Onoff Business (Beta)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":712,"_path":713},"Smart Life \u002F Tuya (oggetti connessi)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":715,"_path":716},"Prodotti beTool (Desktop, Kiosk, Terminal)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":718,"_path":719,"children":720},"Casi d'uso","\u002Fit\u002Fdocs\u002Fcas-usage",[721,724,727,730,733,736],{"title":722,"_path":723},"Agenti di business tipo","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":725,"_path":726},"CFO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":728,"_path":729},"COO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":731,"_path":732},"CTO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":734,"_path":735},"Product Manager IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":737,"_path":738},"Assistente personale","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]