Поля файла описания
Сценарий
Сценарий содержит следующие поля:
name - название скилла
Указывается название реализуемой скилл.
name: 'echo_game'
startScene - стартовая сцена
Указывается название стартовой сцены, которая описывается в разделе script вместе с остальными сценами.
startScene: 'hello'
goodByeCommand - команда окончания скилла
Указывается строка, отображаемая на кнопке, при нажатии на которую голосовой ассистент воспроизведет сцену прощания и завершит скилл.
goodByeCommand: "Закончить"
goodByeScene - сцена прощания
Указывается реплика, которую воспроизведет голосовой ассистент при желании пользователя выйти из скилла.
goodByeScene: "goodbye"
matchers - описание правил проверки введённых данных
Описываются пользовательские наборы правил для проверки введённых данных. Генератор поддерживает два типа таких наборов:
-
Сопоставление пользовательского ввода с различными вариантами:
selects- список вариантов, с которыми требуется сопоставить ввод пользователя. Для корректной работы указывать без каких-либо знаков препинания, а также избегать слов Закончить или Хватит, так как данные слова воспринимаются голосовым ассистентом как желание завершить скилл;replaceMessage- сообщение, которое будет использовано для идентификации набора с выполнившимися правилами, также этим сообщением будет заменён пользовательский ввод;BuyDrops- имя набора.BuyDrops: selects: - "Хочу купить капельки" - "Капельки" - "Купить капельки" - "Купить капли" - "Капли" - "Воду" - "Хочу купить воду" - "Хочу купить капли" - "Купить воду" - "Вода" replaceMessage: "Вода"
-
Проверка на основе регулярных выражений
regex- правило, основанное на регулярном выражении, пользовательский ввод будет заменён на фразу, удовлетворяющею данному регулярному выражению;nameMatched- сообщение, которое будет использовано для идентификации набора с выполнившимися правилами;BuyDrops- имя набора.BuyDrops: regex: "* капли" nameMatched: "Вода"
script - сцены скилла
Описывается список сцен скилла.
script:
goodbye:
text:
string: "GoodyBye"
tts: "GoodyBye"
nextScenes:
- 'goodbye'
hello:
text:
string: "Hello boy. Is number {number}"
tts: "Hello boy. Is number {number}"
values:
number: 'int64'
nextScene: 'echo'
isInfoScene: true
error:
scene: "goodbye"
echo:
text:
string: "I will Repeat you word"
tts: "I will Repeat you word"
nextScenes:
- 'echoRepeat'
matchers:
- 'any'
error:
base: "number"
echoRepeat:
text:
string: "You say {userText}"
tts: "You say {userText}"
values:
userText: 'string'
nextScenes:
- 'echoRepeat'
matchers:
- 'any'
error:
base: "number"
Сцена
Каждая сцена содержит следующие поля:
text - текст сцены
Текст, который будет выводиться в начале сцены. Поддерживается передача параметров в строку через использование конструкции {nameValue}. Очень важно отсутствие пробелов между { и } и именем значения.
string- текст, который будет выведен в сообщении;tts- текст, который будет озвучен голосовым ассистентом. С правилами составления tts можно ознакомиться в документации.values- значения, которые должны встраиваться в текст. Эти значения обязательно должны присутствовать в обоих строках- Представляет собой словарь. Поддерживаются все стандартные типы Go. Название переменной обязательно должно соответствовать указанному внутри строки.
text: string: "You say {userText}" tts: "You say {userText}" values: userText: 'string'
- Представляет собой словарь. Поддерживаются все стандартные типы Go. Название переменной обязательно должно соответствовать указанному внутри строки.
isInfoScene - является ли сцена информационной
Примает значение 'true', если данная сцена является информационной, то есть не требует ответа пользователя.
Если сцена информационная, требуется указывать только одну следующую сцену в поле nextScene, следующие поля не влияют на результат генерации: buttons, matchers, error.
isInfoScene: true
nextScenes / nextScene - следующие сцены
Имена следующих сцен. Если текущая сцена информационная, то требуется указывать
только одну следующую сцену в поле nextScene, иначе - список сцен в поле nextScenes.
isInfoScene: true
nextScene: 'echo'
nextScenes:
- 'echoRepeat'
buttons - кнопки, отображаемые в сцене
Описание кнопок, которые будут отображены в текущей сцене.
agree- имя кнопки;text- текст кнопки;URL- необязательное поле - ссылка, которая откроется по нажатию на эту кнопку;Payload- некоторая структура, которую нужно передать вместе с кнопкой, когда кнопка будет нажата. Генератор также создает структуры Go, соответствующие описанным полям.buttons: agree: text: "Ага" URL: "vk.com" Payload: ID: 2
matchers - имена наборов правил проверки пользовательского ввода
Есть следующие стандартные наборы:
number- набор, выделяющий любое число из ввода пользователя;positive_number- набор, выделяющий любое положительное число из ввода пользователя;positive_number_in_words- набор, выделяющий любое положительное число слов в вводе пользователя;any- набор, принимающий любое сообщение пользователя;first_word- набор, выделяющий первое слово из сообщения пользователя;agree- набор, определяющий согласие пользователя.
matchers:
- "agree"
- "Back"
error - текст сообщения в случае неверного ответа пользователя
Вызываемое сообщение или сцена в случае, если ни один из наборов правил не соответствует реплике пользователя. Есть три вида ошибок:
- Стандартная
base- имя стандартной ошибкиerror: base: "number"
-
Сцена ошибки
error: scene: "goodbye" -
Текстовая ошибка
name- имя ошибки. Должно быть уникальным. Используется для удобного обращения к тексту ошибки внутри кода.text- текст ошибкиerror: name: "NotUnderstandHealSale" text: "Я не понимаю о чём вы. Хотите ли вы купить аптечку?"
hint
Ключевые понятия, такие как сцена, контекст, режиссёр и другие, рассматриваются в разделе "Ключевые понятия"