This site is no longer updated.Go to new Conversational Cloud docs

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.