-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/set asr properties #263
Conversation
Изменения позволят использовать данный функционал JAICP: |
fun setAsrProperties(properties: Map<String, String>) { | ||
val propertiesJson = JsonObject(properties.toMutableMap().mapValues { entry -> JsonPrimitive(entry.value) }) | ||
asrConfig = (executionContext.request as TelephonyBotRequest).asrConfig | ||
when (checkNotNull(asrConfig?.type)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это копипаст с JAICP?
Так-то просится ввернуть какую-нибудь chain of responsibility или иным образом инкапсулировать логику выбора конфига.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Частично копипаст с JAICP, да. Вынести логику выбора конфига можно в другое место, но вроде особо некуда
fun handle(properties: Map<String, String>, asrConfig: AsrConfig): AsrConfig { | ||
val propertiesJson = JsonObject(properties.toMutableMap().mapValues { entry -> JsonPrimitive(entry.value) }) | ||
return when (checkNotNull(asrConfig.type)) { | ||
AsrConfig.AsrProviderType.SBER -> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Главная идея - избавиться от этого when.
Условно нужно несколько моментов:
- Вынести конфигурацию списка хендлеров вне этого класса, т.е. будет что-то вида SetAsrPropertiesHandler(listOfActualHandlers)
- Сделать общий интерфейс хендлера с методами canHandle(...) и handle(...)
- Центральный хендлер (этот класс) делегирует canHandle() и handle() в лежащие внутри него хендлеры - кто первый ответит, что может захендлить, тот и хендлит.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Реализовал как описано выше
No description provided.