Перейти к основному содержимому
Версия: 3.0

Командная строка iQBot

Исполняемый файл iqbot (в Docker-образе /app/iqbot) без команды запускает сервер. Остальные команды нужны для администрирования, переноса данных и автоматизации. Справка по любой команде: ./iqbot <команда> --help.

Команды​

КомандаЧто делает
serve (по умолчанию)Запускает сервер iQBot.
migrate up / migrate downПереносит данные и таблицы базы на нужную версию.
pullЗабирает данные с удалённого сервера в локальную файловую систему.
pushОтправляет локальные файлы на удалённый сервер.
pullfileЗабирает один файл из базы данных.
pushfileЗаписывает локальный файл напрямую в базу данных.
test-scenariosЗапускает все тестовые сценарии бота и завершается с ненулевым кодом, если хотя бы один не прошёл.
diagСоздаёт диагностический отчёт. Тот же режим включает переменная IQB_DIAG=true.
langЗапускает языковой сервер.
nluЗапускает автономный сервер NLU.
extractРаспаковывает архивы модулей (.tgz) в их каталоги.
versionВыводит версию сервера.
benchНагрузочный замер бота.

Ключи, общие для всех команд: -v (подробность журнала, можно повторять), --help, --version.

Запуск сервера​

./iqbot [serve] [--production] [--autoMigrate] [-v]
КлючНазначение
-p, --productionПродуктивный режим. То же задаёт IQB_PRODUCTION=true.
--autoMigrateАвтоматически перенести данные и конфигурацию при обновлении. То же задаёт IQB_AUTO_MIGRATE=true.

Миграции​

./iqbot migrate up --dry
./iqbot migrate up
./iqbot migrate down --target <версия>
КлючНазначение
--target, -tЦелевая версия. Для up по умолчанию последняя, для down обязательна.
--dry, --dryrunПоказать список миграций, не выполняя их.

Перед боевой миграцией сделайте резервную копию базы, см. Резервное копирование и обновление.

Перенос данных между серверами​

Команды pull и push копируют боты и настройки между серверами через их API.

./iqbot pull --url https://bot-test.example.com --authToken <токен> --targetDir data
./iqbot push --url https://bot.example.com --authToken <токен> --sourceDir data
КлючНазначение
--urlАдрес сервера. По умолчанию http://localhost:3000.
--authToken, --tokenТокен авторизации на этом сервере.
--targetDir, --dirДля pull: каталог, куда сохранить данные.
--sourceDir, --dirДля push: каталог с данными, которые нужно отправить.

Токен можно взять в консоли: откройте раздел «Контроль версий» и нажмите «Показать токен». Там же готовые команды pull и push с подставленным адресом и токеном. Отправка данных на сервер (push) возможна, только если на нём включено хранилище IQB_IQBFS_STORAGE=database.

Для восстановления доступа к отдельным файлам, когда сервер не запускается, есть команды работы напрямую с базой данных:

./iqbot pullfile --file global/iqbot.config.json --dest iqbot.config.json
./iqbot pushfile --file iqbot.config.json --dest global/iqbot.config.json

--file для pullfile задаёт полный путь файла в базе, для pushfile путь локального файла. --dest указывает, куда положить файл.

Автоматическая проверка бота в CI​

Команда test-scenarios запускает все сценарии, записанные в модуле тестирования, и возвращает ненулевой код завершения, если хотя бы один сценарий не прошёл. Это позволяет проверять бота перед публикацией изменений.

./iqbot test-scenarios --url https://bot-test.example.com --botId bank-demo --authToken <токен>
КлючНазначение
--botIdИдентификатор бота. Обязательный.
--urlАдрес сервера. По умолчанию http://localhost:3000.
--authToken, --tokenТокен авторизации.
--timeoutСколько миллисекунд ждать окончания прогона. По умолчанию 300000.

Сервер NLU и языковой сервер​

Эти команды запускают bin/nlu (или ./iqbot nlu, ./iqbot lang). Обычно NLU запускает ядро само, вручную запускается языковой сервер.

./bin/nlu lang --port 3150 --host 127.0.0.1 --langDir /opt/iqbot-lang
./bin/nlu nlu --port 3200 --languageURL http://localhost:3150 --dbURL postgres://...

Основные ключи языкового сервера (lang):

КлючНазначение
--port, --hostПорт и адрес, которые слушает сервер.
--langDirКаталог с файлами языковых моделей.
--dimРазмерность векторов, значение по умолчанию 100.
--domainИмя набора моделей, по умолчанию iqbot.
--offlineРаботать без интернета, включено по умолчанию.
--authTokenЕсли задан, клиенты обязаны его передавать.
--limit, --limitWindowОграничение числа запросов с одного IP за период.

Основные ключи сервера NLU (nlu):

КлючНазначение
--port, --hostПорт и адрес сервера, по умолчанию 3200.
--languageURLАдрес языкового сервера.
--languageAuthTokenТокен языкового сервера, если он задан.
--dbURLБаза для хранения моделей. Если не задана, модели хранятся в файлах (--modelDir).
--modelDirКаталог моделей, если --dbURL не задан.
--limit, --limitWindowОграничение числа запросов с одного IP за период.

Полный список ключей: ./bin/nlu nlu --help и ./bin/nlu lang --help.