*
*
— любая последовательность символов произвольной длины, возможно пустое поле.
*
- воспринимает любое значение произвольной длины, возможно пустое поле.
В примере ниже тег 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 тысячи страниц сценария!