Поддержка других языков
Это часть серии статей, посвященной созданию многоязычного бота.
- Принцип работы
- Маршрутизация запросов
- Поддержка русского языка
- Поддержка других языков (вы находитесь здесь)
- Публикация в канал
В следующем разделе пошагового сценария мы создадим бота на английском языке в составе многоязычного бота. Создайте новый проект, в качестве языка NLU выберите английский.
Наполнение интентов
Бот на английском языке должен поддерживать ровно те же интенты /hello
и /book
, что и бот на русском языке, с отличиями только в языке тренировочных фраз и вопросов для слот-филлинга.
Сценарий
Код англоязычного бота будет практически полностью совпадать с русскоязычным: изменения затронут только конфигурацию и тексты ответов.
- В разделе
injector
файлаchatbot.yaml
потребуется указать ISO-код английского языка вместо русского:
injector:
currentLanguage: en
- В файле
main.sc
переведите все тексты ответов бота на английский язык, а также измените путь к зависимости на справочник имен на английском языке:
require: name/nameEn.sc
module = sys.zb-common
require: slotfilling/slotFilling.sc
module = sys.zb-common
require: routerClient.js
theme: /
state: Start
q!: $regex</start>
go!: /Hello
state: Hello
intent!: /hello
a: Hi! What’s your name?
state: Name
q: * $Name *
a: Nice to meet you, {{$parseTree._Name.name}}!
script:
$session.booking = $session.booking || {};
$session.booking.name = $parseTree._Name.name;
go!: /Book
state: Book
a: Tell me the number of the room you would like to book.
state: Yes
intent: /book
a: Room {{$parseTree._Room}} has been reserved for you.
script:
$session.booking = $session.booking || {};
$session.booking.room = $parseTree._Room;
state: NoMatch || noContext = true
event!: noMatch
if: isSameLanguage($context)
a: I’m sorry, I didn’t get it.
else:
script: returnToRouter($context, $session.booking);
подсказка
Файл
routerClient.js
скопируйте из русскоязычного бота без изменений.