Теги реакций


Тег a:

a: — (answer) передает текст ответа.

Тип значения

  • multiline string

Параметры

  • none

Вложенные данные

  • multiline string

Синтаксис

В тексте ответа можно использовать подстановки и функции. Внутри скобок {{ }} может находиться любое валидное выражение на JavaScript, можно использовать те же переменные и функции, что и в скриптах.

a: Здравствуй {{ capitalize($client.name) }}

Примеры значений

 a: Привет!
 a: Ответ1
 a: Длинный ответ на несколько строчек

Тег audio:

audio: — тег позволяет использовать аудиозаписи в ответах ассистента.

Требования к файлу

  • формат wav;
  • 1 канал (моно);
  • кодирование 16-bit (PCM) LE signed, с заголовком;
  • частота дискретизации 24 кГц;
  • размер файла не более 10 Мб.

Тип значения

  • string

Параметры

  • name (string) — имя аудиофайла, необязательный параметр.

Вложенные данные

  • none

Синтаксис

После тега укажите ссылку на аудиофайл. Для корректной работы аудиозаписей, необходимо использовать ссылки на файлы из раздела Контент.

state: Hello
    q!: hi
    a: hi
    audio: https://someurl.ru

Примеры значений

Рассмотрим пример:

state: Hello
    q!: hi
    random:
        audio: https://someurl1.ru
        audio: https://someurl2.ru

В примере используются два аудиофайла. При выполнении random будет воспроизведен только один из двух файлов.

Тег buttons:

buttons: — кнопки, осуществляют переходы между стейтами сценария.

Тип значения

  • none

Параметры

  • none

Вложенные данные

  • buttons

Синтаксис

  • Название кнопки добавляется в кавычках после тегов.
state: NormalButtons
        q!: * start
        a: Кнопки могут быть заданы текстом:
        buttons:
            "Это кнопка"
  • При добавлении нескольких кнопок на разные строки, определяйте каждую тегом buttons:.
state: NormalButtons
        q!: * start
        a: Несколько кнопок:
        buttons:
            "Это кнопка"
        buttons:
            "Это вторая кнопка"
  • Вложенные данные тега buttons: должны соответствовать шаблону: <json-node> -> <string>. В левой части валидный JsonNode — строка или объект, определяющие текст или тело кнопки. В правой части — опционально строка, определяющая путь перехода при нажатии кнопки.
    state: NormalButtons
        q!: * start
        a: Кнопка с маппингом:
        buttons:
            "могут содержать маппинг" -> /NormalButtons/2
  • Кнопки могут содержать подстановку параметров в имени и маппинге.
    state: NormalButtons
        q!: * start
        a: Подстановка параметров в кнопках:
        buttons:
            "могут содержать маппинг" -> /NormalButtons/2
            "подстановку параметров как в {{ 'имени' }} так и в маппинге" -> {{ './3' }}

Ограничение на количество символов

Вы можете управлять количеством символов в строке кнопок из сценария. Для этого вызовите в стейте script:

script:
   $response._buttonsRowLength=30;     // 30 символов в строке

Тег go:

go: — тег выполняет отложенный переход, при этом реакции указанного стейта не выполняются, но обработка следующей фразы происходит в контексте указанного стейта.

Тип значения

  • string — путь, куда должен быть осуществлен отложенный переход

Параметры

  • none

Вложенные данные

  • none

Синтаксис

Путь после тега может быть как абсолютным, так и относительным:

  • / — корневая тема;
  • . — текущее состояние;
  • .. — состояние на уровень выше;
  • ./.. — разделение элементов пути.

Примеры значений

    go: /path
    go: ../anotherPath
    go: ../My module/another state
    go!: {{ $temp.nextState }}

В теге можно использовать подстановки. Внутри скобок {{ }} может находиться любое валидное выражение на JavaScript, можно использовать те же переменные и функции, что и в скриптах.


Тег go!:

go!: — тег обеспечивает немедленный переход, при этом выполняются все реакции указанного стейта.

Тип значения

  • string — путь, куда должен быть осуществлен немедленный переход

Параметры

  • none

Вложенные данные

  • none

Синтаксис

Путь после тега может быть как абсолютным, так и относительным:

  • / — корневая тема;
  • . — текущее состояние;
  • .. — состояние на уровень выше;
  • ./.. — разделение элементов пути.

Примеры значений

    go!: /path
    go!: ../anotherPath
    go!: ../My module/another state
    go!: {{ $temp.nextState }}

В теге можно использовать подстановки. Внутри скобок {{ }} может находиться любое валидное выражение на JavaScript, можно использовать те же переменные и функции, что и в скриптах.


Тег if:/else:/elseif:

if:/else:/elseif: — теги для записи простых условий, вывода различных ответов в зависимости от условий, перехода в другие состояния по условиям.

Более сложные условные конструкции можно задать в теге script.

Тип значения

  • string — валидное js-выражение возвращающее boolean

Параметры

  • none

Вложенные данные

  • tags

Примеры значений

 if: condition()
        a: Ответ 1
elseif: b == 3
        a: Ответ 2
else:
        a: Ответ 3
  • После if: должно стоять js-выражение, результат которого будет преобразован к типу boolean.
theme:/
   state: GoodBye
      q!: * (до свидания|пока|до скорого) *
      if: $session.name
          a: До свидания, {{ $session.name }}!
      else:
          a: До свидания, человек!
state:
        q!: $Number
        script: $temp.age = parseInt($parseTree.value);
        if:     $temp.age > 18
            a: Больше 18
        elseif: $temp.age == 18
            a: Ровно 18
        else:
            a: Меньше 18

Тег newSession:

newSession: — тег определяет запуск новой сессии.

Тип значения

  • none

Параметры

  • message (string) — стартовое сообщение, с которым будет инициирована новая сессия, например /start.
  • data (multiline json) — объект RequestData для новой сессии.
  • deferred (boolean) — инициировать новую сессию сразу или при следующем запросе.

Вложенные данные

  • named parameters

Примеры значений

    state:
        q: newSession
        newSession:
            message = query
            data = { msg: "data" }

Подробнее о сессиях: session lifetime control


Тег random:

random: — в результате выполнения будет выполнена только одна из вложенных реакций.

Тип значения

  • none

Параметры

  • none

Вложенные данные

  • reactions — в результате выполнения random будет выполнена только одна из вложенных реакций

Примеры значений

random:
    a: Ответ1
    a: Ответ2
    a: Ответ3
random:
    go!: ./quizz1
    go!: ./quizz2

Тег script:

script: — скрипт реакции позволяет выполнять функции, логику обработки запросов, вызовы внешних систем, работу с памятью и другое.

Тип значения

  • multiline string — валидный код на JavaScript

Параметры

  • none

Вложенные данные

  • multiline data

Синтаксис

Для написания тела тега script: используется JavaScript. В теге можно вызывать js-функции, описанные в отдельном js-файле и привязанные к сценариям (в yaml-файле).

Скрипт может быть задан:

  • непосредственно в стейте;
script:
       $session.name = $parseTree._Name
  • отдельно в виде имени, в таком случае в стейте после тега идет название скрипта.
patterns:
    $Name = (олег/дима)

theme: /
    state:
        q!: $Name
        script:
            $session.name = capitalize($parseTree._Name);
        a: Привет, {{ $session.name }}!

Скрипт же объявляется в js-файле:

function getName() {
    var $session = $jsapi.context().session;
    $session.name = capitalize($jsapi.context().parseTree._Name);
}

Примеры значений

script: myScript()
script:
        if ($session.catchAllCount > 1) {
            go(“../fallback”);
        }

Тег image:

image: — вывод изображения.

Тип значения

  • string — ссылка на изображение.

Параметры

  • none

Вложенные данные

  • none

Синтаксис

После тега укажите ссылку на изображение:

 image: https://name.jpg || hash = "<hash картинки из раздела Контент>"

Примеры значений

state:
    q!: test
    image: https://test/image.jpg || hash = "<hash картинки из раздела Контент>"

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней