[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fru\u002Fdocs\u002Fcanaux\u002Fwebhook":3,"docs-nav-ru":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},"\u002Fru\u002Fdocs\u002Fcanaux\u002Fwebhook","canaux",false,"","HTTP Webhook","Универсальный приём HTTP-событий от любой системы: подпись HMAC, ротация секрета, формат payload, ответ и GET-запросы.",{"type":11,"children":12,"toc":523},"root",[13,29,36,56,62,111,186,204,210,252,313,318,330,349,355,398,404,485,491],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27],{"type":19,"value":20},"text","Канал ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"webhook",{"type":19,"value":28}," — это универсальная точка входа для подключения любой системы, способной выполнить HTTP POST. Это вариант, который следует выбрать, когда для вашего источника не существует выделенного канала.",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"когда-использовать",[34],{"type":19,"value":35},"Когда использовать",{"type":14,"tag":37,"props":38,"children":39},"ul",{},[40,46,51],{"type":14,"tag":41,"props":42,"children":43},"li",{},[44],{"type":19,"value":45},"Подключить внутренний инструмент (ERP, бизнес-приложение, платёжный шлюз).",{"type":14,"tag":41,"props":47,"children":48},{},[49],{"type":19,"value":50},"Получать события от сторонней платформы, предлагающей универсальные webhook.",{"type":14,"tag":41,"props":52,"children":53},{},[54],{"type":19,"value":55},"Запускать pipeline из внешнего cron или CI.",{"type":14,"tag":30,"props":57,"children":59},{"id":58},"конфигурация",[60],{"type":19,"value":61},"Конфигурация",{"type":14,"tag":63,"props":64,"children":65},"ol",{},[66,85,99],{"type":14,"tag":41,"props":67,"children":68},{},[69,71,76,78,83],{"type":19,"value":70},"В редакторе модели настройте узел ",{"type":14,"tag":22,"props":72,"children":73},{},[74],{"type":19,"value":75},"Start",{"type":19,"value":77}," с приёмником ",{"type":14,"tag":22,"props":79,"children":80},{},[81],{"type":19,"value":82},"Входящий вебхук",{"type":19,"value":84},".",{"type":14,"tag":41,"props":86,"children":87},{},[88,90,97],{"type":19,"value":89},"betool генерирует публичный URL (",{"type":14,"tag":91,"props":92,"children":94},"code",{"className":93},[],[95],{"type":19,"value":96},"https:\u002F\u002Fplatform.betool.ai\u002Fentries\u002Fwebhook\u002F\u003Ctoken>",{"type":19,"value":98},").",{"type":14,"tag":41,"props":100,"children":101},{},[102,104,109],{"type":19,"value":103},"(Рекомендуется) Задайте ",{"type":14,"tag":22,"props":105,"children":106},{},[107],{"type":19,"value":108},"секрет HMAC",{"type":19,"value":110}," в конфигурации приёмника.",{"type":14,"tag":15,"props":112,"children":113},{},[114,116,122,124,130,132,138,140,146,148,154,156,162,163,169,171,177,179,185],{"type":19,"value":115},"Когда секрет настроен, ваша система должна подписывать необработанное тело каждого запроса — ",{"type":14,"tag":91,"props":117,"children":119},{"className":118},[],[120],{"type":19,"value":121},"HMAC-SHA256(secret, body)",{"type":19,"value":123},", в шестнадцатеричном виде — и передавать подпись в заголовке ",{"type":14,"tag":91,"props":125,"children":127},{"className":126},[],[128],{"type":19,"value":129},"X-Webhook-Signature",{"type":19,"value":131}," в форме ",{"type":14,"tag":91,"props":133,"children":135},{"className":134},[],[136],{"type":19,"value":137},"sha256=\u003Chex>",{"type":19,"value":139}," или просто ",{"type":14,"tag":91,"props":141,"children":143},{"className":142},[],[144],{"type":19,"value":145},"\u003Chex>",{"type":19,"value":147},". Имя заголовка и алгоритм (",{"type":14,"tag":91,"props":149,"children":151},{"className":150},[],[152],{"type":19,"value":153},"sha256",{"type":19,"value":155},", ",{"type":14,"tag":91,"props":157,"children":159},{"className":158},[],[160],{"type":19,"value":161},"sha384",{"type":19,"value":155},{"type":14,"tag":91,"props":164,"children":166},{"className":165},[],[167],{"type":19,"value":168},"sha512",{"type":19,"value":170},") настраиваются, например чтобы следовать соглашению ",{"type":14,"tag":91,"props":172,"children":174},{"className":173},[],[175],{"type":19,"value":176},"X-Hub-Signature-256",{"type":19,"value":178}," от GitHub. Любой запрос без действительной подписи в этом случае отклоняется (",{"type":14,"tag":91,"props":180,"children":182},{"className":181},[],[183],{"type":19,"value":184},"401",{"type":19,"value":98},{"type":14,"tag":187,"props":188,"children":190},"alert",{"type":189},"warning",[191],{"type":14,"tag":15,"props":192,"children":193},{},[194,196,202],{"type":19,"value":195},"Проверяется только этот формат: шестнадцатеричный HMAC необработанного тела. Подпись с временной меткой (",{"type":14,"tag":91,"props":197,"children":199},{"className":198},[],[200],{"type":19,"value":201},"t=…,v1=…",{"type":19,"value":203},") или в кодировке base64 не будет распознана.",{"type":14,"tag":30,"props":205,"children":207},{"id":206},"формат-полезной-нагрузки",[208],{"type":19,"value":209},"Формат полезной нагрузки",{"type":14,"tag":15,"props":211,"children":212},{},[213,215,220,222,228,230,236,237,243,245,251],{"type":19,"value":214},"Вы отправляете ",{"type":14,"tag":22,"props":216,"children":217},{},[218],{"type":19,"value":219},"любой JSON",{"type":19,"value":221},". betool не ограничивает структуру. Полезная нагрузка предоставляется pipeline под ключом ",{"type":14,"tag":91,"props":223,"children":225},{"className":224},[],[226],{"type":19,"value":227},"webhook.payload",{"type":19,"value":229}," (с его вложенными ключами); заголовки, метод и query string также доступны под ",{"type":14,"tag":91,"props":231,"children":233},{"className":232},[],[234],{"type":19,"value":235},"webhook.headers",{"type":19,"value":155},{"type":14,"tag":91,"props":238,"children":240},{"className":239},[],[241],{"type":19,"value":242},"webhook.method",{"type":19,"value":244}," и ",{"type":14,"tag":91,"props":246,"children":248},{"className":247},[],[249],{"type":19,"value":250},"webhook.query",{"type":19,"value":84},{"type":14,"tag":15,"props":253,"children":254},{},[255,257,263,265,271,273,279,281,287,289,295,297,303,305,311],{"type":19,"value":256},"Тело читается в соответствии с его ",{"type":14,"tag":91,"props":258,"children":260},{"className":259},[],[261],{"type":19,"value":262},"Content-Type",{"type":19,"value":264},": JSON разбирается, форма (",{"type":14,"tag":91,"props":266,"children":268},{"className":267},[],[269],{"type":19,"value":270},"application\u002Fx-www-form-urlencoded",{"type":19,"value":272},") — в словарь, XML и ",{"type":14,"tag":91,"props":274,"children":276},{"className":275},[],[277],{"type":19,"value":278},"text\u002F*",{"type":19,"value":280}," — как обычный текст, ",{"type":14,"tag":91,"props":282,"children":284},{"className":283},[],[285],{"type":19,"value":286},"multipart\u002Fform-data",{"type":19,"value":288}," — в поля + вложенные файлы (",{"type":14,"tag":91,"props":290,"children":292},{"className":291},[],[293],{"type":19,"value":294},"webhook.payload._files",{"type":19,"value":296},"), любой другой тип (PDF, изображение, архив…) сохраняется как файл. Тело, сжатое ",{"type":14,"tag":91,"props":298,"children":300},{"className":299},[],[301],{"type":19,"value":302},"gzip",{"type":19,"value":304},", распаковывается. Максимальный размер: 50 МБ (",{"type":14,"tag":91,"props":306,"children":308},{"className":307},[],[309],{"type":19,"value":310},"413",{"type":19,"value":312}," при превышении).",{"type":14,"tag":15,"props":314,"children":315},{},[316],{"type":19,"value":317},"Пример:",{"type":14,"tag":319,"props":320,"children":325},"pre",{"className":321,"code":323,"language":324,"meta":7},[322],"language-bash","curl -X POST https:\u002F\u002Fplatform.betool.ai\u002Fentries\u002Fwebhook\u002Fabc123 \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Webhook-Signature: sha256=$SIGNATURE\" \\\n  -d '{\n    \"type\": \"order.created\",\n    \"order_id\": \"ord_42\",\n    \"amount_cents\": 9900,\n    \"customer_email\": \"client@exemple.com\"\n  }'\n","bash",[326],{"type":14,"tag":91,"props":327,"children":328},{"__ignoreMap":7},[329],{"type":19,"value":323},{"type":14,"tag":15,"props":331,"children":332},{},[333,335,341,342,348],{"type":19,"value":334},"Затем pipeline может подключить агента, который напрямую читает ",{"type":14,"tag":91,"props":336,"children":338},{"className":337},[],[339],{"type":19,"value":340},"webhook.payload.customer_email",{"type":19,"value":244},{"type":14,"tag":91,"props":343,"children":345},{"className":344},[],[346],{"type":19,"value":347},"webhook.payload.amount_cents",{"type":19,"value":84},{"type":14,"tag":30,"props":350,"children":352},{"id":351},"ответ",[353],{"type":19,"value":354},"Ответ",{"type":14,"tag":15,"props":356,"children":357},{},[358,360,366,368,377,379,388,390,396],{"type":19,"value":359},"Два режима ответа (",{"type":14,"tag":91,"props":361,"children":363},{"className":362},[],[364],{"type":19,"value":365},"response_mode",{"type":19,"value":367},"): ",{"type":14,"tag":22,"props":369,"children":370},{},[371],{"type":14,"tag":91,"props":372,"children":374},{"className":373},[],[375],{"type":19,"value":376},"sync",{"type":19,"value":378}," (по умолчанию) блокирует запрос до получения результата pipeline и возвращает его в ответе; ",{"type":14,"tag":22,"props":380,"children":381},{},[382],{"type":14,"tag":91,"props":383,"children":385},{"className":384},[],[386],{"type":19,"value":387},"ack",{"type":19,"value":389}," немедленно возвращает ",{"type":14,"tag":91,"props":391,"children":393},{"className":392},[],[394],{"type":19,"value":395},"202 Accepted",{"type":19,"value":397}," после помещения события в надёжную очередь (затем pipeline выполняется, с повторными попытками) — выбирайте его для провайдеров с коротким тайм-аутом.",{"type":14,"tag":30,"props":399,"children":401},{"id":400},"запросы-get-опция",[402],{"type":19,"value":403},"Запросы GET (опция)",{"type":14,"tag":15,"props":405,"children":406},{},[407,409,415,417,423,425,431,433,439,441,446,448,454,456,461,463,468,470,476,478,483],{"type":19,"value":408},"По умолчанию принимается только ",{"type":14,"tag":91,"props":410,"children":412},{"className":411},[],[413],{"type":19,"value":414},"POST",{"type":19,"value":416},": на ",{"type":14,"tag":91,"props":418,"children":420},{"className":419},[],[421],{"type":19,"value":422},"GET",{"type":19,"value":424}," возвращается ",{"type":14,"tag":91,"props":426,"children":428},{"className":427},[],[429],{"type":19,"value":430},"405",{"type":19,"value":432},". Для партнёра, который требует запрос вида ",{"type":14,"tag":91,"props":434,"children":436},{"className":435},[],[437],{"type":19,"value":438},"GET ?action=…",{"type":19,"value":440},", отметьте ",{"type":14,"tag":22,"props":442,"children":443},{},[444],{"type":19,"value":445},"Принимать также GET",{"type":19,"value":447}," (",{"type":14,"tag":91,"props":449,"children":451},{"className":450},[],[452],{"type":19,"value":453},"allow_get",{"type":19,"value":455},"). Тогда query string становится ",{"type":14,"tag":91,"props":457,"children":459},{"className":458},[],[460],{"type":19,"value":227},{"type":19,"value":462}," в том же виде, что и POST формы: pipeline не нужно знать, какой метод был использован. ",{"type":14,"tag":91,"props":464,"children":466},{"className":465},[],[467],{"type":19,"value":422},{"type":19,"value":469}," не содержит тела (отклоняется с ",{"type":14,"tag":91,"props":471,"children":473},{"className":472},[],[474],{"type":19,"value":475},"400",{"type":19,"value":477},") и несовместим с подписью HMAC (отклоняется с ",{"type":14,"tag":91,"props":479,"children":481},{"className":480},[],[482],{"type":19,"value":430},{"type":19,"value":484},", пока задан секрет). Идентификатор, переданный в query, попадает в журналы доступа: предпочитайте POST, когда партнёр это позволяет.",{"type":14,"tag":30,"props":486,"children":488},{"id":487},"безопасность",[489],{"type":19,"value":490},"Безопасность",{"type":14,"tag":37,"props":492,"children":493},{},[494,499,518],{"type":14,"tag":41,"props":495,"children":496},{},[497],{"type":19,"value":498},"Подписывайте запросы (HMAC), как только endpoint обрабатывает что-то помимо тестов.",{"type":14,"tag":41,"props":500,"children":501},{},[502,504,509,511,516],{"type":19,"value":503},"Секрет можно сменить в любой момент в конфигурации приёмника (ротация). После сохранения он больше никогда не отображается: поле показывает ",{"type":14,"tag":22,"props":505,"children":506},{},[507],{"type":19,"value":508},"«•••••• сохранено — введите, чтобы заменить»",{"type":19,"value":510},", а ",{"type":14,"tag":22,"props":512,"children":513},{},[514],{"type":19,"value":515},"Удалить",{"type":19,"value":517}," стирает его (подпись тогда больше не проверяется).",{"type":14,"tag":41,"props":519,"children":520},{},[521],{"type":19,"value":522},"Полезные нагрузки хранятся в открытом виде в истории выполнения — не отправляйте данные, которые должны быть зашифрованы только при передаче.",{"title":7,"searchDepth":524,"depth":524,"links":525},2,[526,527,528,529,530,531],{"id":32,"depth":524,"text":35},{"id":58,"depth":524,"text":61},{"id":206,"depth":524,"text":209},{"id":351,"depth":524,"text":354},{"id":400,"depth":524,"text":403},{"id":487,"depth":524,"text":490},"markdown","content:ru:docs:2.canaux:5.webhook.md","content","ru\u002Fdocs\u002F2.canaux\u002F5.webhook.md","ru\u002Fdocs\u002F2.canaux\u002F5.webhook","md",[539],{"title":540,"_path":541,"children":542},"Ru","\u002Fru",[543],{"title":544,"_path":545,"children":546},"Docs","\u002Fru\u002Fdocs",[547,560,586,614,627,642,655,716],{"title":548,"_path":549,"children":550},"Начало работы","\u002Fru\u002Fdocs\u002Fdemarrer",[551,554,557],{"title":552,"_path":553},"Добро пожаловать","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":555,"_path":556},"Создание учётной записи","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":558,"_path":559},"Подключение ключа LLM","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":561,"_path":562,"children":563},"Каналы","\u002Fru\u002Fdocs\u002Fcanaux",[564,567,570,573,576,577,580,583],{"title":565,"_path":566},"Обзор каналов","\u002Fru\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":568,"_path":569},"Телефония в реальном времени","\u002Fru\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":571,"_path":572},"Электронная почта","\u002Fru\u002Fdocs\u002Fcanaux\u002Femail",{"title":574,"_path":575},"Веб-чат-виджет","\u002Fru\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":8,"_path":4},{"title":578,"_path":579},"Мессенджеры (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fru\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":581,"_path":582},"Meta Lead Ads","\u002Fru\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":584,"_path":585},"Расписание (cron)","\u002Fru\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":587,"_path":588,"children":589},"Пайплайны","\u002Fru\u002Fdocs\u002Fpipelines",[590,593,596,599,602,605,608,611],{"title":591,"_path":592},"Визуальный редактор","\u002Fru\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":594,"_path":595},"AI-агенты","\u002Fru\u002Fdocs\u002Fpipelines\u002Fagents",{"title":597,"_path":598},"Детерминированные операторы","\u002Fru\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":600,"_path":601},"Управление потоком","\u002Fru\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":603,"_path":604},"Шаги с кодом","\u002Fru\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":606,"_path":607},"Суб-пайплайны","\u002Fru\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":609,"_path":610},"No-code действия","\u002Fru\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":612,"_path":613},"База знаний","\u002Fru\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":615,"_path":616,"children":617},"Супервизия","\u002Fru\u002Fdocs\u002Fsupervision",[618,621,624],{"title":619,"_path":620},"История выполнений","\u002Fru\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":622,"_path":623},"Кредиты и тарификация","\u002Fru\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":625,"_path":626},"Бенчмарки","\u002Fru\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":490,"_path":628,"children":629},"\u002Fru\u002Fdocs\u002Fsecurite",[630,633,636,639],{"title":631,"_path":632},"Принципы безопасности","\u002Fru\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":634,"_path":635},"Строгая мультитенантность","\u002Fru\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":637,"_path":638},"Аудит и журнал доступа GDPR","\u002Fru\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":640,"_path":641},"Суверенное развёртывание","\u002Fru\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":643,"_path":644,"children":645},"Разработчикам","\u002Fru\u002Fdocs\u002Fdeveloppeurs",[646,649,652],{"title":647,"_path":648},"Административный API","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":650,"_path":651},"Исходящие webhook","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":653,"_path":654},"Управление betool из Claude (MCP)","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":656,"_path":657,"children":658},"Интеграции","\u002Fru\u002Fdocs\u002Fintegrations",[659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713],{"title":660,"_path":661},"Обзор интеграций","\u002Fru\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":663,"_path":664},"Stripe","\u002Fru\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":666,"_path":667},"GitHub","\u002Fru\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":669,"_path":670},"Google","\u002Fru\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":672,"_path":673},"LinkedIn Ads","\u002Fru\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":675,"_path":676},"Kavkom","\u002Fru\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":678,"_path":679},"Jira","\u002Fru\u002Fdocs\u002Fintegrations\u002Fjira",{"title":681,"_path":682},"Slack","\u002Fru\u002Fdocs\u002Fintegrations\u002Fslack",{"title":684,"_path":685},"SMS","\u002Fru\u002Fdocs\u002Fintegrations\u002Fsms",{"title":687,"_path":688},"Enable Banking (open banking)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":690,"_path":691},"CRM, маркетинг и продуктивность","\u002Fru\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":693,"_path":694},"HeyGen (видео)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":696,"_path":697},"La Poste","\u002Fru\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":699,"_path":700},"Отраслевые CRM (beTool Application, Qhare)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":702,"_path":703},"Mitti (полевые инспекции)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":705,"_path":706},"Meta (Messenger, Pages, Meta Ads)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":708,"_path":709},"Onoff Business (Beta)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":711,"_path":712},"Smart Life \u002F Tuya (умные устройства)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":714,"_path":715},"Продукты beTool (Desktop, Kiosk, Terminal)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":717,"_path":718,"children":719},"Сценарии использования","\u002Fru\u002Fdocs\u002Fcas-usage",[720,723,726,729,732,735],{"title":721,"_path":722},"Типовые бизнес-агенты","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":724,"_path":725},"CFO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":727,"_path":728},"COO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":730,"_path":731},"CTO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":733,"_path":734},"Product Manager ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":736,"_path":737},"Персональный ассистент","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]