Командная строка 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.