Перейти к основному содержимому

$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"
}
}
}