[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fru\u002Fdocs\u002Fpipelines\u002Foperateurs":3,"docs-nav-ru":1352},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":1346,"_id":1347,"_source":1348,"_file":1349,"_stem":1350,"_extension":1351},"\u002Fru\u002Fdocs\u002Fpipelines\u002Foperateurs","pipelines",false,"","Детерминированные операторы","Узлы действий, которые обходят LLM — HTTP, БД, преобразования, вычисления.",{"type":11,"children":12,"toc":1322},"root",[13,34,41,53,58,64,78,83,196,214,261,270,275,340,352,387,525,582,634,658,667,672,795,801,856,865,884,925,934,970,975,980,1012,1024,1033,1058,1064,1083,1088,1150,1163,1211,1252,1257,1263,1268,1296],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,25,27,32],{"type":14,"tag":19,"props":20,"children":21},"strong",{},[22],{"type":23,"value":24},"text","Оператор",{"type":23,"value":26}," — это узел, который выполняет ",{"type":14,"tag":19,"props":28,"children":29},{},[30],{"type":23,"value":31},"детерминированное",{"type":23,"value":33}," действие: без LLM, без случайности. Для любого заданного входа вывод предсказуем.",{"type":14,"tag":35,"props":36,"children":38},"h2",{"id":37},"зачем-их-использовать",[39],{"type":23,"value":40},"Зачем их использовать",{"type":14,"tag":15,"props":42,"children":43},{},[44,46,51],{"type":23,"value":45},"Любая логика, которую можно записать явно, ",{"type":14,"tag":19,"props":47,"children":48},{},[49],{"type":23,"value":50},"должна",{"type":23,"value":52}," быть записана явно. LLM, который «вычисляет итог» или «форматирует дату», — это анти-паттерн: он медленнее, дороже и может ошибаться.",{"type":14,"tag":15,"props":54,"children":55},{},[56],{"type":23,"value":57},"Практическое правило: если вы можете написать функцию в 5 строк на Python — это оператор, а не agent.",{"type":14,"tag":35,"props":59,"children":61},{"id":60},"доступные-типы",[62],{"type":23,"value":63},"Доступные типы",{"type":14,"tag":65,"props":66,"children":68},"h3",{"id":67},"webhook_action-http-вызов",[69,76],{"type":14,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":23,"value":75},"webhook_action",{"type":23,"value":77}," (HTTP-вызов)",{"type":14,"tag":15,"props":79,"children":80},{},[81],{"type":23,"value":82},"Выполняет исходящий HTTP-вызов. Конфигурация:",{"type":14,"tag":84,"props":85,"children":86},"ul",{},[87,93,143,178,191],{"type":14,"tag":88,"props":89,"children":90},"li",{},[91],{"type":23,"value":92},"URL, метод, заголовки и параметры запроса (с плейсхолдерами из контекста)",{"type":14,"tag":88,"props":94,"children":95},{},[96,98,104,106,112,113,119,120,126,127,133,135,141],{"type":23,"value":97},"Тело: ",{"type":14,"tag":70,"props":99,"children":101},{"className":100},[],[102],{"type":23,"value":103},"none",{"type":23,"value":105},", ",{"type":14,"tag":70,"props":107,"children":109},{"className":108},[],[110],{"type":23,"value":111},"json",{"type":23,"value":105},{"type":14,"tag":70,"props":114,"children":116},{"className":115},[],[117],{"type":23,"value":118},"form",{"type":23,"value":105},{"type":14,"tag":70,"props":121,"children":123},{"className":122},[],[124],{"type":23,"value":125},"raw",{"type":23,"value":105},{"type":14,"tag":70,"props":128,"children":130},{"className":129},[],[131],{"type":23,"value":132},"multipart",{"type":23,"value":134}," или ",{"type":14,"tag":70,"props":136,"children":138},{"className":137},[],[139],{"type":23,"value":140},"mapper",{"type":23,"value":142}," (тело, составленное языком маппинга, см. ниже)",{"type":14,"tag":88,"props":144,"children":145},{},[146,148,154,155,161,162,168,170,176],{"type":23,"value":147},"Аутентификация: ",{"type":14,"tag":70,"props":149,"children":151},{"className":150},[],[152],{"type":23,"value":153},"bearer",{"type":23,"value":105},{"type":14,"tag":70,"props":156,"children":158},{"className":157},[],[159],{"type":23,"value":160},"basic",{"type":23,"value":105},{"type":14,"tag":70,"props":163,"children":165},{"className":164},[],[166],{"type":23,"value":167},"api_key_header",{"type":23,"value":169}," (пользовательский заголовок) или ",{"type":14,"tag":70,"props":171,"children":173},{"className":172},[],[174],{"type":23,"value":175},"oauth2",{"type":23,"value":177}," (см. ниже)",{"type":14,"tag":88,"props":179,"children":180},{},[181,183,189],{"type":23,"value":182},"Допустимые HTTP-статусы, максимальная задержка и число повторных попыток (",{"type":14,"tag":70,"props":184,"children":186},{"className":185},[],[187],{"type":23,"value":188},"retry_count",{"type":23,"value":190},", 0 по умолчанию, экспоненциальная задержка)",{"type":14,"tag":88,"props":192,"children":193},{},[194],{"type":23,"value":195},"Выходной ключ, под которым публикуется ответ",{"type":14,"tag":65,"props":197,"children":199},{"id":198},"database_query-database_manage",[200,206,208],{"type":14,"tag":70,"props":201,"children":203},{"className":202},[],[204],{"type":23,"value":205},"database_query",{"type":23,"value":207}," \u002F ",{"type":14,"tag":70,"props":209,"children":211},{"className":210},[],[212],{"type":23,"value":213},"database_manage",{"type":14,"tag":15,"props":215,"children":216},{},[217,222,224,229,231,237,239,244,246,252,253,259],{"type":14,"tag":70,"props":218,"children":220},{"className":219},[],[221],{"type":23,"value":205},{"type":23,"value":223}," читает строки из no-code базы betool или из внешней базы (Postgres, MySQL, MongoDB), зарегистрированной в разделе ",{"type":14,"tag":19,"props":225,"children":226},{},[227],{"type":23,"value":228},"Приложения → Базы данных → Подключения",{"type":23,"value":230},": фильтр ",{"type":14,"tag":70,"props":232,"children":234},{"className":233},[],[235],{"type":23,"value":236},"where",{"type":23,"value":238},", полнотекстовый поиск, лимит. ",{"type":14,"tag":70,"props":240,"children":242},{"className":241},[],[243],{"type":23,"value":213},{"type":23,"value":245}," записывает в неё (",{"type":14,"tag":70,"props":247,"children":249},{"className":248},[],[250],{"type":23,"value":251},"create",{"type":23,"value":134},{"type":14,"tag":70,"props":254,"children":256},{"className":255},[],[257],{"type":23,"value":258},"update",{"type":23,"value":260},"), при этом содержимое составляется языком маппинга.",{"type":14,"tag":65,"props":262,"children":264},{"id":263},"file_transform",[265],{"type":14,"tag":70,"props":266,"children":268},{"className":267},[],[269],{"type":23,"value":263},{"type":14,"tag":15,"props":271,"children":272},{},[273],{"type":23,"value":274},"Преобразует файл. Встроенные преобразователи:",{"type":14,"tag":84,"props":276,"children":277},{},[278,289,300,311,329],{"type":14,"tag":88,"props":279,"children":280},{},[281,287],{"type":14,"tag":70,"props":282,"children":284},{"className":283},[],[285],{"type":23,"value":286},"pdf_extract_text",{"type":23,"value":288}," — выделяемый текст PDF (без OCR: отсканированный PDF не даёт текста)",{"type":14,"tag":88,"props":290,"children":291},{},[292,298],{"type":14,"tag":70,"props":293,"children":295},{"className":294},[],[296],{"type":23,"value":297},"pdf_split",{"type":23,"value":299}," — разбиение PDF",{"type":14,"tag":88,"props":301,"children":302},{},[303,309],{"type":14,"tag":70,"props":304,"children":306},{"className":305},[],[307],{"type":23,"value":308},"pdf_to_images",{"type":23,"value":310}," — рендеринг страниц PDF в изображения",{"type":14,"tag":88,"props":312,"children":313},{},[314,320,321,327],{"type":14,"tag":70,"props":315,"children":317},{"className":316},[],[318],{"type":23,"value":319},"xlsx_to_json",{"type":23,"value":207},{"type":14,"tag":70,"props":322,"children":324},{"className":323},[],[325],{"type":23,"value":326},"xls_to_json",{"type":23,"value":328}," — чтение книги Excel в виде строк JSON",{"type":14,"tag":88,"props":330,"children":331},{},[332,338],{"type":14,"tag":70,"props":333,"children":335},{"className":334},[],[336],{"type":23,"value":337},"unzip",{"type":23,"value":339}," — извлечение архива",{"type":14,"tag":65,"props":341,"children":343},{"id":342},"file_link-ссылки-для-скачивания",[344,350],{"type":14,"tag":70,"props":345,"children":347},{"className":346},[],[348],{"type":23,"value":349},"file_link",{"type":23,"value":351}," (ссылки для скачивания)",{"type":14,"tag":15,"props":353,"children":354},{},[355,357,362,364,369,371,376,378,385],{"type":23,"value":356},"Передаёт файлы третьей стороне ",{"type":14,"tag":19,"props":358,"children":359},{},[360],{"type":23,"value":361},"по ссылке",{"type":23,"value":363},", не помещая их содержимое в поток: для каждого файла из списка в контексте (файлы загрузки, полученные вложения, фотографии инспекции…) узел ",{"type":14,"tag":19,"props":365,"children":366},{},[367],{"type":23,"value":368},"Ссылки для скачивания",{"type":23,"value":370}," создаёт ",{"type":14,"tag":19,"props":372,"children":373},{},[374],{"type":23,"value":375},"подписанную ссылку для скачивания",{"type":23,"value":377}," с ограниченным сроком действия. Следующий шаг формирует то, что получит адресат: ответ ",{"type":14,"tag":379,"props":380,"children":382},"a",{"href":381},"\u002Fru\u002Fdocs\u002Fcanaux\u002Fwebhook",[383],{"type":23,"value":384},"входящего webhook",{"type":23,"value":386},", email…",{"type":14,"tag":388,"props":389,"children":390},"table",{},[391,410],{"type":14,"tag":392,"props":393,"children":394},"thead",{},[395],{"type":14,"tag":396,"props":397,"children":398},"tr",{},[399,405],{"type":14,"tag":400,"props":401,"children":402},"th",{},[403],{"type":23,"value":404},"Настройка",{"type":14,"tag":400,"props":406,"children":407},{},[408],{"type":23,"value":409},"Назначение",{"type":14,"tag":411,"props":412,"children":413},"tbody",{},[414,444,464,477,497],{"type":14,"tag":396,"props":415,"children":416},{},[417,431],{"type":14,"tag":418,"props":419,"children":420},"td",{},[421,423,429],{"type":23,"value":422},"Список файлов для ссылок (",{"type":14,"tag":70,"props":424,"children":426},{"className":425},[],[427],{"type":23,"value":428},"input_path",{"type":23,"value":430},")",{"type":14,"tag":418,"props":432,"children":433},{},[434,436,442],{"type":23,"value":435},"Где читать список в потоке — каждая запись содержит ",{"type":14,"tag":70,"props":437,"children":439},{"className":438},[],[440],{"type":23,"value":441},"path",{"type":23,"value":443}," (ключ файла в хранилище организации) и, при необходимости, имя файла. Обязательно.",{"type":14,"tag":396,"props":445,"children":446},{},[447,459],{"type":14,"tag":418,"props":448,"children":449},{},[450,452,458],{"type":23,"value":451},"Разрешённые подпапки (",{"type":14,"tag":70,"props":453,"children":455},{"className":454},[],[456],{"type":23,"value":457},"path_scope",{"type":23,"value":430},{"type":14,"tag":418,"props":460,"children":461},{},[462],{"type":23,"value":463},"Необязательно: ограничивает подписываемые файлы определёнными подпапками хранилища организации.",{"type":14,"tag":396,"props":465,"children":466},{},[467,472],{"type":14,"tag":418,"props":468,"children":469},{},[470],{"type":23,"value":471},"Срок действия ссылок",{"type":14,"tag":418,"props":473,"children":474},{},[475],{"type":23,"value":476},"15 минут по умолчанию, от 1 минуты до 24 часов.",{"type":14,"tag":396,"props":478,"children":479},{},[480,492],{"type":14,"tag":418,"props":481,"children":482},{},[483,485,491],{"type":23,"value":484},"Максимальное число файлов (",{"type":14,"tag":70,"props":486,"children":488},{"className":487},[],[489],{"type":23,"value":490},"max_files",{"type":23,"value":430},{"type":14,"tag":418,"props":493,"children":494},{},[495],{"type":23,"value":496},"20 по умолчанию, не более 100.",{"type":14,"tag":396,"props":498,"children":499},{},[500,512],{"type":14,"tag":418,"props":501,"children":502},{},[503,505,511],{"type":23,"value":504},"Ключ вывода (",{"type":14,"tag":70,"props":506,"children":508},{"className":507},[],[509],{"type":23,"value":510},"output_key",{"type":23,"value":430},{"type":14,"tag":418,"props":513,"children":514},{},[515,517,523],{"type":23,"value":516},"По умолчанию ",{"type":14,"tag":70,"props":518,"children":520},{"className":519},[],[521],{"type":23,"value":522},"linked.files",{"type":23,"value":524},".",{"type":14,"tag":15,"props":526,"children":527},{},[528,530,536,538,544,546,552,554,560,561,567,568,574,575,581],{"type":23,"value":529},"Вывод содержит ",{"type":14,"tag":70,"props":531,"children":533},{"className":532},[],[534],{"type":23,"value":535},"files",{"type":23,"value":537}," (каждая исходная запись, дополненная ",{"type":14,"tag":70,"props":539,"children":541},{"className":540},[],[542],{"type":23,"value":543},"url",{"type":23,"value":545}," и ",{"type":14,"tag":70,"props":547,"children":549},{"className":548},[],[550],{"type":23,"value":551},"expires_at",{"type":23,"value":553},"), ",{"type":14,"tag":70,"props":555,"children":557},{"className":556},[],[558],{"type":23,"value":559},"file_count",{"type":23,"value":105},{"type":14,"tag":70,"props":562,"children":564},{"className":563},[],[565],{"type":23,"value":566},"failed",{"type":23,"value":105},{"type":14,"tag":70,"props":569,"children":571},{"className":570},[],[572],{"type":23,"value":573},"requested",{"type":23,"value":545},{"type":14,"tag":70,"props":576,"children":578},{"className":577},[],[579],{"type":23,"value":580},"ttl_seconds",{"type":23,"value":524},{"type":14,"tag":84,"props":583,"children":584},{},[585,595,605,622],{"type":14,"tag":88,"props":586,"children":587},{},[588,593],{"type":14,"tag":19,"props":589,"children":590},{},[591],{"type":23,"value":592},"Никогда за пределами вашей организации",{"type":23,"value":594},": файл вне её хранилища отклоняется.",{"type":14,"tag":88,"props":596,"children":597},{},[598,603],{"type":14,"tag":19,"props":599,"children":600},{},[601],{"type":23,"value":602},"Существование проверяется до подписи",{"type":23,"value":604},": отсутствующий файл никогда не подписывается.",{"type":14,"tag":88,"props":606,"children":607},{},[608,613,615,620],{"type":14,"tag":19,"props":609,"children":610},{},[611],{"type":23,"value":612},"Ничего не упущено",{"type":23,"value":614},": файл, для которого ссылка не создана (вне области, не найден, сверх лимита, подпись невозможна), попадает в ",{"type":14,"tag":70,"props":616,"children":618},{"className":617},[],[619],{"type":23,"value":566},{"type":23,"value":621}," с указанием причины.",{"type":14,"tag":88,"props":623,"children":624},{},[625,627,632],{"type":23,"value":626},"Ссылки ",{"type":14,"tag":19,"props":628,"children":629},{},[630],{"type":23,"value":631},"создаются заново при каждом выполнении",{"type":23,"value":633},", и каждая выданная ссылка журналируется.",{"type":14,"tag":635,"props":636,"children":638},"alert",{"type":637},"warning",[639],{"type":14,"tag":15,"props":640,"children":641},{},[642,644,649,651,656],{"type":23,"value":643},"Ссылка — ",{"type":14,"tag":19,"props":645,"children":646},{},[647],{"type":23,"value":648},"на предъявителя",{"type":23,"value":650},": любой, у кого она есть, скачивает файл до истечения её срока. Делайте срок коротким и заполняйте ",{"type":14,"tag":19,"props":652,"children":653},{},[654],{"type":23,"value":655},"разрешённые подпапки",{"type":23,"value":657},", как только список берётся из изменяемых данных (строки таблицы), — иначе любой, кто может записать эти данные, сможет получить подписанную ссылку на любой файл организации.",{"type":14,"tag":65,"props":659,"children":661},{"id":660},"compute",[662],{"type":14,"tag":70,"props":663,"children":665},{"className":664},[],[666],{"type":23,"value":660},{"type":14,"tag":15,"props":668,"children":669},{},[670],{"type":23,"value":671},"Детерминированные вычисления над данными контекста. Встроенные операции:",{"type":14,"tag":84,"props":673,"children":674},{},[675,707,718,729,740,751,762,773,784],{"type":14,"tag":88,"props":676,"children":677},{},[678,684,686,692,693,699,700,706],{"type":14,"tag":70,"props":679,"children":681},{"className":680},[],[682],{"type":23,"value":683},"column_stats",{"type":23,"value":685}," — по каждому столбцу списка строк: сколько из них равны заданному значению (",{"type":14,"tag":70,"props":687,"children":689},{"className":688},[],[690],{"type":23,"value":691},"count",{"type":23,"value":105},{"type":14,"tag":70,"props":694,"children":696},{"className":695},[],[697],{"type":23,"value":698},"total",{"type":23,"value":105},{"type":14,"tag":70,"props":701,"children":703},{"className":702},[],[704],{"type":23,"value":705},"pct",{"type":23,"value":430},{"type":14,"tag":88,"props":708,"children":709},{},[710,716],{"type":14,"tag":70,"props":711,"children":713},{"className":712},[],[714],{"type":23,"value":715},"compose_text",{"type":23,"value":717}," — составление текста по шаблону из значений потока",{"type":14,"tag":88,"props":719,"children":720},{},[721,727],{"type":14,"tag":70,"props":722,"children":724},{"className":723},[],[725],{"type":23,"value":726},"regex_extract",{"type":23,"value":728}," — извлечение значений по регулярному выражению",{"type":14,"tag":88,"props":730,"children":731},{},[732,738],{"type":14,"tag":70,"props":733,"children":735},{"className":734},[],[736],{"type":23,"value":737},"select_by_substring",{"type":23,"value":739}," — разбиение списка на группы по предикатам «содержит \u002F не содержит»",{"type":14,"tag":88,"props":741,"children":742},{},[743,749],{"type":14,"tag":70,"props":744,"children":746},{"className":745},[],[747],{"type":23,"value":748},"list_compare",{"type":23,"value":750}," — согласованность нескольких списков по ключу-связке",{"type":14,"tag":88,"props":752,"children":753},{},[754,760],{"type":14,"tag":70,"props":755,"children":757},{"className":756},[],[758],{"type":23,"value":759},"multi_source_compliance",{"type":23,"value":761}," — многомерный аудит соответствия по нескольким источникам",{"type":14,"tag":88,"props":763,"children":764},{},[765,771],{"type":14,"tag":70,"props":766,"children":768},{"className":767},[],[769],{"type":23,"value":770},"contact_extract",{"type":23,"value":772}," — адреса email и номера телефонов, найденные в тексте, с указанием их источника",{"type":14,"tag":88,"props":774,"children":775},{},[776,782],{"type":14,"tag":70,"props":777,"children":779},{"className":778},[],[780],{"type":23,"value":781},"free_slots",{"type":23,"value":783}," — свободные слоты, выведенные из занятых периодов",{"type":14,"tag":88,"props":785,"children":786},{},[787,793],{"type":14,"tag":70,"props":788,"children":790},{"className":789},[],[791],{"type":23,"value":792},"url_expand",{"type":23,"value":794}," — составление URL из баз и путей",{"type":14,"tag":65,"props":796,"children":798},{"id":797},"язык-маппинга",[799],{"type":23,"value":800},"Язык маппинга",{"type":14,"tag":15,"props":802,"children":803},{},[804,806,812,813,819,820,826,828,833,835,840,842,847,849,855],{"type":23,"value":805},"Это не узел: это язык, который составляет выходной payload из данных контекста (функции ",{"type":14,"tag":70,"props":807,"children":809},{"className":808},[],[810],{"type":23,"value":811},"$now",{"type":23,"value":105},{"type":14,"tag":70,"props":814,"children":816},{"className":815},[],[817],{"type":23,"value":818},"$uuid",{"type":23,"value":105},{"type":14,"tag":70,"props":821,"children":823},{"className":822},[],[824],{"type":23,"value":825},"$concat",{"type":23,"value":827},"…). Он используется для тела ",{"type":14,"tag":70,"props":829,"children":831},{"className":830},[],[832],{"type":23,"value":140},{"type":23,"value":834}," в ",{"type":14,"tag":70,"props":836,"children":838},{"className":837},[],[839],{"type":23,"value":75},{"type":23,"value":841},", для содержимого, записываемого ",{"type":14,"tag":70,"props":843,"children":845},{"className":844},[],[846],{"type":23,"value":213},{"type":23,"value":848},", и для переменных исходящего вызова ",{"type":14,"tag":70,"props":850,"children":852},{"className":851},[],[853],{"type":23,"value":854},"phone_call",{"type":23,"value":524},{"type":14,"tag":65,"props":857,"children":859},{"id":858},"data_to_file",[860],{"type":14,"tag":70,"props":861,"children":863},{"className":862},[],[864],{"type":23,"value":858},{"type":14,"tag":15,"props":866,"children":867},{},[868,870,882],{"type":23,"value":869},"Создаёт ",{"type":14,"tag":19,"props":871,"children":872},{},[873,875,881],{"type":23,"value":874},"файл Excel (",{"type":14,"tag":70,"props":876,"children":878},{"className":877},[],[879],{"type":23,"value":880},".xlsx",{"type":23,"value":430},{"type":23,"value":883}," из данных контекста — списка строк, сетки или нескольких списков (по листу на каждый). Параметры: имя файла (поддерживает шаблоны), имя листа, выбор и порядок столбцов, строка заголовков. Файл сохраняется в хранилище вашей организации, готовый к отправке по email или размещению на Drive.",{"type":14,"tag":15,"props":885,"children":886},{},[887,889,895,896,902,903,909,910,916,918,923],{"type":23,"value":888},"В целях безопасности ячейки, начинающиеся с ",{"type":14,"tag":70,"props":890,"children":892},{"className":891},[],[893],{"type":23,"value":894},"=",{"type":23,"value":105},{"type":14,"tag":70,"props":897,"children":899},{"className":898},[],[900],{"type":23,"value":901},"+",{"type":23,"value":105},{"type":14,"tag":70,"props":904,"children":906},{"className":905},[],[907],{"type":23,"value":908},"-",{"type":23,"value":134},{"type":14,"tag":70,"props":911,"children":913},{"className":912},[],[914],{"type":23,"value":915},"@",{"type":23,"value":917},", по умолчанию записываются как ",{"type":14,"tag":19,"props":919,"children":920},{},[921],{"type":23,"value":922},"текст",{"type":23,"value":924}," (никакой внедрённой формулы). Когда ограничения Excel вынуждают обрезать данные, файл помечается как усечённый.",{"type":14,"tag":65,"props":926,"children":928},{"id":927},"web_fetch",[929],{"type":14,"tag":70,"props":930,"children":932},{"className":931},[],[933],{"type":23,"value":927},{"type":14,"tag":15,"props":935,"children":936},{},[937,939,944,946,952,954,960,962,968],{"type":23,"value":938},"Читает одну или несколько ",{"type":14,"tag":19,"props":940,"children":941},{},[942],{"type":23,"value":943},"веб-страниц",{"type":23,"value":945}," и публикует их читаемый текст в контексте (по умолчанию ",{"type":14,"tag":70,"props":947,"children":949},{"className":948},[],[950],{"type":23,"value":951},"web.pages",{"type":23,"value":953},"). Настройки: число страниц, параллелизм, задержка, максимальный размер. Вердикт ",{"type":14,"tag":70,"props":955,"children":957},{"className":956},[],[958],{"type":23,"value":959},"robots.txt",{"type":23,"value":961}," всегда вычисляется и сообщается; он применяется, только если вы его включили (",{"type":14,"tag":70,"props":963,"children":965},{"className":964},[],[966],{"type":23,"value":967},"respect_robots",{"type":23,"value":969},").",{"type":14,"tag":15,"props":971,"children":972},{},[973],{"type":23,"value":974},"Страницы, отображаемые только через JavaScript, не исполняются: читается только отдаваемый HTML. Страница, загрузка которой не удалась, отражается в результате, не вызывая сбоя pipeline.",{"type":14,"tag":15,"props":976,"children":977},{},[978],{"type":23,"value":979},"На стороне агента — два эквивалентных инструмента:",{"type":14,"tag":84,"props":981,"children":982},{},[983,994],{"type":14,"tag":88,"props":984,"children":985},{},[986,992],{"type":14,"tag":70,"props":987,"children":989},{"className":988},[],[990],{"type":23,"value":991},"web_scrape.fetch_page",{"type":23,"value":993}," — читает страницу (заголовок, текст, найденные ссылки на email и телефоны).",{"type":14,"tag":88,"props":995,"children":996},{},[997,1003,1005,1010],{"type":14,"tag":70,"props":998,"children":1000},{"className":999},[],[1001],{"type":23,"value":1002},"web_search.search",{"type":23,"value":1004}," — ",{"type":14,"tag":19,"props":1006,"children":1007},{},[1008],{"type":23,"value":1009},"веб-поиск",{"type":23,"value":1011}," через движок SearXNG, размещённый самой платформой: до 5 результатов (заголовок, URL, фрагмент).",{"type":14,"tag":15,"props":1013,"children":1014},{},[1015,1017,1022],{"type":23,"value":1016},"Все веб-чтения проходят через одну и ту же защиту ",{"type":14,"tag":19,"props":1018,"children":1019},{},[1020],{"type":23,"value":1021},"anti-SSRF",{"type":23,"value":1023},": внутренние, частные адреса и адреса облачных метаданных отклоняются после DNS-разрешения, перенаправления перепроверяются на каждом шаге.",{"type":14,"tag":65,"props":1025,"children":1027},{"id":1026},"code_step",[1028],{"type":14,"tag":70,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":23,"value":1026},{"type":14,"tag":15,"props":1034,"children":1035},{},[1036,1038,1043,1044,1049,1051,1057],{"type":23,"value":1037},"Когда детерминированная логика выходит за пределы возможностей ",{"type":14,"tag":70,"props":1039,"children":1041},{"className":1040},[],[1042],{"type":23,"value":660},{"type":23,"value":105},{"type":14,"tag":19,"props":1045,"children":1046},{},[1047],{"type":23,"value":1048},"шаг с кодом",{"type":23,"value":1050}," выполняет пользовательский код в песочнице Starlark — редактируется напрямую, выполняется сразу после сохранения и ограничен белым списком инструментов (allowlist). См. ",{"type":14,"tag":379,"props":1052,"children":1054},{"href":1053},"\u002Fru\u002Fdocs\u002Fpipelines\u002Fcode-step",[1055],{"type":23,"value":1056},"Шаги с кодом",{"type":23,"value":524},{"type":14,"tag":35,"props":1059,"children":1061},{"id":1060},"аутентификация-и-секреты",[1062],{"type":23,"value":1063},"Аутентификация и секреты",{"type":14,"tag":15,"props":1065,"children":1066},{},[1067,1069,1074,1076,1081],{"type":23,"value":1068},"Операторы, которые взаимодействуют с внешней системой (HTTP, DB), ссылаются на ",{"type":14,"tag":19,"props":1070,"children":1071},{},[1072],{"type":23,"value":1073},"учётную запись",{"type":23,"value":1075},", зарегистрированную в организации. Учётные данные ",{"type":14,"tag":19,"props":1077,"children":1078},{},[1079],{"type":23,"value":1080},"никогда",{"type":23,"value":1082}," не видны внутри самого pipeline — ссылка идёт только на имя учётной записи.",{"type":14,"tag":15,"props":1084,"children":1085},{},[1086],{"type":23,"value":1087},"В результате ротация пароля не требует правок ни в одном pipeline.",{"type":14,"tag":15,"props":1089,"children":1090},{},[1091,1093,1098,1100,1105,1107,1112,1114,1119,1121,1126,1128,1133,1135,1141,1143,1149],{"type":23,"value":1092},"Когда секрет вводится непосредственно в узле (токен ",{"type":14,"tag":70,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":23,"value":153},{"type":23,"value":1099},", пароль ",{"type":14,"tag":70,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":23,"value":160},{"type":23,"value":1106}," или значение ",{"type":14,"tag":70,"props":1108,"children":1110},{"className":1109},[],[1111],{"type":23,"value":167},{"type":23,"value":1113}," у ",{"type":14,"tag":70,"props":1115,"children":1117},{"className":1116},[],[1118],{"type":23,"value":75},{"type":23,"value":1120},", пароль зашифрованного PDF или архива для ",{"type":14,"tag":70,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":23,"value":263},{"type":23,"value":1127},"), он ",{"type":14,"tag":19,"props":1129,"children":1130},{},[1131],{"type":23,"value":1132},"маскируется",{"type":23,"value":1134}," сразу после сохранения: редактор, API и инструменты MCP показывают лишь маркер. См. ",{"type":14,"tag":379,"props":1136,"children":1138},{"href":1137},"\u002Fru\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",[1139],{"type":23,"value":1140},"Визуальный редактор",{"type":23,"value":1142},", раздел ",{"type":14,"tag":1144,"props":1145,"children":1146},"em",{},[1147],{"type":23,"value":1148},"Секреты",{"type":23,"value":524},{"type":14,"tag":65,"props":1151,"children":1153},{"id":1152},"исходящий-oauth2-client_credentials",[1154,1156,1162],{"type":23,"value":1155},"Исходящий OAuth2 (",{"type":14,"tag":70,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":23,"value":1161},"client_credentials",{"type":23,"value":430},{"type":14,"tag":15,"props":1164,"children":1165},{},[1166,1168,1173,1175,1180,1182,1188,1189,1195,1196,1202,1203,1209],{"type":23,"value":1167},"Для API, требующих токен OAuth2 (корпоративное облако, ERP, сторонние провайдеры), HTTP-оператор поддерживает режим ",{"type":14,"tag":70,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":23,"value":175},{"type":23,"value":1174},". Вы регистрируете ",{"type":14,"tag":19,"props":1176,"children":1177},{},[1178],{"type":23,"value":1179},"учётные данные OAuth2",{"type":23,"value":1181}," в организации — ",{"type":14,"tag":70,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":23,"value":1187},"token_url",{"type":23,"value":105},{"type":14,"tag":70,"props":1190,"children":1192},{"className":1191},[],[1193],{"type":23,"value":1194},"client_id",{"type":23,"value":105},{"type":14,"tag":70,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":23,"value":1201},"client_secret",{"type":23,"value":105},{"type":14,"tag":70,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":23,"value":1208},"scope",{"type":23,"value":1210}," — а узел ссылается только на нечувствительный идентификатор.",{"type":14,"tag":15,"props":1212,"children":1213},{},[1214,1216,1221,1223,1228,1230,1234,1236,1242,1244,1250],{"type":23,"value":1215},"В момент вызова betool получает токен и переиспользует его, пока он остаётся действительным; при истечении срока он ",{"type":14,"tag":19,"props":1217,"children":1218},{},[1219],{"type":23,"value":1220},"лениво обновляется",{"type":23,"value":1222},", без фоновой задачи. ",{"type":14,"tag":70,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":23,"value":1201},{"type":23,"value":1229}," ",{"type":14,"tag":19,"props":1231,"children":1232},{},[1233],{"type":23,"value":1080},{"type":23,"value":1235}," не возвращается административным API (раскрывается только индикатор ",{"type":14,"tag":70,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":23,"value":1241},"has_secret",{"type":23,"value":1243},"), а полученный токен размещается как ",{"type":14,"tag":70,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":23,"value":1249},"Authorization: Bearer …",{"type":23,"value":1251}," в исходящем запросе.",{"type":14,"tag":15,"props":1253,"children":1254},{},[1255],{"type":23,"value":1256},"Ротация секрета после ротации на стороне провайдера не требует правок pipeline: следующий вызов обновит его автоматически.",{"type":14,"tag":35,"props":1258,"children":1260},{"id":1259},"идемпотентность",[1261],{"type":23,"value":1262},"Идемпотентность",{"type":14,"tag":15,"props":1264,"children":1265},{},[1266],{"type":23,"value":1267},"Любой оператор, который производит побочный эффект (HTTP POST, DB INSERT, отправка email), должен быть спроектирован с идемпотентностью на стороне получателя. Рекомендуемая практика:",{"type":14,"tag":84,"props":1269,"children":1270},{},[1271,1291],{"type":14,"tag":88,"props":1272,"children":1273},{},[1274,1276,1282,1284,1290],{"type":23,"value":1275},"Включайте ",{"type":14,"tag":70,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":23,"value":1281},"idempotency_key",{"type":23,"value":1283}," в payload (обычно ",{"type":14,"tag":70,"props":1285,"children":1287},{"className":1286},[],[1288],{"type":23,"value":1289},"exchange_id",{"type":23,"value":969},{"type":14,"tag":88,"props":1292,"children":1293},{},[1294],{"type":23,"value":1295},"Проверяйте на стороне получателя, был ли ключ уже обработан.",{"type":14,"tag":15,"props":1297,"children":1298},{},[1299,1301,1306,1308,1313,1315,1320],{"type":23,"value":1300},"Помимо повторных попыток, которые вы явно настраиваете в ",{"type":14,"tag":70,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":23,"value":75},{"type":23,"value":1307}," (",{"type":14,"tag":70,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":23,"value":188},{"type":23,"value":1314},"), betool не повторяет автоматически сбойный оператор: оркестрация стратегии повторов — ответственность вашего pipeline. Кроме того, ",{"type":14,"tag":70,"props":1316,"children":1318},{"className":1317},[],[1319],{"type":23,"value":75},{"type":23,"value":1321}," защищён от двойной отправки при внутренней повторной диспетчеризации: запрос, уже доставленный с допустимым статусом, не отправляется повторно.",{"title":7,"searchDepth":1323,"depth":1323,"links":1324},2,[1325,1326,1341,1345],{"id":37,"depth":1323,"text":40},{"id":60,"depth":1323,"text":63,"children":1327},[1328,1331,1333,1334,1336,1337,1338,1339,1340],{"id":67,"depth":1329,"text":1330},3,"webhook_action (HTTP-вызов)",{"id":198,"depth":1329,"text":1332},"database_query \u002F database_manage",{"id":263,"depth":1329,"text":263},{"id":342,"depth":1329,"text":1335},"file_link (ссылки для скачивания)",{"id":660,"depth":1329,"text":660},{"id":797,"depth":1329,"text":800},{"id":858,"depth":1329,"text":858},{"id":927,"depth":1329,"text":927},{"id":1026,"depth":1329,"text":1026},{"id":1060,"depth":1323,"text":1063,"children":1342},[1343],{"id":1152,"depth":1329,"text":1344},"Исходящий OAuth2 (client_credentials)",{"id":1259,"depth":1323,"text":1262},"markdown","content:ru:docs:3.pipelines:3.operateurs.md","content","ru\u002Fdocs\u002F3.pipelines\u002F3.operateurs.md","ru\u002Fdocs\u002F3.pipelines\u002F3.operateurs","md",[1353],{"title":1354,"_path":1355,"children":1356},"Ru","\u002Fru",[1357],{"title":1358,"_path":1359,"children":1360},"Docs","\u002Fru\u002Fdocs",[1361,1374,1401,1423,1436,1452,1465,1526],{"title":1362,"_path":1363,"children":1364},"Начало работы","\u002Fru\u002Fdocs\u002Fdemarrer",[1365,1368,1371],{"title":1366,"_path":1367},"Добро пожаловать","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":1369,"_path":1370},"Создание учётной записи","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":1372,"_path":1373},"Подключение ключа LLM","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":1375,"_path":1376,"children":1377},"Каналы","\u002Fru\u002Fdocs\u002Fcanaux",[1378,1381,1384,1387,1390,1392,1395,1398],{"title":1379,"_path":1380},"Обзор каналов","\u002Fru\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":1382,"_path":1383},"Телефония в реальном времени","\u002Fru\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":1385,"_path":1386},"Электронная почта","\u002Fru\u002Fdocs\u002Fcanaux\u002Femail",{"title":1388,"_path":1389},"Веб-чат-виджет","\u002Fru\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":1391,"_path":381},"HTTP Webhook",{"title":1393,"_path":1394},"Мессенджеры (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fru\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":1396,"_path":1397},"Meta Lead Ads","\u002Fru\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":1399,"_path":1400},"Расписание (cron)","\u002Fru\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":1402,"_path":1403,"children":1404},"Пайплайны","\u002Fru\u002Fdocs\u002Fpipelines",[1405,1406,1409,1410,1413,1414,1417,1420],{"title":1140,"_path":1137},{"title":1407,"_path":1408},"AI-агенты","\u002Fru\u002Fdocs\u002Fpipelines\u002Fagents",{"title":8,"_path":4},{"title":1411,"_path":1412},"Управление потоком","\u002Fru\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":1056,"_path":1053},{"title":1415,"_path":1416},"Суб-пайплайны","\u002Fru\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":1418,"_path":1419},"No-code действия","\u002Fru\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":1421,"_path":1422},"База знаний","\u002Fru\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":1424,"_path":1425,"children":1426},"Супервизия","\u002Fru\u002Fdocs\u002Fsupervision",[1427,1430,1433],{"title":1428,"_path":1429},"История выполнений","\u002Fru\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":1431,"_path":1432},"Кредиты и тарификация","\u002Fru\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":1434,"_path":1435},"Бенчмарки","\u002Fru\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":1437,"_path":1438,"children":1439},"Безопасность","\u002Fru\u002Fdocs\u002Fsecurite",[1440,1443,1446,1449],{"title":1441,"_path":1442},"Принципы безопасности","\u002Fru\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":1444,"_path":1445},"Строгая мультитенантность","\u002Fru\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":1447,"_path":1448},"Аудит и журнал доступа GDPR","\u002Fru\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":1450,"_path":1451},"Суверенное развёртывание","\u002Fru\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":1453,"_path":1454,"children":1455},"Разработчикам","\u002Fru\u002Fdocs\u002Fdeveloppeurs",[1456,1459,1462],{"title":1457,"_path":1458},"Административный API","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":1460,"_path":1461},"Исходящие webhook","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":1463,"_path":1464},"Управление betool из Claude (MCP)","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":1466,"_path":1467,"children":1468},"Интеграции","\u002Fru\u002Fdocs\u002Fintegrations",[1469,1472,1475,1478,1481,1484,1487,1490,1493,1496,1499,1502,1505,1508,1511,1514,1517,1520,1523],{"title":1470,"_path":1471},"Обзор интеграций","\u002Fru\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":1473,"_path":1474},"Stripe","\u002Fru\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":1476,"_path":1477},"GitHub","\u002Fru\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":1479,"_path":1480},"Google","\u002Fru\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":1482,"_path":1483},"LinkedIn Ads","\u002Fru\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":1485,"_path":1486},"Kavkom","\u002Fru\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":1488,"_path":1489},"Jira","\u002Fru\u002Fdocs\u002Fintegrations\u002Fjira",{"title":1491,"_path":1492},"Slack","\u002Fru\u002Fdocs\u002Fintegrations\u002Fslack",{"title":1494,"_path":1495},"SMS","\u002Fru\u002Fdocs\u002Fintegrations\u002Fsms",{"title":1497,"_path":1498},"Enable Banking (open banking)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":1500,"_path":1501},"CRM, маркетинг и продуктивность","\u002Fru\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":1503,"_path":1504},"HeyGen (видео)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":1506,"_path":1507},"La Poste","\u002Fru\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":1509,"_path":1510},"Отраслевые CRM (beTool Application, Qhare)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":1512,"_path":1513},"Mitti (полевые инспекции)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":1515,"_path":1516},"Meta (Messenger, Pages, Meta Ads)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":1518,"_path":1519},"Onoff Business (Beta)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":1521,"_path":1522},"Smart Life \u002F Tuya (умные устройства)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":1524,"_path":1525},"Продукты beTool (Desktop, Kiosk, Terminal)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":1527,"_path":1528,"children":1529},"Сценарии использования","\u002Fru\u002Fdocs\u002Fcas-usage",[1530,1533,1536,1539,1542,1545],{"title":1531,"_path":1532},"Типовые бизнес-агенты","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":1534,"_path":1535},"CFO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":1537,"_path":1538},"COO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":1540,"_path":1541},"CTO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":1543,"_path":1544},"Product Manager ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":1546,"_path":1547},"Персональный ассистент","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]