$jsapi.getStates
Метод возвращает структуру сценария — подробную информацию о каждом стейте и теме.
Синтаксис
Метод вызывается без аргументов.
$jsapi.getStates();
Возвращаемое значение
Метод возвращает объект.
Каждое поле — полный путь к стейту или теме. Значение — объект с подробной информацией об этом стейте или теме.
{
"/": {…},
"/Start": {…},
"/Start/Hello": {
"path": {…},
"loadOrder": 3,
"noContext": false,
"modal": false,
"reactions": […],
"tags": […],
"tag": {…},
"name": "Hello",
"locator": {…}
},
"/NoMatch": {…}
}
Здесь:
-
path
— объект с информацией о пути к стейту или теме. -
loadOrder
— порядковый номер стейта или темы в сценарии. -
noContext
— значение параметраnoContext
. -
modal
— значение параметраmodal
. -
reactions
— массив с параметрами и свойствами тегов реакций, которые вложены в стейт. -
tags
— массив с названиями тегов, которые вложены в стейт. -
tag
— объект включает в себя параметры и свойства:- Стейта или темы.
- Всех тегов, которые вложены в стейт.
-
name
— имя стейта или темы. -
locator
— объект с информацией о том, в каком файле объявлен стейт или тема.
Пример
Сценарий:
theme: /
state: Start
q!: $regex</start>
a: Начнём.
script:
log($jsapi.getStates())
state: NoMatch
event!: noMatch
a: Я не понял. Вы сказали: {{$request.query}}
Для этого сценария метод $jsapi.getStates()
вернет объект:
Структура сценария
{
// Информация о теме «/»
"/": {
"path": {
"parents": [],
"components": [
""
],
"name": "",
"parent": "/",
"outOfRoot": false
},
"loadOrder": 0,
"noContext": false,
"modal": false,
"reactions": [],
"tags": [],
"tag": {
"nameLocator": {
"filename": "fake",
"line": -1,
"col": -1,
"storageType": "RUNTIME"
},
"commentsValues": []
},
"name": "",
"locator": {
"filename": "fake",
"line": -1,
"col": -1,
"storageType": "RUNTIME"
}
},
// Информация о стейте «/Start»
"/Start": {
"path": {
"parents": [
"/"
],
"components": [
"",
"Start"
],
"name": "Start",
"parent": "/",
"outOfRoot": false
},
"loadOrder": 2,
"noContext": false,
"modal": false,
// Параметры и свойства тегов реакций
"reactions": [
{
"name": "answer",
"parameters": {
"value": "Начнём."
},
"tag": {
"td": {
"name": "a",
"hasColon": true,
"mainValueType": "MultilineString",
"innerDataType": "MultilineData",
"parameters": [
{
"name": "lang",
"type": "String",
"required": false
},
{
"name": "ttsEnabled",
"type": "Boolean",
"required": false
},
{
"name": "tts",
"type": "String",
"required": false
},
{
"name": "alexaVoiceEnabled",
"type": "Boolean",
"required": false
},
{
"name": "alexaVoice",
"type": "String",
"required": false
},
{
"name": "htmlEnabled",
"type": "Boolean",
"required": false
},
{
"name": "html",
"type": "String",
"required": false
}
],
"tagString": "a:"
},
"name": "a",
"value": "Начнём.",
"valueLocator": {
"filename": "src/main.sc",
"line": 5,
"col": 12,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 5,
"col": 9,
"storageType": "RUNTIME"
},
"commentsValues": []
},
"value": "Начнём.",
"locator": {
"filename": "src/main.sc",
"line": 5,
"col": 9,
"storageType": "RUNTIME"
}
},
{
"script": {
"id": "src/main_sc_6_9",
"body": "log($jsapi.getStates())",
"locator": {
"filename": "src/main.sc",
"line": 7,
"col": 13,
"storageType": "RUNTIME"
}
},
"locator": {
"filename": "src/main.sc",
"line": 6,
"col": 9,
"storageType": "RUNTIME"
},
"name": "script"
}
],
"tags": [
"q!",
"a",
"script"
],
// Параметры и свойства стейта «/Start» и всех вложенных тегов
"tag": {
"td": {
"name": "state",
"hasColon": true,
"mainValueType": "String",
"innerDataType": "Tags",
"parameters": [
{
"name": "noContext",
"type": "Boolean",
"required": false
},
{
"name": "modal",
"type": "Boolean",
"required": false
},
{
"name": "sessionResult",
"type": "String",
"required": false
},
{
"name": "sessionResultColor",
"type": "String",
"required": false
}
],
"tagString": "state:"
},
"name": "state",
"value": "Start",
// Вложенные теги
"inner": [
{
"td": {
"name": "q!",
"hasColon": true,
"mainValueType": "MultilineString",
"innerDataType": "MultilineData",
"parameters": [],
"tagString": "q!:"
},
"name": "q!",
"value": "$regex</start>",
"parameters": {
"fromState": {
"name": "fromState",
"value": "/"
},
"toState": {
"name": "toState",
"value": "."
}
},
"valueLocator": {
"filename": "src/main.sc",
"line": 4,
"col": 13,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 4,
"col": 9,
"storageType": "RUNTIME"
},
"commentsValues": []
},
{
"td": {
"name": "a",
"hasColon": true,
"mainValueType": "MultilineString",
"innerDataType": "MultilineData",
"parameters": [
{
"name": "lang",
"type": "String",
"required": false
},
{
"name": "ttsEnabled",
"type": "Boolean",
"required": false
},
{
"name": "tts",
"type": "String",
"required": false
},
{
"name": "alexaVoiceEnabled",
"type": "Boolean",
"required": false
},
{
"name": "alexaVoice",
"type": "String",
"required": false
},
{
"name": "htmlEnabled",
"type": "Boolean",
"required": false
},
{
"name": "html",
"type": "String",
"required": false
}
],
"tagString": "a:"
},
"name": "a",
"value": "Начнём.",
"valueLocator": {
"filename": "src/main.sc",
"line": 5,
"col": 12,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 5,
"col": 9,
"storageType": "RUNTIME"
},
"commentsValues": []
},
{
"td": {
"name": "script",
"hasColon": true,
"mainValueType": "MultilineString",
"innerDataType": "MultilineData",
"parameters": [],
"tagString": "script:"
},
"name": "script",
"value": "log($jsapi.getStates())",
"valueLocator": {
"filename": "src/main.sc",
"line": 7,
"col": 13,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 6,
"col": 9,
"storageType": "RUNTIME"
},
"commentsValues": []
}
],
"valueLocator": {
"filename": "src/main.sc",
"line": 3,
"col": 12,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 3,
"col": 5,
"storageType": "RUNTIME"
},
"commentsValues": []
},
"name": "Start",
"locator": {
"filename": "src/main.sc",
"line": 3,
"col": 5,
"storageType": "RUNTIME"
}
},
// Информация о стейте «/NoMatch»
"/NoMatch": {
"path": {
"parents": [
"/"
],
"components": [
"",
"NoMatch"
],
"name": "NoMatch",
"parent": "/",
"outOfRoot": false
},
"loadOrder": 3,
"noContext": false,
"modal": false,
// Параметры и свойства тегов реакций
"reactions": [
{
"name": "answer",
"parameters": {
"value": "Я не понял. Вы сказали: {{$request.query}}"
},
"tag": {
"td": {
"name": "a",
"hasColon": true,
"mainValueType": "MultilineString",
"innerDataType": "MultilineData",
"parameters": [
{
"name": "lang",
"type": "String",
"required": false
},
{
"name": "ttsEnabled",
"type": "Boolean",
"required": false
},
{
"name": "tts",
"type": "String",
"required": false
},
{
"name": "alexaVoiceEnabled",
"type": "Boolean",
"required": false
},
{
"name": "alexaVoice",
"type": "String",
"required": false
},
{
"name": "htmlEnabled",
"type": "Boolean",
"required": false
},
{
"name": "html",
"type": "String",
"required": false
}
],
"tagString": "a:"
},
"name": "a",
"value": "Я не понял. Вы сказали: {{$request.query}}",
"valueLocator": {
"filename": "src/main.sc",
"line": 11,
"col": 12,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 11,
"col": 9,
"storageType": "RUNTIME"
},
"commentsValues": []
},
"value": "Я не понял. Вы сказали: {{$request.query}}",
"locator": {
"filename": "src/main.sc",
"line": 11,
"col": 9,
"storageType": "RUNTIME"
}
}
],
"tags": [
"event!",
"a"
],
// Параметры и свойства стейта «/NoMatch» и всех вложенных тегов
"tag": {
"td": {
"name": "state",
"hasColon": true,
"mainValueType": "String",
"innerDataType": "Tags",
"parameters": [
{
"name": "noContext",
"type": "Boolean",
"required": false
},
{
"name": "modal",
"type": "Boolean",
"required": false
},
{
"name": "sessionResult",
"type": "String",
"required": false
},
{
"name": "sessionResultColor",
"type": "String",
"required": false
}
],
"tagString": "state:"
},
"name": "state",
"value": "NoMatch",
// Вложенные теги
"inner": [
{
"td": {
"name": "event!",
"hasColon": true,
"mainValueType": "String",
"innerDataType": "None",
"parameters": [],
"tagString": "event!:"
},
"name": "event!",
"value": "noMatch",
"parameters": {
"fromState": {
"name": "fromState",
"value": "/"
},
"toState": {
"name": "toState",
"value": "."
}
},
"valueLocator": {
"filename": "src/main.sc",
"line": 10,
"col": 17,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 10,
"col": 9,
"storageType": "RUNTIME"
},
"commentsValues": []
},
{
"td": {
"name": "a",
"hasColon": true,
"mainValueType": "MultilineString",
"innerDataType": "MultilineData",
"parameters": [
{
"name": "lang",
"type": "String",
"required": false
},
{
"name": "ttsEnabled",
"type": "Boolean",
"required": false
},
{
"name": "tts",
"type": "String",
"required": false
},
{
"name": "alexaVoiceEnabled",
"type": "Boolean",
"required": false
},
{
"name": "alexaVoice",
"type": "String",
"required": false
},
{
"name": "htmlEnabled",
"type": "Boolean",
"required": false
},
{
"name": "html",
"type": "String",
"required": false
}
],
"tagString": "a:"
},
"name": "a",
"value": "Я не понял. Вы сказали: {{$request.query}}",
"valueLocator": {
"filename": "src/main.sc",
"line": 11,
"col": 12,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 11,
"col": 9,
"storageType": "RUNTIME"
},
"commentsValues": []
}
],
"valueLocator": {
"filename": "src/main.sc",
"line": 9,
"col": 12,
"storageType": "RUNTIME"
},
"nameLocator": {
"filename": "src/main.sc",
"line": 9,
"col": 5,
"storageType": "RUNTIME"
},
"commentsValues": []
},
"name": "NoMatch",
"locator": {
"filename": "src/main.sc",
"line": 9,
"col": 5,
"storageType": "RUNTIME"
}
}
}