#Чат с ИИ-продажником: обзор
Статус: Доступно / Планируется. Виджет одной строкой и клиентский Chat API — Доступно. Серверный API диалогов: чтение — Доступно, запись — Планируется. JS API виджета и параметры виджета v2 — Планируется. Статус каждого способа указан в таблицах ниже.
Назначение: объяснить, что умеет чат с ИИ-продажником, какими тремя способами его встроить в свой сайт, приложение или мессенджер и какой способ выбрать.
#Содержание
- Что делает чат
- Три способа встроить
- Как выбрать
- Схема потоков данных
- Адреса ячеек
- Деньги и пределы
- Персональные данные и согласие
- Куда читать дальше
- Открытые вопросы
#Что делает чат
ИИ-продажник — собеседник на вашем сайте (или в вашем канале), который ведёт посетителя от вопроса к заявке.
| Возможность | Как это работает | Статус |
|---|---|---|
| Отвечает по базе знаний арендатора | Ответ строится по материалам, которые вы загрузили в базу знаний своего арендатора, и по настройкам агента | Доступно |
| Знает, на какой странице находится посетитель | Виджет передаёт адрес, заголовок и тип страницы; модель получает их в промпте как данные браузера, не как инструкции (Страница, источник и UTM) | Доступно |
| Передаёт разговор оператору | Оператор в кабинете берёт диалог; пока он ведёт его, ИИ не отвечает. Суточный предел ответов ИИ тоже передаёт диалог оператору. В своём канале запрос на передачу приходит событием conversation.handoff_requested | Доступно (в своём канале — Планируется) |
| Создаёт лид с атрибуцией | Когда в диалоге набирается достаточно сведений, платформа заводит контакт и лид; у лида сохраняется источник визита | Доступно |
| Принимает файлы | Изображения и документы до 10 МБ | Доступно (с ограничением: клиентский Chat API) |
| Работает в своём канале (мессенджер, приложение, CRM) | Серверный API: вы передаёте реплики клиента, ответ ИИ приходит асинхронно (202 и операция conversation.ai_reply, либо вебхук message.created), реплики оператора приходят вебхуком | Планируется |
Что чат не делает: не показывает другим посетителям чужие диалоги, не выполняет инструкции, спрятанные в заголовке или адресе страницы, не обещает ответа, если суточный предел ИИ исчерпан (в этом случае диалог переходит к оператору).
#Три способа встроить
| Способ 1. Виджет | Способ 2. Свой интерфейс | Способ 3. Свой канал | |
|---|---|---|---|
| Суть | Одна строка <script> на странице: кнопка и окно чата готовы | Вы рисуете чат сами и обращаетесь к клиентскому Chat API из браузера или приложения | Ваш сервер вызывает серверный API: клиент общается в вашем мессенджере, ИИ и оператор отвечают через платформу |
| Статус | Доступно | Доступно (с ограничением по CORS, см. ниже) | Планируется |
| Что нужно | Идентификатор канала web_chat и домен сайта в списке арендатора | Идентификатор канала web_chat | Ключ API (права conversations:*, ai_seller:invoke) и канал api, созданный в кабинете вместе с интеграцией; идентификатор канала возвращает GET /me |
| Ключи и секреты | Не нужны. channel_id публичен | Не нужны. channel_id публичен; токен сессии выдаёт сервер | Секретный ключ только на вашем сервере |
| Кто рисует интерфейс | Платформа | Вы | Вы (мессенджер) |
| Оплата | Из кошелька арендатора за ответы ИИ | То же | То же, с резервированием, предельными тратами и суточным пределом канала api, как у виджета |
| Страница | Встраивание виджета | Клиентский Chat API | Серверный API диалогов, руководство |
Дополнительно к способу 1 планируется JS API виджета (Sapport.open(), Sapport.on(), identify и др.) — JS API виджета, статус Планируется.
Важно про способ 2. Маршруты клиентского Chat API (
messages,history,poll,events,upload) не отдают заголовки CORS. Из браузера они доступны со страниц, которые открыты на домене самой ячейки, а со стороннего домена браузер заблокирует чтение ответа. Рабочие варианты — в разделе «Известные ограничения» страницы про клиентский API.
#Как выбрать
| Ваша ситуация | Выбор |
|---|---|
| Нужен чат на сайте, дизайн не критичен, хватает цвета, приветствия и позиции | Способ 1 (виджет) |
| Сайт на Bitrix или WordPress | Модуль коннектора ставит загрузчик, а он подключает виджет (Загрузчик) |
| Нужен собственный дизайн чата в приложении или на странице ячейки | Способ 2 (клиентский Chat API) |
| Нужен чат в вашем мессенджере, виджете другой системы или сквозной канал со своей CRM | Способ 3 (серверный API; пока проект) |
| Нужно открывать чат по своей кнопке «Задать вопрос» | Сегодня: свой скрипт не может открыть окно виджета (JS API нет) — временные способы. После выхода JS API: Sapport.open() |
#Схема потоков данных
#Способ 1. Виджет
Страница сайта-хозяина Ячейка Sapport
┌──────────────────────────┐
│ <script src=…/widget.js │ POST /api/widget/init (CORS *)
│ data-channel=…> │ ───────────────────────────────► название, цвет, приветствие,
│ │ ◄─────────────────────────────── форма перед чатом, согласие
│ [кнопка 60 px] │
│ │ клик │
│ ▼ │ iframe: /widget/<channel_id>?page=…&title=…&ft=…
│ ┌─────────────────┐ │ ───────────────────────────────► страница чата (наш домен)
│ │ iframe 380×560 │ │
│ │ (наш домен) │ ─── POST /api/widget/messages ───────► ИИ-продажник
│ │ │ ◄── ответ, session_token ──────────── │ ├─ база знаний
│ │ │ ◄── SSE /events (или /poll) ───────── │ ├─ контакт, лид, атрибуция
│ └─────────────────┘ │ │ └─ оператор в кабинете
│ ▲ postMessage │
│ └ sapport:new-message │
│ sapport:close │
└──────────────────────────┘
#Способ 2. Свой интерфейс
Ваш интерфейс (страница на домене ячейки или ваш прокси) Ячейка Sapport
┌──────────────────────┐ POST /api/widget/init ┌─────────────────┐
│ ввод, список реплик, │ ──────────────────────────────────►│ канал web_chat │
│ индикатор набора │ POST /api/widget/messages │ ИИ-продажник │
│ │ ──────────────────────────────────►│ оператор │
│ хранит session_token │ ◄── response + session_token │ │
│ │ GET /history /poll /events │ │
│ │ ◄──────────────────────────────────│ │
└──────────────────────┘ └─────────────────┘
#Способ 3. Свой канал (Планируется)
Клиент ──► ваш мессенджер ──► ваш сервер Ячейка Sapport
│ POST /conversations ┌────────────────────┐
│ POST …/messages │ канал «api» │
│ (Idempotency-Key, Bearer) │ ИИ-продажник │
│ ─────────────────────────────►│ оператор │
│ ◄── 202 + operation ──────────│ кошелёк арендатора │
│ (GET /operations/{id}) │ │
│ ◄── вебхук message.created ───│ outbox → доставка │
│ (ответ ИИ, ответ оператора)└────────────────────┘
Клиент ◄── ваш мессенджер ◄──────┘
#Адреса ячеек
Три независимые ячейки. Каналы, ключи и данные принадлежат одной ячейке; используйте адрес той, где заведён ваш арендатор (Ячейки и данные).
| Ячейка | Базовый адрес |
|---|---|
| RU | https://formula-cream.pro |
| EN | https://wfacademy.org |
| ID | https://wfacademy.id |
Скрипт виджета: https://<домен ячейки>/widget.js. Клиентский Chat API: https://<домен ячейки>/api/widget/…. Серверный API: https://<домен ячейки>/api/public/v1.
#Деньги и пределы
- Каждый ответ ИИ — платная операция из кошелька арендатора. Маршрут открыт для любого посетителя, поэтому у него есть собственные ограничения.
- Длина реплики — не более 4000 знаков (
413 message_too_long). - Частота сообщений: 20 в минуту на посетителя (канал + IP) и 240 в минуту на канал. Счётчики хранятся в памяти процесса сервера.
- Суточный предел ответов ИИ на канал арендатора — 200 по умолчанию (настройка канала
ai_daily_limit, максимум 10 000). После предела сообщение сохраняется, а диалог переходит к оператору; ответ клиентского Chat API содержитqueued: true. В серверном API диалогов тот же предел действует для каналаapi: сообщение сохраняется, диалог получает состояниеhandoff_pending, а вai_replyприходит{"status": "skipped", "reason": "daily_limit"}. - Загрузка файла: 10 МБ, 5 в минуту на IP, 30 в минуту на канал.
- Серверный API: не более 5 одновременных платных операций на интеграцию, стоимость одной операции ограничена примерно 100 ₽ (Соглашения).
Подробные таблицы — на странице Клиентский Chat API.
#Персональные данные и согласие
- Если арендатор задал текст согласия с офертой, посетитель не отправит сообщение, пока не согласится. Версия согласия зависит от текста и ссылки: правка текста требует нового согласия.
- Первое касание (UTM, метки кликов, реферер) хранится в браузере на сайте-хозяине и уходит на платформу только при наличии согласия посетителя (при установке через загрузчик).
- Подробнее: Страница, источник и UTM.
#Куда читать дальше
| Задача | Страница |
|---|---|
| Поставить виджет, настроить внешний вид, скопировать готовый блок | Встраивание виджета |
| Управлять виджетом из кода страницы (открыть, отправить, подписаться на события) | JS API виджета (Планируется) |
| Понять, откуда лид и на какой странице был клиент | Страница, источник и UTM |
| Построить свой интерфейс чата | Клиентский Chat API |
| Управлять диалогами с сервера | Серверный API диалогов (чтение — Доступно, запись — Планируется) |
| Подключить свой мессенджер | ИИ-продажник в своём канале (Планируется) |
| Работать с ошибками, повторами, пределами | Соглашения |
| Получать события вместо опроса | Вебхуки |
Готовые файлы для копирования лежат в каталоге examples/.
#Открытые вопросы
- Когда будет опубликован серверный API диалогов и в каком порядке выйдут JS API виджета и параметры v2 — срок в проекте не зафиксирован. К владельцу.
- Заголовки CORS для клиентского Chat API (
messages,history,poll,events,upload) в проекте не описаны; сегодня их нет. Техническое. - Где именно
GET /meотдаётchannel_idканалаapiи как кабинет показывает его при создании интеграции — форма ответа предварительная. Техническое.