# 🤖 SaleBot AI Widget — Виджет чат-бота для сайта
Встраиваемый JavaScript виджет для общения с ИИ-помощником прямо на вашем сайте.
## 📋 Возможности
- ✅ Плавающая кнопка в правом/левом углу
- ✅ Окно чата с историей сообщений
- ✅ Индикатор набора текста
- ✅ Адаптивный дизайн (мобильные + десктоп)
- ✅ Кэширование ответов
- ✅ Поддержка сессий пользователей
- ✅ Настройка цветов и текста
- ✅ Callback функции для событий
## 🚀 Быстрая установка
### 1. Базовая установка
```html
```
### 2. Расширенная настройка
```html
```
## ⚙️ Параметры конфигурации
| Параметр | Тип | По умолчанию | Описание |
|----------|-----|--------------|----------|
| `projectId` | string | **обязательно** | UUID проекта из SaleBot AI |
| `baseUrl` | string | `https://salebot.dnrrus.ru` | URL вашего сервера |
| `userId` | string | `null` | ID пользователя для аналитики |
| `title` | string | `'Помощник'` | Заголовок окна чата |
| `color` | string | `'#4a90d9'` | Основной цвет виджета (hex) |
| `position` | string | `'right'` | Положение кнопки (`'right'` или `'left'`) |
| `width` | string | `'380px'` | Ширина окна чата |
| `height` | string | `'550px'` | Высота окна чата |
| `welcomeMessage` | string | `'Здравствуйте!...'` | Приветственное сообщение |
| `placeholder` | string | `'Введите сообщение...'` | Текст в поле ввода |
| `showStatus` | boolean | `true` | Показывать статус внизу |
| `onMessage` | function | `null` | Callback при отправке сообщения |
| `onReceive` | function | `null` | Callback при получении ответа |
## 🎨 Примеры настройки
### Синий виджет слева
```javascript
SaleBotWidget.init({
projectId: 'ВАШ_UUID',
color: '#2196f3',
position: 'left',
title: 'Онлайн-помощник'
});
```
### Зелёный виджет для магазина
```javascript
SaleBotWidget.init({
projectId: 'ВАШ_UUID',
color: '#4caf50',
title: 'Помощник покупателя',
welcomeMessage: '👋 Привет! Помочь с выбором товара?',
placeholder: 'Какой товар вас интересует?'
});
```
### С отслеживанием событий
```javascript
SaleBotWidget.init({
projectId: 'ВАШ_UUID',
userId: getCurrentUserId(), // Ваша функция
onMessage: function(text) {
console.log('Пользователь отправил:', text);
// Отправить в аналитику
ym(XXXXXX, 'reachGoal', 'chat_message');
},
onReceive: function(answer) {
console.log('Бот ответил:', answer);
// Отправить в аналитику
ym(XXXXXX, 'reachGoal', 'chat_response');
}
});
```
## 🔧 API методы
После инициализации доступны методы управления:
```javascript
// Открыть чат
SaleBotWidget.open();
// Закрыть чат
SaleBotWidget.close();
// Переключить видимость
SaleBotWidget.toggle();
// Отправить сообщение программно
SaleBotWidget.sendMessage('Как оформить заказ?');
```
## 📱 Мобильная адаптация
Виджет автоматически адаптируется под мобильные устройства:
- На экранах < 480px окно занимает почти весь экран
- Кнопка остаётся доступной в углу
- Поддержка touch-жестов
## 🎯 Как получить Project UUID
1. Откройте веб-интерфейс SaleBot AI
2. Создайте проект или откройте существующий
3. В настройках проекта скопируйте UUID (выглядит как `8e670e50-2945-4733-aaa1-f23b44483df2`)
## 🔐 Требования к проекту
Проект должен иметь:
- ✅ Загруженную базу знаний (документы)
- ✅ Настроенный LLM провайдер
- ✅ System Prompt (опционально)
## 🚨 Устранение неполадок
### Виджет не отображается
1. Проверьте консоль браузера (F12) на ошибки
2. Убедитесь, что `projectId` указан верно
3. Проверьте доступность сервера (`baseUrl`)
### Ошибка "Project not found"
- Проект не найден или не активен
- Проверьте UUID в настройках проекта
### Ошибка "Network response was not ok"
- Сервер недоступен
- Проверьте `baseUrl` (должен быть `https://` для продакшена)
- Проверьте CORS настройки на сервере
### Виджет перекрывает контент
Измените положение:
```javascript
SaleBotWidget.init({
projectId: 'ВАШ_UUID',
position: 'left' // Переместить влево
});
```
Или настройте отступы в CSS вашего сайта:
```css
#salebot-widget {
bottom: 100px; // Поднять выше
right: 100px; // Сдвинуть от края
}
```
## 📊 Аналитика
Используйте callback функции для отслеживания в Яндекс.Метрике, Google Analytics:
```javascript
SaleBotWidget.init({
projectId: 'ВАШ_UUID',
onMessage: function(text) {
// Яндекс.Метрика
ym(XXXXXX, 'reachGoal', 'chat_message_sent');
// Google Analytics
gtag('event', 'chat_message', {
'event_category': 'engagement',
'event_label': text.substring(0, 50)
});
},
onReceive: function(answer) {
ym(XXXXXX, 'reachGoal', 'chat_response_received');
}
});
```
## 🔒 Безопасность
- Виджет использует только публичные API endpoints
- Не передаёт персональные данные без явного указания `userId`
- Сообщения кэшируются на 5 минут для ускорения повторных запросов
- HTTPS рекомендуется для продакшена
## 📝 Примеры использования
### Интернет-магазин
```javascript
SaleBotWidget.init({
projectId: 'shop-uuid',
title: 'Помощник покупателя',
color: '#ff6b6b',
welcomeMessage: '👋 Привет! Помочь с выбором или оформлением заказа?',
placeholder: 'Какой товар ищете?',
userId: getCustomerId(),
onMessage: function(text) {
trackEvent('shop_chat', 'message', text);
}
});
```
### Сайт услуг
```javascript
SaleBotWidget.init({
projectId: 'service-uuid',
title: 'Консультант',
color: '#4ecdc4',
welcomeMessage: 'Здравствуйте! Задайте вопрос об наших услугах.',
placeholder: 'Ваш вопрос...',
position: 'left'
});
```
### Техподдержка
```javascript
SaleBotWidget.init({
projectId: 'support-uuid',
title: 'Техподдержка',
color: '#9b59b6',
welcomeMessage: '🔧 Служба поддержки. Опишите проблему.',
placeholder: 'Что случилось?',
userId: getUserEmail(),
onReceive: function(answer) {
logSupportInteraction(answer);
}
});
```
## 🎨 Кастомизация через CSS
Переопределите стили виджета:
```css
/* Изменить размер кнопки */
#salebot-widget .sb-widget-btn {
width: 70px;
height: 70px;
}
/* Изменить шрифт сообщений */
#salebot-widget .sb-message {
font-size: 15px;
font-family: 'Your Font', sans-serif;
}
/* Изменить тень окна */
#salebot-widget .sb-chat-window {
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
}
```
## 📦 Обновление виджета
При обновлении сервера виджет обновляется автоматически (статический файл).
Для принудительного обновления у клиентов:
```html
```
## 🆘 Поддержка
Возникли проблемы? Создайте тикет в техподдержку через веб-интерфейс.
---
**Версия виджета:** 1.0
**Последнее обновление:** 2026-06-19