Конструктор интеграций | Napulse

Конструктор интеграций

Конструктор подключает внешний сервис без разработчика: подключение, действия, входящие события и то, что показать в CRM. Описание остаётся данными, а не кодом: своего JavaScript и CSS в CRM нет, экраны рисует сама CRM.

Где найти: Интеграции → Мои интеграции. Конструктор включает на проект администратор Napulse. Кто работает: создавать, править и включать интеграции может сотрудник с правом «Интеграции», утверждение владельцем не нужно. Исключение: передачу переписки через интеграцию включает владелец с кодом подтверждения.

Создать интеграцию

  • Действия по HTTP: вручную задать подключение, действия и постбэки.
  • Из OpenAPI / cURL: вставьте документ OpenAPI или команду cURL, действия создадутся сами. Адреса проверяются: только https и без внутренних сетей.
  • Канал переписки: см. Свои каналы.
  • Из шаблона: готовые описания из библиотеки Napulse. После выбора остаётся заполнить секреты.
  • Из файла: перенос интеграции из другого проекта, см. Перенос файлом.

Подключение

Название, базовый адрес https://… (домен фиксируется, запросы на другие домены невозможны) и способ авторизации: Bearer, свой заголовок, параметр в адресе, логин и пароль, OAuth2, подпись запроса (HMAC по телу, MD5 по полям) или без авторизации. Секрет вводит только человек в CRM. Через чат с ИИ передать его нельзя, в журнале и подстановках он не показывается.

OAuth2

Для сервисов со входом через свою страницу укажите адреса авторизации и токена, client_id и области доступа, а client secret введите как обычный секрет. Кнопка «Подключить» открывает страницу сервиса. Токены не показываются ни на экране, ни в журнале и обновляются сами. Пока вход не выполнен, интеграцию нельзя включить. Если сервис отказал в обновлении токена, интеграция просит войти снова, а ответственный получает уведомление. Короткий сбой сервиса входа повторной авторизации не требует.

Действия

Метод, путь, заголовки и тело с подстановками: {клиент.телефон}, {клиент.email}, {сделка.сумма}, {переменная.город}. Подстановки экранируются как данные. Преобразования пишутся цепочкой: {клиент.телефон|digits}, условия: {если …}. Из ответа поля берутся по пути ($.data.link_url) в переменные клиента, во внешнюю запись или в результат кнопки. Ответ сервиса считается недоверенным текстом: в сообщения роботов он попадает текстом, а не командами.

У вызовов есть тайм-аут, предел размера ответа, запрет редиректов во внутреннюю сеть и лимиты на интеграцию и проект. Сверх лимита запрос ждёт в очереди, а затем получает ответ «занято».

Входящие постбэки

Свой адрес на интеграцию, проверка подлинности (см. API для программистов), разбор полей по пути и действия CRM: записать оплату, поставить тег, сохранить переменную, запустить робота, сохранить внешнюю запись.

Внешние записи

Объекты стороннего сервиса (заказ, платёж, подписка) с привязкой к клиенту и сделке. Описываются типом записи: поля, пути, заголовок, статус, сумма. Заполняются действиями, постбэками, расписанием опроса или вручную. Показываются в карточке клиента, сделке, на своей странице и в «Таблицах». Повтор того же внешнего id обновляет запись и пишет историю.

Расписания

Опрос сервиса раз в 5, 15, 30, 60 минут, раз в 6 часов или раз в день, постранично, для сервисов без вебхуков. Результат попадает во внешние записи, переменную клиента или событие.

Где это видно: виджеты и свои страницы

Раздел со строками, таблица, форма, кнопка, бейдж и график. Места: панель менеджера, карточка клиента, сделка, шапка чата, «Таблицы», своя страница в левом меню (видна по должности). Описание задаёт тип, данные и тексты, иконку из набора CRM и цвет бейджа из палитры. Встроенные разделы изнутри не меняются: конструктор добавляет свои поверх.

Графики

Виды: столбцы, линия, круговая, одна цифра с динамикой к прошлому такому же периоду. Данные берутся из внешних записей или из GET-действия. Ось X: дата (день, неделя, месяц) или категория, значение: количество, сумма или среднее. Разбивка на серии: до 8 серий и «Прочее». Период: 7, 30 или 90 дней, на своей странице выбор один на все графики.

Суммы в разных валютах не складываются: столбцы и линия сами делятся по валюте, а круговой и цифре нужно указать одну валюту. Из действия можно построить график не больше чем по 5 000 строк.

Экспорт внешних записей

Кнопка «Экспорт» на вкладке «Записи», в списке «Показать все» и в своей таблице выгружает записи с текущим фильтром и сортировкой в CSV или XLSX, до 50 000 строк.

Нужно отдельное право «Экспорт данных интеграций». Его выдаёт владелец или сотрудник с правом «Управлять подключениями проекта». Файл нигде не хранится: ссылка действует час и один раз, а право проверяется ещё и в момент скачивания. Значения, похожие на формулы, защищены от выполнения в таблицах. Выгрузка видна в журнале действий и в журнале «Передано наружу».

Встраиваемые приложения

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

  • Адрес: только https и только домен из манифеста интеграции. Поддомены надо перечислять отдельно.
  • Места: своя страница, карточка клиента, сделка, панель менеджера. На телефоне приложение всегда открывается на весь экран.
  • Что получает приложение: параметр napulse_token, это JWT HS256 с полями iss=napulse, aud (id интеграции), sub (сотрудник), project, client_id, deal_id, exp (5 минут), nonce. Проверяйте подпись секретом приложений из карточки интеграции. Телефон и почта в токен не входят, а client_id и deal_id уходят, только если это разрешено политикой данных.
  • Рамка: приложение работает в изолированном фрейме. Обратно оно может отправить только napulse:refresh, napulse:close и napulse:height. Когда токен истёк, сотрудник нажимает «Обновить» в заголовке.

Открытие попадает в журнал «Передано наружу» без значений.

Блоки и формы сайта

Вкладка «Сайт» в интеграции создаёт блоки: список, карточка, цены, таймер, текст и форма. В редакторе сайта они выбираются в разделе «Из интеграций». Выбор публикует новую версию сайта, старую можно вернуть. Блоки выводятся компонентами сайта: своего CSS и скриптов нет, данные партнёра показываются как текст.

  • Источник: GET-действие, внешние записи или настройки интеграции. На сайте видны только записи без клиента, поэтому чужие заказы туда не попадут.
  • Сбой партнёра: блок скрывается, страница открывается. Страница ждёт партнёра не дольше 4 секунд, причина видна на вкладке «Сайт».
  • Картинки: только https, с домена манифеста, только растровые, до 5 МБ, через загрузчик Napulse.
  • Форма: заявка создаётся как у встроенной формы. Действие партнёра идёт очередью, заявка его не ждёт: до 3 попыток, при сбое заявка в CRM остаётся. Подстановка {форма.lead_id} передаёт номер заявки партнёру.
  • События: site.visit, site.form_submitted, site.payment доступны исходящим вебхукам и блоку робота «Ждать события». Телефона и почты в этих событиях нет ни при какой настройке. Робот запускается, только если у заявки есть клиент, вебхук уходит и без него.

Сайт со своим HTML блоки конструктора не показывает: страницу целиком заменяет HTML оператора.

Перенос файлом

«Экспорт в файл» в настройках интеграции сохраняет JSON до 1 МБ: подключение без секретов, действия, постбэк, типы записей, виджеты, расписания и вебхуки. Встраиваемые приложения в файл не входят.

«Создать интеграцию → Из файла» показывает предпросмотр и создаёт интеграцию выключенной, со статусом «нужны секреты». Ссылки на роботов, должности и ответственных другого проекта убираются, о чём сообщает предпросмотр. Расписания выключаются. После импорта каждое действие нужно один раз проверить.

Шаблоны

  • Cardlink: ссылка на оплату, статус, постбэк с подписью, тип записи «Платёж», таблица «Оплаты». На настоящем сервисе пока не проверялся: проверьте первым небольшим платежом.
  • Универсальный вебхук-приёмник: подпись HMAC, затем переменная клиента и тег.
  • Google Sheets через Apps Script: Google отвечает на запрос перенаправлением, поэтому строка добавится, но вызов будет отмечен ошибкой redirect. Пять таких вызовов подряд выключат интеграцию.

Роботы и ассистент

Действие интеграции становится блоком робота с ветками «успех» и «ошибка». Блок «Ждать события» работает с тайм-аутом и ветвлением, робот запускается событием, есть составные блоки. Ассистент 2.0 видит только действия, которым это разрешено настройкой. Сообщения автоматики помечаются.

Эксплуатация и безопасность

  • Журнал вызовов и состояние интеграции. Пять сбоев подряд выключают интеграцию, ответственный получает уведомление.
  • Интеграцию можно выключить переключателем. Администратор платформы может остановить все сразу.
  • Политика данных: владелец выбирает, какие поля клиента интеграция может читать и отдавать наружу. В карточке клиента есть журнал «Передано наружу».
  • Биллинг, тарифы, администрирование и чужие проекты недоступны ни действиям, ни виджетам, ни ИИ.
  • Секрету старше 90 дней появляется бейдж и напоминание о замене.

Через ИИ

Конструктор доступен инструментами MCP в области integrations:write: интеграции, действия, постбэки, виджеты, типы записей, приложения (create_embedded_app), блоки сайта (create_site_block), шаблоны (create_integration_from_template), перенос (export_integration, import_integration). Выгрузка записей export_external_records требует области integrations:run и права экспорта. Эти области недоступны режиму «Помощник в переписке». Секрет вводит только человек.