eg
Описание
eg — (англ. "example group" — группа примеров). В случае, когда примеров для сравнения много, использовать тег e нецелесообразно. В таких случаях используется eg и задается необходимое количество примеров в отдельном файле справочнике. Такой справочник можно задать как с помощью графического интерфейса платформы, так и вручную.
Локальный тег. Срабатывает только в определенном контексте при переходе из родительского стейта.
Тип значения
- multiline string
Параметры
fromState(string) — определяет стейт, из которого возможен переход.toState(string) — определяет стейт, в который будет осуществлен переход.onlyThisState(boolean) — при флагеtrueпереход в стейт может быть совершен только из указанного в параметреfromStateсостояния, но не из его дочерних стейтов. По умолчаниюfalse.
Подробнее об управлении контекстом
Вложенные данные
- multiline data
Примеры ипользования
- Простой пример использования тега.
Задаем группы примеров в файле examples.json:
{
"classes" : [
{
"id" : "",
"path" : "/PlayGames/Games",
"description" : "",
"disabled" : false,
"phrases" : [
"давай поиграем в какие-нибудь игры"
]
},
{
"id" : "",
"path" : "/PlayGames/Games/CanYouPlay",
"description" : "",
"disabled" : false,
"phrases" : [
"ты умеешь во что-нибудь играть?",
"ты знаешь какие-нибудь игры?",
"ты знаешь как играть?"
]
}
]
}Создаем сценарий:
state: HaveAQuestion
q: * ($yes|$agree|*игр*) *
eg: PlayGames.Games.CanYouPlay
go!: /PlayGames/Games
state: NoQuestions
q: * (не (хоч*|буду)|некогда [мне]) (игра*|поигра*) [в] [город*|числ*|цифр*|загадк*] *
q: * ($no|$disagree|не (начнем|начина*|хочу|буд*)) *
go!: /PlayGames/Games/IDontWantToPlay- Пример использования флагов в
fromState,onlyThisState.
Задаем группу примеров в файле examples.json:
{
"classes" : [
{
"id" : "",
"path" : "/SendFile/Files/CantSendFile",
"description" : "",
"disabled" : false,
"phrases" : [
"не могу прикрепить файл",
"не получается отправить фото",
"не могу отправить файл"
]
}
]
}
Создаем сценарий:
state: Main
q!: $regex</start>
a: Здравствуйте. Введите ваше имя и фамилию
state: Name
intent: /фио
a: Спасибо. Для получения анкеты пришлите свое фото
state: SendFile || modal=true
event: sendFile
a: Спасибо! Отправляю анкету
state: CantSend
eg: /SendFile/Files/CantSendFile || fromState=/Main/SendFile , onlyThisState=true
a: Проверьте размер прикрепляемого файла и повторите попыткуВ этом примере бот перейдет из стейта SendFile в стейт CantSend, как только получит от клиента одно из сообщений, входящих в группу /SendFile/Files/CantSendFile. При этом переход в стейт CantSend возможен только из стейта /Main/SendFile, но не из остальных, так как был проставлен флаг onlyThisState=true.