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