iQBot 3.0
Дата выпуска: 11 ноября 2026.
iQBot 3.0 – переработанная версия платформы: диалоговый движок, понимание естественного языка (NLU), Студия разработки ботов и административная панель. Платформа собирается и разворачивается на собственном стеке, а все возможности доступны сразу, без деления на редакции и лицензионного ключа.
Главное в версии
- Собственный автономный движок NLU для русского языка, без обращения к внешним сервисам.
- Одна редакция: нет деления на Pro и не Pro, нет лицензионного ключа и ограничений по функциям.
- Режим кластера через Redis работает в ядре платформы, узлы обрабатывают в несколько раз больше сообщений в секунду.
- Единый вход через OpenID Connect и LDAP, второй фактор (TOTP), самостоятельный сброс пароля.
- Визуальный редактор ролей в административной панели.
- Звенья «ИИ-агент», «Переадресация диалога» и «Закрытие диалога».
- История изменений бота: кто, что и когда менял, с откатом и сравнением ревизий.
- Новые руководства инженера и пользователя взамен устаревшей документации.
Студия и конструктор процессов
- Свойства звена, действия или перехода открываются двойным щелчком.
- Условия перехода собираются конструктором. Переход «Если нажата кнопка» выбирает кнопку из элементов «Одиночный выбор» бота, переход по намерению подписан «Если «имя намерения»» и получил порог уверенности. Выражения на JavaScript остаются доступны.
- Одиночный выбор показывается в эмуляторе и веб-чате кнопками в ряд с переносом. Значение кнопки не обязательно: если оно пустое, подставляется название кнопки. Тип «Выбор значения» упразднён как дублирующий, его элементы переносятся в одиночный выбор при загрузке бота.
- Новые звенья-навыки получают русские имена («Выбор 1», «API 2»), а цель перехода в другой процесс выбирается из списка звеньев этого процесса.
- Окно «Добавить новое действие» стало удобнее, а под списком есть ссылка на создание нового скрипта в редакторе кода. Шаблон нового действия написан по-русски.
- Названия, категории и описания поставляемых действий переведены на русский и переписаны так, чтобы было понятно, что действие делает.
- В Студии видно, кто ещё открыл этого бота.
- Плашки состояния сервисов в верхней панели Студии и в заголовке консоли: NLU, языки, Duckling, сообщения, сокеты, в кластере Redis. Подсказка по плашке объясняет, что значит сбой и что проверить.
- Вкладка «Результат» отладчика переведена целиком и показывает решение диспетчера диалогов с причиной, определённый и используемый язык, топ намерений. Для ответа из базы вопросов-ответов показан текст вопроса.
- Имя слота намерения можно писать по-русски и с пробелами.
- Подсказки об ошибках процесса и о том, что бот требует обучения, показываются у соответствующих значков и кнопок, в том числе у бота с несколькими языками.
Список ботов
- Два вида плашек: подробные и миниатюрные.
- Фильтр по состоянию: опубликован, персональный, отключён, ошибка. Выбранные вид и фильтр запоминаются в браузере.
- После создания, копирования или импорта страница прокручивается к новому боту, и его плашка подсвечивается.
- В меню бота появились пункты «Создать копию», «История изменений» и «Конфигурация».
- Аватар бота по умолчанию заменён на новое изображение.
Диалоги, ИИ и тестирование
- ИИ-агент. Профили шлюза в настройках модуля задают адрес, модель, заголовки, тайм-аут и параметры, поэтому переключение между локальной моделью, GPU-сервером и облаком не требует правки ботов. Ключи доступа берутся из переменных окружения
EXPOSED_*. В звене можно включить историю диалога: последние реплики уходят модели. - История диалога. Платформа сама хранит реплики клиента и ответы бота. Скрипты читают их вызовом
iqbot.dialog.getHistory. Срок хранения и число реплик настраиваются в разделеdialogHistoryфайлаiqbot.config.json, по умолчанию 7 дней и 200 реплик. - Переадресация и закрытие диалога. Бот передаёт диалог оператору, группе или в очередь iQChannels, при этом можно сменить тему обращения. Другое звено закрывает обращение.
- Вопросы и ответы внутри процесса. Опция бота «Вопросы-ответы внутри процесса» позволяет ответить на вопрос из базы знаний, не выходя из текущего звена. По умолчанию выключена.
- Автотесты. Обновлённый интерфейс сценариев, отчёт о том, на каком шаге и почему сценарий не прошёл, проверка минимальной уверенности ответа. Все сценарии бота запускаются из командной строки командой
test-scenarios, она завершается с ненулевым кодом, если хотя бы один сценарий не прошёл, что удобно для CI. Нажатие кнопки воспроизводится как нажатие кнопки. - Непонятые фразы. Значок перед фразой показывает, чем она помечена, повторы собраны в бейдж с числом, системные события в ленте диалога переведены.
NLU и язык
- Собственный автономный движок понимания естественного языка для русского языка.
- Специализированный классификатор «вне области применения» точнее отличает бессмысленные фразы от реальных намерений.
- Если обучение бота не удалось, Studio открывает окно «Результат обучения»: в нём названа причина (например, в намерении нет ни одной фразы, у слота несуществующая сущность, язык не поддерживается языковым сервером, недоступен NLU или Duckling) и сказано, что сделать. Текст ответа сервера NLU свёрнут в «Подробности», а в строке состояния есть ссылка «Подробнее».
- Если обучение прервано (NLU остановился или перезапущен) или рабочий процесс обучения аварийно завершился (обычно не хватило памяти), окно «Результат обучения» говорит об этом и подсказывает, что сделать. Платформа пишет причину и в журнал.
- Исправлены ошибки русской локализации, найденные в ходе аудита переводов.
- Языковой сервер по умолчанию слушает порт 3150 и больше не делит порт 3100 с сервисом сообщений. Если языковой сервер не отвечает, страница «Управление языками» показывает плашку «Языковой сервер недоступен» с кнопкой «Проверить снова».
Администрирование и безопасность
- Единый вход. Стратегии
oauth2(OpenID Connect: Keycloak, ADFS, Okta и другие) иldap(Active Directory, OpenLDAP). Учётные записи создаются при первом входе. Способ входа задаётся при установке и один на платформу. SAML не поддерживается. - Второй фактор. Одноразовые коды приложения-аутентификатора и коды восстановления, режимы
off,optionalиrequired. Администратор может сбросить второй фактор пользователя. - Сброс пароля. Ссылка «Забыли пароль?» на странице входа, письмо со ссылкой на один час, не больше пяти запросов в час с одного адреса. При создании и сбросе пароля администратор решает, требовать ли смену при первом входе.
- Пользователь для интеграции, например для iQChannels: вместо пароля выдаётся секрет, который показывается один раз и перевыпускается кнопкой. В консоль такая учётная запись войти не может.
- Редактор ролей. Права выбираются галочками в дереве ресурсов, роли можно создавать, редактировать, дублировать и удалять, три базовые роли восстанавливаются одной кнопкой. Доступ к модулю и его пункту в меню Студии задаётся одним правом
module.<имя>. - Настройки сервера. Страница для супер-администратора: профили ИИ-шлюзов с проверкой запроса, адрес и токен языкового сервера, Duckling, почта с проверочным письмом. Править JSON-файлы не нужно.
- История изменений бота. Каждое изменение файлов бота записывается с автором и временем. Для ревизий есть комментарий, откат и сравнение с текущим состоянием.
- Продуктивные сборки не включают исходный код фронтенда, зависимости обновлены до версий без известных уязвимостей.
Эксплуатация и кластер
- Режим кластера через Redis: монтирование ботов, сброс кэшей, отзыв токенов и инвалидация файлов доходят до всех узлов, комнаты socket.io и блокировки фоновых задач общие.
- Одна песочница на действие или хук вместо новой на каждое выполнение. Узел обрабатывает в шесть раз больше сообщений в секунду, процессорное время на сообщение упало с 65–238 до 12–16 мс.
- Лимит одновременно обрабатываемых сообщений на узле (
IQB_CONVERSE_MAX_IN_FLIGHT, по умолчанию 100): сверх лимита платформа отвечает 503 сRetry-After. - Языковой сервер опрашивается напрямую:
GET /statusпоказываетlang,languagesиlanguagesLoading, аGET /healthпо умолчанию проверяет иlang. Остановка языкового сервера (например, из-за нехватки памяти) видна сразу, а не по неудачному обучению. - Если систему не хватило памяти и она остановила NLU, Studio или Messaging, платформа пишет об этом в журнал и запускает процесс заново, а не оставляет запросы к нему без ответа.
- Запросы к серверу NLU и проверки
/statusи/healthограничены по времени: сервис, который не отвечает, показывается какdownи не подвешивает страницы консоли и Studio. - Плашка «Сервер» жёлтая первые пять минут после запуска,
GET /statusотдаётuptimeSeconds, а метрикаprocess_uptime_secondsпозволяет поставить оповещение на перезапуски процесса. Проверка токена не зависает, когда база не отвечает: платформа отвечает 503, и пользователя не выбрасывает на страницу входа. - Сообщения о таймауте, обрыве связи и ошибках шлюза в консоли написаны по-русски и подсказывают, что делать. Руководство инженера описывает, как найти причину таймаутов (перезапуски по памяти, прокси, лимит соединений браузера) и как отключить WebSocket параметром
httpServer.socketTransports. - Красная шестерня «Конфигурация изменена» показывает, какие параметры главного конфига изменены (только имена), и перезагружает сервер из окна.
GET /healthиGET /statusотвечают 503, пока узел не готов или завершает работу. При остановке узел дожидается принятых сообщений.GET /metricsотдаёт метрики в формате Prometheus, доступ можно закрыть токеномIQB_METRICS_TOKEN.- Если обратный прокси не пропускает WebSocket, Studio, консоль и веб-чат (в том числе эмулятор) переходят на обычные запросы (long polling). При нескольких узлах для этого на балансировщике нужны «липкие» сессии, см. Распределение нагрузки.
- Диагностический отчёт показывает время работы, память, свободное место на диске, версию и размер базы, состояние шлюзов ИИ-агента, провайдера единого входа и почты, сводку по каждому боту. Секреты в нём скрываются.
- Все переменные окружения получили имена с префиксом
IQB_, напримерIQB_DATABASE_URL,IQB_CLUSTER_ENABLED,IQB_REDIS_URL. - Единый сборщик дистрибутивов: бинарные сборки для Linux и Windows и образ Docker для платформы iQBot, NLU-движка и сервиса сообщений. Номера версий всех компонентов унифицированы.
Что проверить перед обновлением
- Продуктивный режим требует PostgreSQL. Первый администратор создаётся только из переменных
IQB_ADMIN_EMAILиIQB_ADMIN_PASSWORD, со страницы входа он не создаётся. - Переменные окружения. Новые имена начинаются с
IQB_. Прежние имена продолжают работать. - Блок
proглавного конфига упразднён. ПоляcollaboratorsAuthStrategies,externalAuthиbrandingтеперь лежат на верхнем уровнеiqbot.config.json. Файл со старым блоком приводится к новому виду при первом запуске, настройки не теряются. - Лицензирование удалено. Не нужны лицензионный ключ, переменные
IQB_LICENSE_KEYиPRO_ENABLED, страница лицензии и баннер «Лицензия не установлена». - Способ входа один. Остальные стратегии из списка
collaboratorsAuthStrategiesне используются, при запуске сервер предупреждает о лишних. - Тип «Выбор значения» заменён одиночным выбором. Элементы переносятся автоматически. Множественный выбор, ввод своего значения, подпись кнопки подтверждения и ширина при переносе не сохраняются.
- Права. Права на модули объединены в
module.<имя>, права на обучение NLU вошли вmodule.nlu, а права на навыки вbot.flows. Проверьте собственные роли. - Убраны поставляемые действия «Отправить данные на страницу чата» и «Пример пользовательского действия». Если они уже скопированы в
data/global/actions, файлы остаются до ручного удаления. - Действие «Сбросить глобальную переменную» теперь удаляет только переменную с точно таким именем и только у текущего бота. Раньше оно удаляло переменные по началу имени у всех ботов.
- Языковой сервер по умолчанию слушает порт 3150, а не 3100. Если порт открывался в файрволе или адрес языкового сервера задавался явно, проверьте его.
- Удалён экспериментальный режим
USE_REDIS_STATE. Режим кластера больше не включает продуктивный режим сам по себе, его нужно включать отдельно.