languageDetector
Модуль languageDetector
определяет язык запроса пользователя и записывает двухбуквенный ISO-код языка в $session.language
.
Используйте этот модуль для разработки мультиязычных ботов. С помощью languageDetector
вы можете определять язык з апросов и давать ответ в зависимости от значения $session.language
. Также модуль имеет гибкие настройки: вы можете указывать, в каких случаях нужно определять язык, настраивать логику и управлять методами определения языка.
Чтобы использовать languageDetector
:
- Добавьте в проект ключ для Detect Language API.
- Импортируйте модуль в сценарий.
Как работает модуль
Когда вы импортируете модуль languageDetector
, в сценарий добавляется обработчик preProcess
.
Работа модуля зависит от настроек, которые вы передали при импорте. Узнайте подробнее о настройках в статье Конфигурация.
Также вы можете посмотреть исходный код модуля в редакторе сценариев внутри раздела Зависимости.
Для каждого запроса бот проверяет, нужно ли определить язык. Если для запроса нужно определить язык:
-
Бот получает ISO-код языка запроса:
-
Если в запросе 5 или более слов, бот обращается к методу
$caila.detectLanguage
. Вы можете посмотреть список поддерживаемых языков на сайте FastText. -
Если в запросе меньше 5 слов, бот обращается к Detect Language API. Этот API лучше определяет язык в коротких текстах. Вы можете посмотреть список поддерживаемых языков на сайте Detect Language API.
предупреждениеЧтобы использовать API, добавьте в проект ключ.
-
-
Бот проверяет, входит ли язык в список целевых языков
targetLanguages
и нужно ли его заменить на родственный язык с помощью параметраsameGroupLanguageReplacement
.
Далее бот действует в зависимости от результатов:
- Если язык определен успешно, бот записывает ISO-код языка в
$session.language
. - Если язык не удалось определить, бот переходит в стейт из параметра
stateWithLanguageQuestion
. Если такой стейт не указан, бот указывает в$session.language
предыдущее значение с помощью параметраpreviousLanguagePreference
или язык по умолчанию изdefaultLanguage
.
Ключ Detect Language API
Если в запросе пользователя меньше 5 слов, бот обращается к Detect Language API.
Также если метод $caila.detectLanguage
определил язык не из списка targetLanguages
, бот еще раз пробует определить язык с помощью API.
Чтобы бот мог отправлять запросы к API, добавьте ключ в проект:
-
Зарегистрируйтесь в Detect Language API.
-
Получите API-ключ на сайте.
к сведениюПо умолчанию в Detect Language API вам доступен бесплатный тариф, у которого есть ограничения на количество запросов и объем данных.
-
В проекте JAICP перейдите в раздел Токены и переменные.
-
- Название —
getLanguageToken
. - Значение — API-ключ с сайта Detect Language API.
- Название —
Если вы не хотите использовать Detect Language API, в настройках модуля укажите true
для параметра onlyCailaMethod
. В этом случае бот всегда будет определять язык только с помощью $caila.detectLanguage
.
Импорт модуля
Импортируйте модуль в сценарий с помощью тега require
.
Вы можете передать настройки модуля через параметр injector
.
require: languageDetector/languageDetector.sc
module = sys.zb-common
injector = {
detectorMode: "every",
defaultLanguage: "ru"
}