Перейти к основному содержимому

Конфигурация

При подключении модуля languageDetector вы можете передать в него объект с настройками. Все поля этого объекта необязательны.

В каких случаях определять язык

ПолеТипПо умолчаниюОписание
detectorModestringdefaultРежим определения языка:
  • first — бот определяет язык только в первом запросе. Если в нем меньше двух слов, то бот определяет язык во втором запросе.
  • default — бот определяет язык в первом и втором запросах. Если в первом запросе меньше двух слов, то бот определяет язык во втором и третьем запросах.
  • every — бот определяет язык в каждом запросе. Если в первом запросе меньше двух слов, то в нем бот не определяет язык.
firstShortQueryCheckbooleanfalseОпределять язык в первом запросе, даже если в нем меньше двух слов.
detectorStatesarray<string>Список стейтов, при переходе в которые всегда нужно определять язык, вне зависимости от detectorMode.
noDetectorStatesarray<string>Список стейтов, при переходе в которые не нужно определять язык, вне зависимости от detectorMode.

Логика для выбора языка

ПолеТипПо умолчаниюОписание
defaultLanguagestring

Язык по умолчанию. Укажите ISO-код. Если бот не смог определить язык, то бот использует язык по умолчанию.

Вы можете не указывать defaultLanguage, только если в стартовом стейте сами записываете значение в $session.language.

previousLanguagePreferencebooleanfalseЗаписать в $session.language язык предыдущего запроса, если бот не смог определить язык. Если указано значение false, то бот использует defaultLanguage.
targetLanguagesarray<string>Список из ISO-кодов целевых языков:
  1. Бот определяет язык.
  2. Если список указан и язык не входит в список, то бот выбирает родственный язык с помощью sameGroupLanguageReplacement.
sameGroupLanguageReplacementbooleantrue

Заменить полученный язык на родственный, если полученный язык относится к той же группе, что и один из языков в targetLanguages. Если в targetLanguages два или более языков относятся к этой группе, бот не будет заменять язык.

Группы языков указаны в файле languageDetector/languageGroups.yaml

Настройки методов определения

ПолеТипПо умолчаниюОписание
confidenceThresholdfloat1.5

Пороговое значение при определении языка с помощью Detect Language API. Если значение confidence меньше порогового, то бот считает, что не удалось определить язык.

Чтобы использовать API, добавьте в проект ключ.

onlyCailaMethodbooleanfalseДля определения языка обращаться только к методу $caila.detectLanguage.

Дополнительные стейты

ПолеТипОписание
stateWithLanguageQuestionstring

Стейт с вопросом, на каком языке говорить. Если бот не смог определить язык, он перейдет в этот стейт. В этом стейте вы должны записать в переменную $session.language ISO-код языка.

Если бот перешел в этот стейт, он указывает в $session.noDetectLanguage значение true. В результате для всех следующих запросов бот не будет определять язык. Исключение — стейты из detectorStates.

Вы можете посмотреть код для такого стейта в примере.

stateForChangingLanguagestring

Стейт с интентом для смены языка. В этом стейте вы должны записать в переменную $session.language ISO-код языка.

Если бот перешел в этот стейт, он указывает в $session.noDetectLanguage значение true. В результате для всех следующих запросов бот не будет определять язык. Исключение — стейты из detectorStates.

Вы можете посмотреть код для такого стейта в примере.