SmartApp Framework использует конфигурацию, чтобы понимать, из каких компонентов состоит проект. Файл конфигурации представляет собой обычный Python модуль с объявленными глобальными переменными. Например:
NORMALIZER_ADDRESS = "http://my_normalization.service/normalization"
MODE = "debug"
По умолчанию модуль с конфигурацией находится в корне нового проекта под именем app_config.py. Чтобы использовать другой модуль, воспользуйтесь переменной окружения SMART_KIT_APP_CONFIG:
SMART_KIT_APP_CONFIG="my_package.my_module" python manage.py <command>
Параметры модуля
| Параметр | Описание | Значение по умолчанию | 
|---|---|---|
| CONFIGS_PATH | Путь до директории с *.yml конфигурацией. | os.path.join(static_path, "./configs" | 
| DIALOGUE_MANAGER | Класс, отвечающий за выбор подходящего сценария | smart_kit.models.dialogue_manager.DialogueManager | 
| LOCAL_TESTING | Класс, который исп ользуется при вызове команды local_testing из manage.py | smart_kit.testing.local.CLInterface | 
| MAIN_LOOP | Класс для создания главного цикла приложения | smart_kit.start_points.main_loop_kafka.MainLoop | 
| MODE | Режим, в котором работает приложение. | debug | 
| MODEL | Класс, отвечающий за обработку входящих сообщений | smart_kit.models.smartapp_model.SmartAppModel | 
| NORMALIZER | Класс, используемый для предобработки. Используется при локальном тестировании. | smart_kit.text_preprocessing.local_text_normalizer.LocalTextNormalizer | 
| NORMALIZER_ADDRESS | Адрес сервиса предобработки. Используется при локальном тестировании. | https://127.0.0.1:9000/normalize | 
| NORMALIZATION_CACHE | Класс, используемый для кэширования в нормализации. | smart_kit.utils.cache.JSONCache | 
| NORMALIZATION_CACHE_TTL | Время жизни кэша нормализации. | 0 | 
| PARAMETRIZER | Класс, собирающий параметры из сообщения и данных пользователя. | scenarios.user.parametrizer.Parametrizer | 
| PLUGINS | Кортеж плагинов. | () | 
| PPS_URL | Адрес сервиса, на котором можно по ключу получить подходящие фразы для выбранного голоса. | "" | 
| REFERENCES_PATH | Путь до директории с DSL файлами. | os.path.join(static_path, "./configs") | 
| RESOURCES | Класс, используемый для загрузки компонентов DSL | smart_kit.resources.SmartAppResources | 
| SECRET_PATH | Путь до директории с файлами секретов. | os.path.join(static_path, "./configs") | 
| SETTINGS | Класс, используемый для хранения настроек приложения. | smart_kit.configs.settings.Settings | 
| 
 | Путь до директории static. | путь/до/manage.py/static | 
| USER | Класс, используемый для создания объекта пользователя. | smart_kit.user.user_model.SmartAppUser | 
Расширение параметров
Чтобы дополнить модуль параметрами, которые не были указаны в оригинальном конфигурационном файле, используйте функцию get_app_config из пакета smart_kit.config. В этом случае параметрам будут выставлены значения по умолчанию.
from smart_kit.configs import get_app_config
app_config = get_app_config()
app_config  # Модуль конфигурации
При использовании функции get_app_config происходит импорт модуля app_config.py. Поэтому при использовании get_app_config в классах, которые переопределены в app_config.py, может возникнуть циклическая зависимость.
from smart_kit.configs import get_app_config  # пример с ошибкой
class SomeClassUsedInConfig:
	def some_method(self):
		app_config = get_app_config()
Во избежание ошибки:
- Импортируйте локально функцию get_app_configв том месте, где необходимо ее использовать.
- Убедитесь, чтобы это место не вызывалось при импорте.
class SomeClassUsedInConfig:
	def some_method(self):
		from smart_kit.configs import get_app_config  # корректный пример импорта, без ошибки
		app_config = get_app_config()
