Поддержка других языков
Это часть серии статей, посвященной созданию многоязычного бота.
- Принцип работы
- Маршрутизация запросов
- Поддержка русского языка
- Поддержка других языков (вы находитесь здесь)
- Публикация в канал
В следующем разделе пошагового сценария мы создадим бота на английском языке в составе многоязычного бота. Создайте новый проект, в качестве языка 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
скопируйте из русскоязычного бота без изменений.Подключение к роутеру
Так же, как и для русского языка, опубликуйте созданного бота в любом канале, скопируйте идентификатор бота и зарегистрируйте его в injector
бота-роутера:
injector:
bots:
ru: "250555190-booking_ru-250555190-zNt-16011310957"
en: "250555190-booking_en-250555190-UNE-16011289698"
Другие языки
В многоязычного бота, построенного по приведенной схеме, легко добавить поддержку произвольного числа других языков.
- Создайте проект бота на нужном языке, проделывая все шаги полностью аналогично тому, как был добавлен бот на английском.
- После публикации бота в любом канале добавьте его идентификатор в конфигурацию
injector
бота-роутера.
На последнем шаге мы рассмотрим некоторые особенности публикации многоязычного бота и проверим работоспособность сценария.