[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fit\u002Fdocs\u002Fpipelines\u002Foperateurs":3,"docs-nav-it":1354},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":1348,"_id":1349,"_source":1350,"_file":1351,"_stem":1352,"_extension":1353},"\u002Fit\u002Fdocs\u002Fpipelines\u002Foperateurs","pipelines",false,"","Operatori deterministici","Nodi di azione che aggirano il LLM — HTTP, DB, trasformazioni, calcoli.",{"type":11,"children":12,"toc":1324},"root",[13,36,43,55,60,66,80,85,198,216,263,272,277,342,354,389,527,584,636,660,669,674,797,803,858,867,886,927,936,972,977,982,1014,1026,1035,1061,1067,1086,1091,1152,1165,1213,1254,1259,1265,1270,1298],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27,29,34],{"type":19,"value":20},"text","Un ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"operator",{"type":19,"value":28}," è un nodo che esegue un'azione ",{"type":14,"tag":22,"props":30,"children":31},{},[32],{"type":19,"value":33},"deterministica",{"type":19,"value":35},": nessun LLM, nessuna casualità. Per un dato input, l'output è prevedibile.",{"type":14,"tag":37,"props":38,"children":40},"h2",{"id":39},"perché-usarli",[41],{"type":19,"value":42},"Perché usarli",{"type":14,"tag":15,"props":44,"children":45},{},[46,48,53],{"type":19,"value":47},"Qualsiasi logica che può essere scritta esplicitamente ",{"type":14,"tag":22,"props":49,"children":50},{},[51],{"type":19,"value":52},"dovrebbe",{"type":19,"value":54}," esserlo. Un LLM che \"calcola un totale\" o \"formatta una data\" è un anti-pattern: è più lento, più costoso e può commettere errori.",{"type":14,"tag":15,"props":56,"children":57},{},[58],{"type":19,"value":59},"Regola pratica: se puoi scrivere la funzione in 5 righe di Python, è un operator — non un agent.",{"type":14,"tag":37,"props":61,"children":63},{"id":62},"tipi-disponibili",[64],{"type":19,"value":65},"Tipi disponibili",{"type":14,"tag":67,"props":68,"children":70},"h3",{"id":69},"webhook_action-chiamata-http",[71,78],{"type":14,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":19,"value":77},"webhook_action",{"type":19,"value":79}," (chiamata HTTP)",{"type":14,"tag":15,"props":81,"children":82},{},[83],{"type":19,"value":84},"Effettua una chiamata HTTP in uscita. Configurazione:",{"type":14,"tag":86,"props":87,"children":88},"ul",{},[89,95,145,180,193],{"type":14,"tag":90,"props":91,"children":92},"li",{},[93],{"type":19,"value":94},"URL, metodo, header e parametri di query (con placeholder dal contesto)",{"type":14,"tag":90,"props":96,"children":97},{},[98,100,106,108,114,115,121,122,128,129,135,137,143],{"type":19,"value":99},"Body: ",{"type":14,"tag":72,"props":101,"children":103},{"className":102},[],[104],{"type":19,"value":105},"none",{"type":19,"value":107},", ",{"type":14,"tag":72,"props":109,"children":111},{"className":110},[],[112],{"type":19,"value":113},"json",{"type":19,"value":107},{"type":14,"tag":72,"props":116,"children":118},{"className":117},[],[119],{"type":19,"value":120},"form",{"type":19,"value":107},{"type":14,"tag":72,"props":123,"children":125},{"className":124},[],[126],{"type":19,"value":127},"raw",{"type":19,"value":107},{"type":14,"tag":72,"props":130,"children":132},{"className":131},[],[133],{"type":19,"value":134},"multipart",{"type":19,"value":136}," o ",{"type":14,"tag":72,"props":138,"children":140},{"className":139},[],[141],{"type":19,"value":142},"mapper",{"type":19,"value":144}," (body composto dal linguaggio di mapping, vedi sotto)",{"type":14,"tag":90,"props":146,"children":147},{},[148,150,156,157,163,164,170,172,178],{"type":19,"value":149},"Autenticazione: ",{"type":14,"tag":72,"props":151,"children":153},{"className":152},[],[154],{"type":19,"value":155},"bearer",{"type":19,"value":107},{"type":14,"tag":72,"props":158,"children":160},{"className":159},[],[161],{"type":19,"value":162},"basic",{"type":19,"value":107},{"type":14,"tag":72,"props":165,"children":167},{"className":166},[],[168],{"type":19,"value":169},"api_key_header",{"type":19,"value":171}," (header personalizzato) o ",{"type":14,"tag":72,"props":173,"children":175},{"className":174},[],[176],{"type":19,"value":177},"oauth2",{"type":19,"value":179}," (vedi sotto)",{"type":14,"tag":90,"props":181,"children":182},{},[183,185,191],{"type":19,"value":184},"Stati HTTP accettati, tempo massimo e numero di nuovi tentativi (",{"type":14,"tag":72,"props":186,"children":188},{"className":187},[],[189],{"type":19,"value":190},"retry_count",{"type":19,"value":192},", 0 per impostazione predefinita, backoff esponenziale)",{"type":14,"tag":90,"props":194,"children":195},{},[196],{"type":19,"value":197},"Chiave di output in cui viene pubblicata la risposta",{"type":14,"tag":67,"props":199,"children":201},{"id":200},"database_query-database_manage",[202,208,210],{"type":14,"tag":72,"props":203,"children":205},{"className":204},[],[206],{"type":19,"value":207},"database_query",{"type":19,"value":209}," \u002F ",{"type":14,"tag":72,"props":211,"children":213},{"className":212},[],[214],{"type":19,"value":215},"database_manage",{"type":14,"tag":15,"props":217,"children":218},{},[219,224,226,231,233,239,241,246,248,254,255,261],{"type":14,"tag":72,"props":220,"children":222},{"className":221},[],[223],{"type":19,"value":207},{"type":19,"value":225}," legge righe in un database no-code betool o in un database esterno (Postgres, MySQL, MongoDB) registrato in ",{"type":14,"tag":22,"props":227,"children":228},{},[229],{"type":19,"value":230},"Applicazioni → Database → Connessioni",{"type":19,"value":232},": filtro ",{"type":14,"tag":72,"props":234,"children":236},{"className":235},[],[237],{"type":19,"value":238},"where",{"type":19,"value":240},", ricerca full-text, limite. ",{"type":14,"tag":72,"props":242,"children":244},{"className":243},[],[245],{"type":19,"value":215},{"type":19,"value":247}," vi scrive (",{"type":14,"tag":72,"props":249,"children":251},{"className":250},[],[252],{"type":19,"value":253},"create",{"type":19,"value":136},{"type":14,"tag":72,"props":256,"children":258},{"className":257},[],[259],{"type":19,"value":260},"update",{"type":19,"value":262},"), con il contenuto composto dal linguaggio di mapping.",{"type":14,"tag":67,"props":264,"children":266},{"id":265},"file_transform",[267],{"type":14,"tag":72,"props":268,"children":270},{"className":269},[],[271],{"type":19,"value":265},{"type":14,"tag":15,"props":273,"children":274},{},[275],{"type":19,"value":276},"Trasforma un file. Trasformatori integrati:",{"type":14,"tag":86,"props":278,"children":279},{},[280,291,302,313,331],{"type":14,"tag":90,"props":281,"children":282},{},[283,289],{"type":14,"tag":72,"props":284,"children":286},{"className":285},[],[287],{"type":19,"value":288},"pdf_extract_text",{"type":19,"value":290}," — testo selezionabile di un PDF (nessun OCR: un PDF scansionato non restituisce testo)",{"type":14,"tag":90,"props":292,"children":293},{},[294,300],{"type":14,"tag":72,"props":295,"children":297},{"className":296},[],[298],{"type":19,"value":299},"pdf_split",{"type":19,"value":301}," — divisione di un PDF",{"type":14,"tag":90,"props":303,"children":304},{},[305,311],{"type":14,"tag":72,"props":306,"children":308},{"className":307},[],[309],{"type":19,"value":310},"pdf_to_images",{"type":19,"value":312}," — rendering delle pagine di un PDF in immagini",{"type":14,"tag":90,"props":314,"children":315},{},[316,322,323,329],{"type":14,"tag":72,"props":317,"children":319},{"className":318},[],[320],{"type":19,"value":321},"xlsx_to_json",{"type":19,"value":209},{"type":14,"tag":72,"props":324,"children":326},{"className":325},[],[327],{"type":19,"value":328},"xls_to_json",{"type":19,"value":330}," — lettura di una cartella di lavoro Excel in righe JSON",{"type":14,"tag":90,"props":332,"children":333},{},[334,340],{"type":14,"tag":72,"props":335,"children":337},{"className":336},[],[338],{"type":19,"value":339},"unzip",{"type":19,"value":341}," — estrazione di un archivio",{"type":14,"tag":67,"props":343,"children":345},{"id":344},"file_link-link-di-download",[346,352],{"type":14,"tag":72,"props":347,"children":349},{"className":348},[],[350],{"type":19,"value":351},"file_link",{"type":19,"value":353}," (link di download)",{"type":14,"tag":15,"props":355,"children":356},{},[357,359,364,366,371,373,378,380,387],{"type":19,"value":358},"Consegna file a terzi ",{"type":14,"tag":22,"props":360,"children":361},{},[362],{"type":19,"value":363},"tramite link",{"type":19,"value":365},", senza mettere il loro contenuto nel flusso: per ogni file di un elenco del contesto (i file di un download, gli allegati ricevuti, le foto di un'ispezione…), il nodo ",{"type":14,"tag":22,"props":367,"children":368},{},[369],{"type":19,"value":370},"Link di download",{"type":19,"value":372}," produce un ",{"type":14,"tag":22,"props":374,"children":375},{},[376],{"type":19,"value":377},"link di download firmato",{"type":19,"value":379}," con durata di vita limitata. Un passaggio successivo compone ciò che riceve il destinatario: risposta di un ",{"type":14,"tag":381,"props":382,"children":384},"a",{"href":383},"\u002Fit\u002Fdocs\u002Fcanaux\u002Fwebhook",[385],{"type":19,"value":386},"webhook in entrata",{"type":19,"value":388},", email…",{"type":14,"tag":390,"props":391,"children":392},"table",{},[393,412],{"type":14,"tag":394,"props":395,"children":396},"thead",{},[397],{"type":14,"tag":398,"props":399,"children":400},"tr",{},[401,407],{"type":14,"tag":402,"props":403,"children":404},"th",{},[405],{"type":19,"value":406},"Impostazione",{"type":14,"tag":402,"props":408,"children":409},{},[410],{"type":19,"value":411},"Ruolo",{"type":14,"tag":413,"props":414,"children":415},"tbody",{},[416,446,466,479,499],{"type":14,"tag":398,"props":417,"children":418},{},[419,433],{"type":14,"tag":420,"props":421,"children":422},"td",{},[423,425,431],{"type":19,"value":424},"Elenco dei file da collegare (",{"type":14,"tag":72,"props":426,"children":428},{"className":427},[],[429],{"type":19,"value":430},"input_path",{"type":19,"value":432},")",{"type":14,"tag":420,"props":434,"children":435},{},[436,438,444],{"type":19,"value":437},"Dove leggere l'elenco nel flusso — ogni voce porta ",{"type":14,"tag":72,"props":439,"children":441},{"className":440},[],[442],{"type":19,"value":443},"path",{"type":19,"value":445}," (chiave del file nello storage dell'organizzazione) ed eventualmente un nome di file. Obbligatorio.",{"type":14,"tag":398,"props":447,"children":448},{},[449,461],{"type":14,"tag":420,"props":450,"children":451},{},[452,454,460],{"type":19,"value":453},"Sottocartelle consentite (",{"type":14,"tag":72,"props":455,"children":457},{"className":456},[],[458],{"type":19,"value":459},"path_scope",{"type":19,"value":432},{"type":14,"tag":420,"props":462,"children":463},{},[464],{"type":19,"value":465},"Facoltativo: limita i file firmabili ad alcune sottocartelle dello storage dell'organizzazione.",{"type":14,"tag":398,"props":467,"children":468},{},[469,474],{"type":14,"tag":420,"props":470,"children":471},{},[472],{"type":19,"value":473},"Durata dei link",{"type":14,"tag":420,"props":475,"children":476},{},[477],{"type":19,"value":478},"15 minuti per impostazione predefinita, da 1 minuto a 24 ore.",{"type":14,"tag":398,"props":480,"children":481},{},[482,494],{"type":14,"tag":420,"props":483,"children":484},{},[485,487,493],{"type":19,"value":486},"Numero massimo di file (",{"type":14,"tag":72,"props":488,"children":490},{"className":489},[],[491],{"type":19,"value":492},"max_files",{"type":19,"value":432},{"type":14,"tag":420,"props":495,"children":496},{},[497],{"type":19,"value":498},"20 per impostazione predefinita, 100 al massimo.",{"type":14,"tag":398,"props":500,"children":501},{},[502,514],{"type":14,"tag":420,"props":503,"children":504},{},[505,507,513],{"type":19,"value":506},"Chiave di output (",{"type":14,"tag":72,"props":508,"children":510},{"className":509},[],[511],{"type":19,"value":512},"output_key",{"type":19,"value":432},{"type":14,"tag":420,"props":515,"children":516},{},[517,519,525],{"type":19,"value":518},"Predefinita ",{"type":14,"tag":72,"props":520,"children":522},{"className":521},[],[523],{"type":19,"value":524},"linked.files",{"type":19,"value":526},".",{"type":14,"tag":15,"props":528,"children":529},{},[530,532,538,540,546,548,554,556,562,563,569,570,576,577,583],{"type":19,"value":531},"L'output contiene ",{"type":14,"tag":72,"props":533,"children":535},{"className":534},[],[536],{"type":19,"value":537},"files",{"type":19,"value":539}," (ogni voce di origine, arricchita di ",{"type":14,"tag":72,"props":541,"children":543},{"className":542},[],[544],{"type":19,"value":545},"url",{"type":19,"value":547}," e ",{"type":14,"tag":72,"props":549,"children":551},{"className":550},[],[552],{"type":19,"value":553},"expires_at",{"type":19,"value":555},"), ",{"type":14,"tag":72,"props":557,"children":559},{"className":558},[],[560],{"type":19,"value":561},"file_count",{"type":19,"value":107},{"type":14,"tag":72,"props":564,"children":566},{"className":565},[],[567],{"type":19,"value":568},"failed",{"type":19,"value":107},{"type":14,"tag":72,"props":571,"children":573},{"className":572},[],[574],{"type":19,"value":575},"requested",{"type":19,"value":547},{"type":14,"tag":72,"props":578,"children":580},{"className":579},[],[581],{"type":19,"value":582},"ttl_seconds",{"type":19,"value":526},{"type":14,"tag":86,"props":585,"children":586},{},[587,597,607,624],{"type":14,"tag":90,"props":588,"children":589},{},[590,595],{"type":14,"tag":22,"props":591,"children":592},{},[593],{"type":19,"value":594},"Mai fuori dalla tua organizzazione",{"type":19,"value":596},": un file fuori dal suo storage viene rifiutato.",{"type":14,"tag":90,"props":598,"children":599},{},[600,605],{"type":14,"tag":22,"props":601,"children":602},{},[603],{"type":19,"value":604},"Esistenza verificata prima di firmare",{"type":19,"value":606},": un file assente non viene mai firmato.",{"type":14,"tag":90,"props":608,"children":609},{},[610,615,617,622],{"type":14,"tag":22,"props":611,"children":612},{},[613],{"type":19,"value":614},"Nulla di omesso",{"type":19,"value":616},": un file non collegato (fuori perimetro, introvabile, oltre il limite, firma impossibile) compare in ",{"type":14,"tag":72,"props":618,"children":620},{"className":619},[],[621],{"type":19,"value":568},{"type":19,"value":623}," con il suo motivo.",{"type":14,"tag":90,"props":625,"children":626},{},[627,629,634],{"type":19,"value":628},"I link vengono ",{"type":14,"tag":22,"props":630,"children":631},{},[632],{"type":19,"value":633},"ricreati a ogni esecuzione",{"type":19,"value":635},", e ogni link emesso viene registrato nel log.",{"type":14,"tag":637,"props":638,"children":640},"alert",{"type":639},"warning",[641],{"type":14,"tag":15,"props":642,"children":643},{},[644,646,651,653,658],{"type":19,"value":645},"Il link è ",{"type":14,"tag":22,"props":647,"children":648},{},[649],{"type":19,"value":650},"al portatore",{"type":19,"value":652},": chiunque lo possieda scarica il file fino alla sua scadenza. Mantieni una durata breve, e compila le ",{"type":14,"tag":22,"props":654,"children":655},{},[656],{"type":19,"value":657},"sottocartelle consentite",{"type":19,"value":659}," non appena l'elenco proviene da un dato modificabile (una riga di tabella) — altrimenti chiunque possa scrivere quel dato farebbe firmare un link verso qualsiasi file dell'organizzazione.",{"type":14,"tag":67,"props":661,"children":663},{"id":662},"compute",[664],{"type":14,"tag":72,"props":665,"children":667},{"className":666},[],[668],{"type":19,"value":662},{"type":14,"tag":15,"props":670,"children":671},{},[672],{"type":19,"value":673},"Calcoli deterministici sui dati del contesto. Operazioni integrate:",{"type":14,"tag":86,"props":675,"children":676},{},[677,709,720,731,742,753,764,775,786],{"type":14,"tag":90,"props":678,"children":679},{},[680,686,688,694,695,701,702,708],{"type":14,"tag":72,"props":681,"children":683},{"className":682},[],[684],{"type":19,"value":685},"column_stats",{"type":19,"value":687}," — per colonna di un elenco di righe, quante valgono un determinato valore (",{"type":14,"tag":72,"props":689,"children":691},{"className":690},[],[692],{"type":19,"value":693},"count",{"type":19,"value":107},{"type":14,"tag":72,"props":696,"children":698},{"className":697},[],[699],{"type":19,"value":700},"total",{"type":19,"value":107},{"type":14,"tag":72,"props":703,"children":705},{"className":704},[],[706],{"type":19,"value":707},"pct",{"type":19,"value":432},{"type":14,"tag":90,"props":710,"children":711},{},[712,718],{"type":14,"tag":72,"props":713,"children":715},{"className":714},[],[716],{"type":19,"value":717},"compose_text",{"type":19,"value":719}," — composizione di un testo a partire da un modello e da valori del flusso",{"type":14,"tag":90,"props":721,"children":722},{},[723,729],{"type":14,"tag":72,"props":724,"children":726},{"className":725},[],[727],{"type":19,"value":728},"regex_extract",{"type":19,"value":730}," — estrazione di valori tramite espressione regolare",{"type":14,"tag":90,"props":732,"children":733},{},[734,740],{"type":14,"tag":72,"props":735,"children":737},{"className":736},[],[738],{"type":19,"value":739},"select_by_substring",{"type":19,"value":741}," — suddivisione di un elenco in gruppi secondo predicati « contiene \u002F non contiene »",{"type":14,"tag":90,"props":743,"children":744},{},[745,751],{"type":14,"tag":72,"props":746,"children":748},{"className":747},[],[749],{"type":19,"value":750},"list_compare",{"type":19,"value":752}," — coerenza di più elenchi tramite chiave pivot",{"type":14,"tag":90,"props":754,"children":755},{},[756,762],{"type":14,"tag":72,"props":757,"children":759},{"className":758},[],[760],{"type":19,"value":761},"multi_source_compliance",{"type":19,"value":763}," — audit di conformità multidimensionale e multi-sorgente",{"type":14,"tag":90,"props":765,"children":766},{},[767,773],{"type":14,"tag":72,"props":768,"children":770},{"className":769},[],[771],{"type":19,"value":772},"contact_extract",{"type":19,"value":774}," — indirizzi email e numeri di telefono trovati in un testo, con la loro provenienza",{"type":14,"tag":90,"props":776,"children":777},{},[778,784],{"type":14,"tag":72,"props":779,"children":781},{"className":780},[],[782],{"type":19,"value":783},"free_slots",{"type":19,"value":785}," — fasce libere dedotte da periodi occupati",{"type":14,"tag":90,"props":787,"children":788},{},[789,795],{"type":14,"tag":72,"props":790,"children":792},{"className":791},[],[793],{"type":19,"value":794},"url_expand",{"type":19,"value":796}," — composizione di URL a partire da basi e percorsi",{"type":14,"tag":67,"props":798,"children":800},{"id":799},"linguaggio-di-mapping",[801],{"type":19,"value":802},"Linguaggio di mapping",{"type":14,"tag":15,"props":804,"children":805},{},[806,808,814,815,821,822,828,830,835,837,842,844,849,851,857],{"type":19,"value":807},"Non è un nodo: è il linguaggio che compone un payload di output dai dati del contesto (funzioni ",{"type":14,"tag":72,"props":809,"children":811},{"className":810},[],[812],{"type":19,"value":813},"$now",{"type":19,"value":107},{"type":14,"tag":72,"props":816,"children":818},{"className":817},[],[819],{"type":19,"value":820},"$uuid",{"type":19,"value":107},{"type":14,"tag":72,"props":823,"children":825},{"className":824},[],[826],{"type":19,"value":827},"$concat",{"type":19,"value":829},"…). Serve per il body ",{"type":14,"tag":72,"props":831,"children":833},{"className":832},[],[834],{"type":19,"value":142},{"type":19,"value":836}," di ",{"type":14,"tag":72,"props":838,"children":840},{"className":839},[],[841],{"type":19,"value":77},{"type":19,"value":843},", per il contenuto scritto da ",{"type":14,"tag":72,"props":845,"children":847},{"className":846},[],[848],{"type":19,"value":215},{"type":19,"value":850}," e per le variabili di una chiamata in uscita ",{"type":14,"tag":72,"props":852,"children":854},{"className":853},[],[855],{"type":19,"value":856},"phone_call",{"type":19,"value":526},{"type":14,"tag":67,"props":859,"children":861},{"id":860},"data_to_file",[862],{"type":14,"tag":72,"props":863,"children":865},{"className":864},[],[866],{"type":19,"value":860},{"type":14,"tag":15,"props":868,"children":869},{},[870,872,884],{"type":19,"value":871},"Produce un ",{"type":14,"tag":22,"props":873,"children":874},{},[875,877,883],{"type":19,"value":876},"file Excel (",{"type":14,"tag":72,"props":878,"children":880},{"className":879},[],[881],{"type":19,"value":882},".xlsx",{"type":19,"value":432},{"type":19,"value":885}," a partire dai dati del contesto — un elenco di righe, una griglia o più elenchi (un foglio ciascuno). Opzioni: nome del file (templatable), nome del foglio, scelta e ordine delle colonne, riga di intestazione. Il file viene salvato nello storage della tua organizzazione, pronto per essere inviato via email o depositato su un Drive.",{"type":14,"tag":15,"props":887,"children":888},{},[889,891,897,898,904,905,911,912,918,920,925],{"type":19,"value":890},"Per sicurezza, le celle che iniziano con ",{"type":14,"tag":72,"props":892,"children":894},{"className":893},[],[895],{"type":19,"value":896},"=",{"type":19,"value":107},{"type":14,"tag":72,"props":899,"children":901},{"className":900},[],[902],{"type":19,"value":903},"+",{"type":19,"value":107},{"type":14,"tag":72,"props":906,"children":908},{"className":907},[],[909],{"type":19,"value":910},"-",{"type":19,"value":136},{"type":14,"tag":72,"props":913,"children":915},{"className":914},[],[916],{"type":19,"value":917},"@",{"type":19,"value":919}," vengono scritte come ",{"type":14,"tag":22,"props":921,"children":922},{},[923],{"type":19,"value":924},"testo",{"type":19,"value":926}," per impostazione predefinita (nessuna formula iniettata). Quando i limiti di Excel obbligano a troncare, il file viene contrassegnato come troncato.",{"type":14,"tag":67,"props":928,"children":930},{"id":929},"web_fetch",[931],{"type":14,"tag":72,"props":932,"children":934},{"className":933},[],[935],{"type":19,"value":929},{"type":14,"tag":15,"props":937,"children":938},{},[939,941,946,948,954,956,962,964,970],{"type":19,"value":940},"Legge una o più ",{"type":14,"tag":22,"props":942,"children":943},{},[944],{"type":19,"value":945},"pagine web",{"type":19,"value":947}," e pubblica il loro testo leggibile nel contesto (predefinito ",{"type":14,"tag":72,"props":949,"children":951},{"className":950},[],[952],{"type":19,"value":953},"web.pages",{"type":19,"value":955},"). Impostazioni: numero di pagine, concorrenza, timeout, dimensione massima. Il verdetto ",{"type":14,"tag":72,"props":957,"children":959},{"className":958},[],[960],{"type":19,"value":961},"robots.txt",{"type":19,"value":963}," viene sempre calcolato e riportato; viene applicato solo se lo attivi (",{"type":14,"tag":72,"props":965,"children":967},{"className":966},[],[968],{"type":19,"value":969},"respect_robots",{"type":19,"value":971},").",{"type":14,"tag":15,"props":973,"children":974},{},[975],{"type":19,"value":976},"Le pagine renderizzate solo tramite JavaScript non vengono eseguite: viene letto solo l'HTML servito. Una pagina in errore viene riportata nel risultato, senza far fallire la pipeline.",{"type":14,"tag":15,"props":978,"children":979},{},[980],{"type":19,"value":981},"Lato agent, due tool equivalenti:",{"type":14,"tag":86,"props":983,"children":984},{},[985,996],{"type":14,"tag":90,"props":986,"children":987},{},[988,994],{"type":14,"tag":72,"props":989,"children":991},{"className":990},[],[992],{"type":19,"value":993},"web_scrape.fetch_page",{"type":19,"value":995}," — legge una pagina (titolo, testo, link email e telefono trovati).",{"type":14,"tag":90,"props":997,"children":998},{},[999,1005,1007,1012],{"type":14,"tag":72,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":19,"value":1004},"web_search.search",{"type":19,"value":1006}," — ",{"type":14,"tag":22,"props":1008,"children":1009},{},[1010],{"type":19,"value":1011},"ricerca web",{"type":19,"value":1013}," tramite un motore SearXNG ospitato dalla piattaforma: fino a 5 risultati (titolo, URL, estratto).",{"type":14,"tag":15,"props":1015,"children":1016},{},[1017,1019,1024],{"type":19,"value":1018},"Tutte le letture web passano dalla stessa protezione ",{"type":14,"tag":22,"props":1020,"children":1021},{},[1022],{"type":19,"value":1023},"anti-SSRF",{"type":19,"value":1025},": indirizzi interni, privati e di metadati cloud rifiutati dopo la risoluzione DNS, reindirizzamenti ricontrollati a ogni salto.",{"type":14,"tag":67,"props":1027,"children":1029},{"id":1028},"code_step",[1030],{"type":14,"tag":72,"props":1031,"children":1033},{"className":1032},[],[1034],{"type":19,"value":1028},{"type":14,"tag":15,"props":1036,"children":1037},{},[1038,1040,1045,1047,1052,1054,1060],{"type":19,"value":1039},"Quando la logica deterministica supera ciò che ",{"type":14,"tag":72,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":19,"value":662},{"type":19,"value":1046}," può gestire, un ",{"type":14,"tag":22,"props":1048,"children":1049},{},[1050],{"type":19,"value":1051},"code step",{"type":19,"value":1053}," esegue codice personalizzato in una sandbox Starlark — modificabile direttamente, eseguito non appena salvato e delimitato da una allowlist di tool. Vedi ",{"type":14,"tag":381,"props":1055,"children":1057},{"href":1056},"\u002Fit\u002Fdocs\u002Fpipelines\u002Fcode-step",[1058],{"type":19,"value":1059},"Code Step",{"type":19,"value":526},{"type":14,"tag":37,"props":1062,"children":1064},{"id":1063},"autenticazione-e-segreti",[1065],{"type":19,"value":1066},"Autenticazione e segreti",{"type":14,"tag":15,"props":1068,"children":1069},{},[1070,1072,1077,1079,1084],{"type":19,"value":1071},"Gli operator che comunicano con un sistema esterno (HTTP, DB) referenziano un ",{"type":14,"tag":22,"props":1073,"children":1074},{},[1075],{"type":19,"value":1076},"account",{"type":19,"value":1078}," registrato all'interno dell'organizzazione. Le credenziali ",{"type":14,"tag":22,"props":1080,"children":1081},{},[1082],{"type":19,"value":1083},"non",{"type":19,"value":1085}," sono mai visibili all'interno della pipeline stessa — viene referenziato solo un nome di account.",{"type":14,"tag":15,"props":1087,"children":1088},{},[1089],{"type":19,"value":1090},"Di conseguenza, la rotazione di una password non richiede alcuna modifica a nessuna pipeline.",{"type":14,"tag":15,"props":1092,"children":1093},{},[1094,1096,1101,1103,1108,1110,1115,1116,1121,1123,1128,1130,1135,1137,1143,1145,1151],{"type":19,"value":1095},"Quando un segreto viene inserito direttamente in un nodo (token ",{"type":14,"tag":72,"props":1097,"children":1099},{"className":1098},[],[1100],{"type":19,"value":155},{"type":19,"value":1102},", password ",{"type":14,"tag":72,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":19,"value":162},{"type":19,"value":1109}," o valore ",{"type":14,"tag":72,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":19,"value":169},{"type":19,"value":836},{"type":14,"tag":72,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":19,"value":77},{"type":19,"value":1122},", password di un PDF o di un archivio cifrati per ",{"type":14,"tag":72,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":19,"value":265},{"type":19,"value":1129},"), viene ",{"type":14,"tag":22,"props":1131,"children":1132},{},[1133],{"type":19,"value":1134},"mascherato",{"type":19,"value":1136}," non appena salvato: l'editor, l'API e gli strumenti MCP ne mostrano solo un marcatore. Vedi ",{"type":14,"tag":381,"props":1138,"children":1140},{"href":1139},"\u002Fit\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",[1141],{"type":19,"value":1142},"L'editor visuale",{"type":19,"value":1144},", sezione ",{"type":14,"tag":1146,"props":1147,"children":1148},"em",{},[1149],{"type":19,"value":1150},"Segreti",{"type":19,"value":526},{"type":14,"tag":67,"props":1153,"children":1155},{"id":1154},"oauth2-in-uscita-client_credentials",[1156,1158,1164],{"type":19,"value":1157},"OAuth2 in uscita (",{"type":14,"tag":72,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":19,"value":1163},"client_credentials",{"type":19,"value":432},{"type":14,"tag":15,"props":1166,"children":1167},{},[1168,1170,1175,1177,1182,1184,1190,1191,1197,1198,1204,1205,1211],{"type":19,"value":1169},"Per le API che richiedono un token OAuth2 (cloud enterprise, ERP, provider di terze parti), l'operator HTTP supporta la modalità ",{"type":14,"tag":72,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":19,"value":177},{"type":19,"value":1176},". Registri una ",{"type":14,"tag":22,"props":1178,"children":1179},{},[1180],{"type":19,"value":1181},"credenziale OAuth2",{"type":19,"value":1183}," nell'organizzazione — ",{"type":14,"tag":72,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":19,"value":1189},"token_url",{"type":19,"value":107},{"type":14,"tag":72,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":19,"value":1196},"client_id",{"type":19,"value":107},{"type":14,"tag":72,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":19,"value":1203},"client_secret",{"type":19,"value":107},{"type":14,"tag":72,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":19,"value":1210},"scope",{"type":19,"value":1212}," — e il nodo referenzia solo un identificatore non sensibile.",{"type":14,"tag":15,"props":1214,"children":1215},{},[1216,1218,1223,1225,1230,1232,1236,1238,1244,1246,1252],{"type":19,"value":1217},"Al momento della chiamata, betool ottiene un token e lo riutilizza finché resta valido; lo ",{"type":14,"tag":22,"props":1219,"children":1220},{},[1221],{"type":19,"value":1222},"rinnova in modo lazy",{"type":19,"value":1224}," alla scadenza, senza task in background. Il ",{"type":14,"tag":72,"props":1226,"children":1228},{"className":1227},[],[1229],{"type":19,"value":1203},{"type":19,"value":1231}," ",{"type":14,"tag":22,"props":1233,"children":1234},{},[1235],{"type":19,"value":1083},{"type":19,"value":1237}," viene mai restituito dall'API di amministrazione (viene esposto solo un indicatore ",{"type":14,"tag":72,"props":1239,"children":1241},{"className":1240},[],[1242],{"type":19,"value":1243},"has_secret",{"type":19,"value":1245},"), e il token ottenuto viene posto come ",{"type":14,"tag":72,"props":1247,"children":1249},{"className":1248},[],[1250],{"type":19,"value":1251},"Authorization: Bearer …",{"type":19,"value":1253}," sulla richiesta in uscita.",{"type":14,"tag":15,"props":1255,"children":1256},{},[1257],{"type":19,"value":1258},"La rotazione del segreto dopo una rotazione lato provider non richiede modifiche alla pipeline: la chiamata successiva si rinnova automaticamente.",{"type":14,"tag":37,"props":1260,"children":1262},{"id":1261},"idempotenza",[1263],{"type":19,"value":1264},"Idempotenza",{"type":14,"tag":15,"props":1266,"children":1267},{},[1268],{"type":19,"value":1269},"Qualsiasi operator che produce un effetto collaterale (POST HTTP, INSERT DB, invio email) deve essere progettato per l'idempotenza lato destinazione. Pratica consigliata:",{"type":14,"tag":86,"props":1271,"children":1272},{},[1273,1293],{"type":14,"tag":90,"props":1274,"children":1275},{},[1276,1278,1284,1286,1292],{"type":19,"value":1277},"Includi un ",{"type":14,"tag":72,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":19,"value":1283},"idempotency_key",{"type":19,"value":1285}," nel payload (in genere ",{"type":14,"tag":72,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":19,"value":1291},"exchange_id",{"type":19,"value":971},{"type":14,"tag":90,"props":1294,"children":1295},{},[1296],{"type":19,"value":1297},"Verifica lato destinazione se la chiave è già stata elaborata.",{"type":14,"tag":15,"props":1299,"children":1300},{},[1301,1303,1308,1310,1315,1317,1322],{"type":19,"value":1302},"Al di fuori dei nuovi tentativi che configuri esplicitamente su ",{"type":14,"tag":72,"props":1304,"children":1306},{"className":1305},[],[1307],{"type":19,"value":77},{"type":19,"value":1309}," (",{"type":14,"tag":72,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":19,"value":190},{"type":19,"value":1316},"), betool non riprova automaticamente un operator fallito: è responsabilità della tua pipeline orchestrare la strategia di retry. ",{"type":14,"tag":72,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":19,"value":77},{"type":19,"value":1323}," è inoltre protetto contro il doppio invio in caso di re-dispatch interno: una richiesta già consegnata con uno stato accettato non viene reinviata.",{"title":7,"searchDepth":1325,"depth":1325,"links":1326},2,[1327,1328,1343,1347],{"id":39,"depth":1325,"text":42},{"id":62,"depth":1325,"text":65,"children":1329},[1330,1333,1335,1336,1338,1339,1340,1341,1342],{"id":69,"depth":1331,"text":1332},3,"webhook_action (chiamata HTTP)",{"id":200,"depth":1331,"text":1334},"database_query \u002F database_manage",{"id":265,"depth":1331,"text":265},{"id":344,"depth":1331,"text":1337},"file_link (link di download)",{"id":662,"depth":1331,"text":662},{"id":799,"depth":1331,"text":802},{"id":860,"depth":1331,"text":860},{"id":929,"depth":1331,"text":929},{"id":1028,"depth":1331,"text":1028},{"id":1063,"depth":1325,"text":1066,"children":1344},[1345],{"id":1154,"depth":1331,"text":1346},"OAuth2 in uscita (client_credentials)",{"id":1261,"depth":1325,"text":1264},"markdown","content:it:docs:3.pipelines:3.operateurs.md","content","it\u002Fdocs\u002F3.pipelines\u002F3.operateurs.md","it\u002Fdocs\u002F3.pipelines\u002F3.operateurs","md",[1355],{"title":1356,"_path":1357,"children":1358},"It","\u002Fit",[1359],{"title":1360,"_path":1361,"children":1362},"Docs","\u002Fit\u002Fdocs",[1363,1376,1403,1425,1438,1454,1467,1528],{"title":1364,"_path":1365,"children":1366},"Per iniziare","\u002Fit\u002Fdocs\u002Fdemarrer",[1367,1370,1373],{"title":1368,"_path":1369},"Benvenuto","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":1371,"_path":1372},"Creare un account","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":1374,"_path":1375},"Collegare una chiave LLM","\u002Fit\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":1377,"_path":1378,"children":1379},"Canali","\u002Fit\u002Fdocs\u002Fcanaux",[1380,1383,1386,1389,1392,1394,1397,1400],{"title":1381,"_path":1382},"Panoramica dei canali","\u002Fit\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":1384,"_path":1385},"Telefonia in tempo reale","\u002Fit\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":1387,"_path":1388},"Email","\u002Fit\u002Fdocs\u002Fcanaux\u002Femail",{"title":1390,"_path":1391},"Widget chat web","\u002Fit\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":1393,"_path":383},"Webhook HTTP",{"title":1395,"_path":1396},"Messaggistica (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fit\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":1398,"_path":1399},"Meta Lead Ads","\u002Fit\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":1401,"_path":1402},"Schedule (cron)","\u002Fit\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":1404,"_path":1405,"children":1406},"Pipeline","\u002Fit\u002Fdocs\u002Fpipelines",[1407,1408,1411,1412,1415,1416,1419,1422],{"title":1142,"_path":1139},{"title":1409,"_path":1410},"Agenti IA","\u002Fit\u002Fdocs\u002Fpipelines\u002Fagents",{"title":8,"_path":4},{"title":1413,"_path":1414},"Controllo di flusso","\u002Fit\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":1059,"_path":1056},{"title":1417,"_path":1418},"Sotto-pipeline","\u002Fit\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":1420,"_path":1421},"Azioni no-code","\u002Fit\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":1423,"_path":1424},"Base di conoscenza","\u002Fit\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":1426,"_path":1427,"children":1428},"Supervisione","\u002Fit\u002Fdocs\u002Fsupervision",[1429,1432,1435],{"title":1430,"_path":1431},"Cronologia delle esecuzioni","\u002Fit\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":1433,"_path":1434},"Crediti e metering","\u002Fit\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":1436,"_path":1437},"Benchmark","\u002Fit\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":1439,"_path":1440,"children":1441},"Sicurezza","\u002Fit\u002Fdocs\u002Fsecurite",[1442,1445,1448,1451],{"title":1443,"_path":1444},"Principi di sicurezza","\u002Fit\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":1446,"_path":1447},"Multi-tenancy rigorosa","\u002Fit\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":1449,"_path":1450},"Audit RGPD e registro degli accessi","\u002Fit\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":1452,"_path":1453},"Deployment sovrano","\u002Fit\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":1455,"_path":1456,"children":1457},"Sviluppatori","\u002Fit\u002Fdocs\u002Fdeveloppeurs",[1458,1461,1464],{"title":1459,"_path":1460},"API Admin","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":1462,"_path":1463},"Webhook in uscita","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":1465,"_path":1466},"Pilotare betool da Claude (MCP)","\u002Fit\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":1468,"_path":1469,"children":1470},"Integrazioni","\u002Fit\u002Fdocs\u002Fintegrations",[1471,1474,1477,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507,1510,1513,1516,1519,1522,1525],{"title":1472,"_path":1473},"Panoramica delle integrazioni","\u002Fit\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":1475,"_path":1476},"Stripe","\u002Fit\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":1478,"_path":1479},"GitHub","\u002Fit\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":1481,"_path":1482},"Google","\u002Fit\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":1484,"_path":1485},"LinkedIn Ads","\u002Fit\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":1487,"_path":1488},"Kavkom","\u002Fit\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":1490,"_path":1491},"Jira","\u002Fit\u002Fdocs\u002Fintegrations\u002Fjira",{"title":1493,"_path":1494},"Slack","\u002Fit\u002Fdocs\u002Fintegrations\u002Fslack",{"title":1496,"_path":1497},"SMS","\u002Fit\u002Fdocs\u002Fintegrations\u002Fsms",{"title":1499,"_path":1500},"Enable Banking (open banking)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":1502,"_path":1503},"CRM, marketing e produttività","\u002Fit\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":1505,"_path":1506},"HeyGen (video)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":1508,"_path":1509},"La Poste","\u002Fit\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":1511,"_path":1512},"CRM verticali (beTool Application, Qhare)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":1514,"_path":1515},"Mitti (ispezioni sul campo)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":1517,"_path":1518},"Meta (Messenger, Pagine, Meta Ads)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":1520,"_path":1521},"Onoff Business (Beta)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":1523,"_path":1524},"Smart Life \u002F Tuya (oggetti connessi)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":1526,"_path":1527},"Prodotti beTool (Desktop, Kiosk, Terminal)","\u002Fit\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":1529,"_path":1530,"children":1531},"Casi d'uso","\u002Fit\u002Fdocs\u002Fcas-usage",[1532,1535,1538,1541,1544,1547],{"title":1533,"_path":1534},"Agenti di business tipo","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":1536,"_path":1537},"CFO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":1539,"_path":1540},"COO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":1542,"_path":1543},"CTO IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":1545,"_path":1546},"Product Manager IA","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":1548,"_path":1549},"Assistente personale","\u002Fit\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]