Перейти к содержанию

Поля файла описания

Сценарий

Сценарий содержит следующие поля:

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'
      
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

Ключевые понятия, такие как сцена, контекст, режиссёр и другие, рассматриваются в разделе "Ключевые понятия"

Комментарии