ym88659208ym87991671
Теги реакций SmartApp DSL | Документация для разработчиков

Теги реакций SmartApp DSL

Обновлено 28 июня 2023

Тег a:

a: — (answer) передает текст ответа, который отобразится на экране и который произнесет голосовой ассистент.

Тип значения

  • multiline string

Параметры

  • auto_listening (boolean) — указывает будет ли смартап слушать ответ пользователя после ответа ассистента.
  • markdown (string) — текст ответа ассистента, отформатированный с помощью Markdown-разметки. Доступны следующие элементы форматирования:

Доступны следующие элементы форматирования:

ФорматированиеПример кода
Жирный шрифт
**Жирный** шрифт
Курсив
*Курсив*
или
_Курсив_
Зачеркнутый шрифт
~~Зачеркнутый~~ шрифт
Ссылка
[текст ссылки](https://example.ru)
Маркированный список
* Пункт 1
* Пункт 2
* Пункт 3
или
- Пункт 1
- Пункт 2
- Пункт 3

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

  • multiline string

Синтаксис

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

a: Здравствуй {{ capitalize($client.name) }}, как поживаешь? Посмотри что я https://example.com. || auto_listening: false, markdown = "**Здравствуй** {{ capitalize($client.name), как *поживаешь*? Посмотри что я [нашел](https://example.com/)." 

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

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

Убедитесь, что в тексте нет символов, предназначенных для визуального оформления, которые могут помешать корректному синтезу текста. Подробнее о проектировании сценария смартапа читайте в разделе Основные UX-принципы.

Тег audio:

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

Кроме собственных звуков, загруженных с компьютера, вы можете использовать звуки из библиотеки.

Тег нельзя использовать в проектах SaluteBot.

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

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

Параметры

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

  • source (string) — обязательный параметр, который указывает на источник звука. Возможные значения:


Синтаксис

Синтаксис тега зависит от ого, какие звуки вы используете: загруженные или из библиотеки.

При загрузке звуков нужно указать веб-адрес файла из раздела Контент:

audio: https://sberdevices2.s3pd01.sbercloud.ru/preprod-botadmin/263/264/audio/ovDnhCDSVZmHeWrw.wav || name = "sample.wav", source  = "user"

При использовании звуков из библиотеки нужно указать название звука:

audio: https://sberdevices2.s3pd01.sbercloud.ru/preprod-botadmin/263/264/audio/ovDnhCDSVZmHeWrw.wav || name = "sample.wav", source  = "user"

В обоих случаях после разделителя разделителя || нужно указывать параметры name и source.


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

Использование звука из библиотеки:

state: Hello
q!: hi
a: hi
audio: sm-sounds-human-cheer-1 || name = "Аплодисменты", source = "library"

Использование собственного звука:

state: Hello
q!: hi
a: hi
audio: https://sberdevices2.s3pd01.sbercloud.ru/preprod-botadmin/263/264/audio/ovDnhCDSVZmHeWrw.wav || name = "sample.wav", source = "user"

Случайное воспроизведение звуков с помощью тега random:

state: Hello
q!: hi
random:
audio: sm-sounds-human-cheer-1 || name = "Аплодисменты", source = "library"
audio: https://sberdevices2.s3pd01.sbercloud.ru/preprod-botadmin/263/264/audio/ovDnhCDSVZmHeWrw.wav || name = "002_Бумажная версия книги — копия.wav", source = "user"

Тег 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" }

Тег 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 картинки из раздела Контент>"
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.