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

Поддержка других языков

Это часть серии статей, посвященной созданию многоязычного бота.

  1. Принцип работы
  2. Маршрутизация запросов
  3. Поддержка русского языка
  4. Поддержка других языков (вы находитесь здесь)
  5. Публикация в канал

В следующем разделе пошагового сценария мы создадим бота на английском языке в составе многоязычного бота. Создайте новый проект, в качестве языка 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"

Другие языки

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

  1. Создайте проект бота на нужном языке, проделывая все шаги полностью аналогично тому, как был добавлен бот на английском.
  2. После публикации бота в любом канале добавьте его идентификатор в конфигурацию injector бота-роутера.

На последнем шаге мы рассмотрим некоторые особенности публикации многоязычного бота и проверим работоспособность сценария.