Перейти к содержимому
Антон ГончаровРазработчик ИИ-систем

Backend на Python · вебхуки → amoCRM и Битрикс24

Интеграционный хаб заявок

Заявки приходят из десятка мест, и каждое присылает их по-своему: Tilda — формой, интернет-магазин — заказом с подписью, Директ и VK — лид-формами, АТС — событием звонка. Часть теряется, часть дублируется, а когда CRM на минуту ложится, заявки пропадают молча. Хаб принимает всё в одну точку, чистит, оценивает и отдаёт в CRM через очередь — так, что ни одна заявка не теряется и не создаётся дважды. Здесь у вас своя песочница на сутки: настоящий сервис на Python, свои адреса вебхуков и имитации двух CRM, которые можно сломать.

Сценарий: Обжарочная «Зерно» — вымышленная: опт для кофеен и офисов, интернет-магазин, реклама в Директе, VK и на Авито, звонки и почта. Менеджеры и клиенты тоже вымышлены.

Скриншот демо: Интеграционный хаб заявок

Открыть демо

Песочница создаётся одной кнопкой и живёт сутки. Квиз, виджет и голосовая заявка из того же браузера отправят заявки в неё сами, а бот заявок — после перехода по ссылке из песочницы.

Приложение работает в браузере: на сервер ничего не отправляется.

Что показывает демо

  • 12 источников: Tilda, WooCommerce, JSON с любого сайта, Яндекс Директ, VK Реклама, Авито, звонки АТС, почта, квиз, виджет, голосовая заявка и бот в Telegram и Max

  • У каждого источника — его формат и защита: подпись HMAC у WooCommerce и бота, токен у Директа, строка подтверждения у VK, подпись АТС

  • Очистка: телефон в одном формате, регион по коду номера, исправленное имя, метки UTM или источник по адресу вебхука

  • Дубли: повторное обращение за 30 дней не создаёт новую сделку, а дописывается примечанием к старой и остаётся у того же менеджера

  • Оценка заявки и маршрутизация по правилам: опт или розница, какому менеджеру, какой тег; остальное — по очереди

  • Доставка через очередь в PostgreSQL: повторы через 5 с, 15 с, 45 с, 2 и 5 минут, очередь недоставленных и повтор вручную

  • Имитации amoCRM и Битрикс24 с их методами и ответами: лимит запросов, ошибки, «через раз», таймаут и просроченный OAuth-токен

  • Трасса каждой заявки от сырого запроса до сделки, события в реальном времени и вкладка «Код» с исходниками хаба

Как попробовать

  1. Создайте песочницу

    На вкладке «Источники» — адреса вебхуков и ключи. Нажмите «Прислать пример» у Tilda, Директа или звонков — увидите запрос в формате сервиса и ответ хаба.

  2. Пришлите настоящую заявку

    Пройдите квиз или оставьте телефон в виджете — заявка придёт в песочницу сама. Или напишите боту заявок по ссылке из песочницы.

  3. Посмотрите путь заявки

    Вкладка «Заявка»: как хаб очистил телефон, определил регион, оценил заявку, какое правило выбрало менеджера и когда сделка появилась в CRM.

  4. Сломайте CRM

    На вкладке «Доставка» включите amoCRM «Ошибка 500», а Битрикс24 — «Таймаут», и пришлите пару заявок: хаб повторит, ничего не потеряет и не создаст дублей.

Без платных нейросетей

Хаб настоящий: сервис на Python (FastAPI, SQLAlchemy, PostgreSQL) на этом же сервере принимает вебхуки, ведёт очередь и повторы. Вместо аккаунтов amoCRM и Битрикс24 — их имитации с теми же методами и ответами, включая сбои. Оценка и маршрутизация — правила, без нейросетей. Песочница и её заявки удаляются через сутки.

Демо работает без API-ключей OpenAI, YandexGPT или GigaChat. Там, где рабочая система обращается к модели, стоит локальная заглушка с тем же интерфейсом — поэтому демо бесплатно, всегда доступно и ничего не выдумывает.

Что будет в рабочем проекте

  • Настоящие amoCRM и Битрикс24: OAuth-приложение или входящий вебхук, свои поля, воронки и пользователи
  • Подключение источников в их кабинетах: Tilda, WooCommerce, Директ, VK, Авито, АТС, почтовый ящик
  • Уведомления менеджеру в Telegram или Max о горячих заявках и о том, что CRM не принимает заявки
  • Отчёт по источникам: сколько заявок, дублей и сделок принесла каждая реклама
  • Мониторинг очереди и алерты, бэкапы базы, журнал запросов на месяц

Стек

  • Python 3.14
  • FastAPI
  • SQLAlchemy 2 (async)
  • PostgreSQL
  • Alembic
  • httpx
  • SSE
  • Docker
  • React 19
  • TypeScript
  • Zustand

Основано на

Книги и дисциплины, идеи из которых работают в этом демо.

Комментарий от разработчика

Антон Гончаров

Разработчик ИИ-систем · Python

Для бизнеса

  • Ни одна заявка не теряется, даже когда CRM на минуту недоступна: хаб повторит доставку сам.
  • Повторное обращение не плодит сделки — оно дописывается к старой и остаётся у того же менеджера.
  • Сайт, реклама, звонки, почта и боты — в одной точке и в одном формате; видно, какая реклама приносит заявки.

Для разработчиков

  • FastAPI, асинхронная SQLAlchemy 2 и PostgreSQL. Вебхук принимает, чистит и сохраняет заявку, а в CRM она уходит через очередь — источник не ждёт CRM.
  • Очередь — на SELECT … FOR UPDATE SKIP LOCKED, без Redis и брокера: повторы от 5 секунд до 5 минут, потом очередь недоставленных.
  • У каждого источника свой адаптер к общему виду заявки и своя проверка: подпись HMAC, токен или строка подтверждения.

Советы

  • Совет 01

    Принимайте вебхук быстро, а тяжёлую работу делайте потом: отправитель не обязан ждать вашу CRM.

  • Совет 02

    Закладывайте защиту от дублей с первого дня: повторные запросы бывают у всех, а дубли — у тех, кто о них не подумал.

Нужен такой же для вашего бизнеса?

Расскажите о задаче — отвечу, что из демо подойдёт вам, сколько это займёт и что понадобится с вашей стороны.

Другие демо в этом разделе

Все демо
  • Веб-приложение · распознавание речи · нейросеть в браузере

    работает

    Голосовая заявка

    Клиент наговаривает заявку голосом, а менеджер получает готовую карточку: имя, компания, телефон, бюджет, сроки, задача и оценка — горячий лид или нет. Речь распознаёт Whisper прямо в браузере.

    • React
    • TypeScript
    • Нейросеть в браузере
  • Веб-приложение · звонок в браузере · распознавание и синтез речи

    работает

    Голосовой оператор доставки

    Робот принимает заказы по телефону вместо администратора: слушает, переспрашивает, проверяет адрес по зонам доставки, считает сумму и читает заказ перед подтверждением. Звонок идёт прямо в браузере — кнопка «Позвонить», без номера телефона.

    • React
    • TypeScript
    • Нейросеть в браузере
  • Веб-приложение · распознавание речи · контроль отдела продаж

    работает

    Речевая аналитика звонков

    Звонок отдела продаж превращается в расшифровку по ролям, оценку по скрипту и заполненную карточку сделки: клиент, контакты, интерес, озвученная цена, следующий шаг и задача менеджеру. Речь распознаёт Whisper прямо в браузере.

    • React
    • TypeScript
    • Нейросеть в браузере
  • Веб-приложение · документы · DOCX и PDF

    работает

    Генератор КП и договора

    Менеджер заполняет анкету сделки — покупатель, товары, скидка, НДС, — а коммерческое предложение, договор поставки и счёт собираются на листе A4 на глазах. На выходе — Word, PDF или JSON.

    • React
    • TypeScript
  • Веб-приложение · B2B · КП в PDF

    работает

    Конфигуратор цены

    Менеджер собирает заказ на все окна квартиры: тип, размер, створки на схеме, профиль, стеклопакет и цвет. Правила производства проверяются сразу, скидки и рассрочка считаются сами, КП с номером уходит в PDF.

    • React
    • TypeScript
  • Веб-приложение · финансы · сравнение

    работает

    Ипотечный калькулятор

    Пять программ банков на одном экране: какие подходят клиенту и почему остальные нет. Льготная ставка от застройщика, дифференцированный платёж, досрочное погашение, нагрузка на доход и налоговый вычет.

    • React
    • TypeScript
  • Веб-приложение · смета · PDF

    работает

    Калькулятор сметы ремонта

    Размеры комнат превращаются в площади пола, стен и потолка, а те — в работы по этапам. Работа и материалы отдельно, срок по выработке бригады, график оплаты и версии сметы для торга с клиентом.

    • React
    • TypeScript
  • Веб-приложение · витрина · чекаут · заказы

    работает

    SPA-каталог на React

    Магазин целиком в браузере: поиск с подсказками и исправлением раскладки, фасеты с живыми счётчиками, ссылки на любой фильтр, избранное, корзина с промокодом и чекаут с выбором слота доставки. Заказы видны в «Моих заказах» со статусами, их можно повторить или отменить.

    • React
    • TypeScript
  • Машинное обучение на Python · работает в браузере

    работает

    Аналитика отзывов с маркетплейсов

    Отзывы с Wildberries, Ozon и Яндекс Маркета через API продавца: модели scikit-learn определяют тональность и о чём пишут покупатели, тревога поднимается в первую неделю всплеска жалоб, новые темы находятся сами, а ответ уходит обратно через API площадки. Модели обучаются прямо в браузере.

    • Python
    • React
    • TypeScript
  • Виджет для сайта · нативный JS · одна строка

    работает

    Виджет AI-консультанта

    Консультант для любого сайта, который ставится одной строкой: отвечает по базе знаний со ссылкой на источник, собирает заявку и зовёт оператора. Написан на чистом JavaScript без фреймворков — весь виджет 21 КБ в gzip.

    • Нативный JS
  • Виджет для сайта · нативный JS · заявки

    работает

    Квиз-форма заявки

    Квиз вместо длинной формы: шесть вопросов с ветвлением, в конце — расчёт по прайсу. Менеджер получает заявку с оценкой «горячая / тёплая / холодная» и источником рекламы, а вкладка «Аналитика» показывает, на каком шаге уходят люди.

    • Нативный JS