*
* — любая последовательность символов произвольной длины, возможно пустое поле.
* - воспринимает любое значение произвольной длины, возможно пустое поле.
В примере ниже тег q: * ожидает любое значение от пользователя (буква, цифра или пустое сообщение и т.д), которое поступит в сценарий приложения и предоставит ответ из тега a:.
Пример
state: catchAll
q!: *
a: Я Вас не понял.
state: start
q!: *
a: Начинаем работу!
go!: /SecondStep
слово
слово — указанное слово. Проверяет полное посимвольное соответствие слова и его позицию во фразе.
Пример
state:
q!: привет
a: Привет! Как дела?
_ корень _
*корень* — стемма. Проверяет наличие в слове заданной основы. Не обязательно совпадает с морфологическим корнем слова.
Положение звездочки определяет какие слова попадут в паттерн:
- Звездочка в начале обозначает вариативный префикс. В этом случае, в паттерн
*ходпопадут словавход,выход,ход. - Звездочка в конце обо значает вариативный суффикс. В этом случае в паттерн
ход*попадут словаходить,ходунки,ход. - Звездочка в начале и конце, обозначает вариативные префикс и суффикс. В этом случае в паттерн
*ход*попадут словавыходить,ход.
Пример
state:
q: *подроб* //паттерн позволит определелить слова «поподробнее», «подробности», «подробнее»
a: Подробнее на сайте example.cn
(слово1|слово2|или целая фраза)
(слово1|слово2|или целая фраза) — альтернативы. Паттерн проверяет наличие одного из альтернативных вариантов правила.
Варианты разделяются с помощью символа | или /. Каждый вариант может содержать любые другие вложенные элементы паттерна.
Пример
state:
q: (привет | добр* (утро/день/вечер) | здравствуй* )
a: Привет-привет!
[опциональное слово|или другая фраза]
[опциональное слово|или другая фраза] — опции: приведенные в квадратных скобках элементы не являются обязательными.
Если правило сработало, вес паттерна увеличивается.
В опциях можно задавать альтернативы.
Пример
state: How many players
q: * {(сколько|как много|насколько много) (игроков|плееров|человек) [могут] [играть]} *
q: * [игра] для одного * [или] [нескольких] *
q: * {([игра]|в игре) [есть] (мультиплеер*|многопользовательск* [режим]|для нескольких пользовател*)} *
a: Это приключение для одного.
{слово1 слово2 (1|2)}
{слово1 слово2 (1|2)} — перестановки: проверяется соответствие заданных правил в любой последовательности.
Правила, которые могут быть перемешаны, разделяются пробелом.
Каждое правило может быть любым другим элементом паттерна с любой степенью вложенности.
Использование в перестановках более 5 правил снижает производительность смартапа.
Пример
state: How much gameplay
q: * {(сколько|(как|насколько) много|много) геймпле*} *
q: * {[насколько] (большая|велика) [ли] [эта] [игра]} *
a: Сюжет игры занял 2 тысячи страниц сценария!