Var
var — элемент <var> используется для объявления переменной. Кроме того, данный элемент позволяет при объявлении переменной присвоить ей определенное значение.
Синтаксис
<var expr = "CDATA" name = "NMTOKEN"/>
Атрибуты
- name — атрибут, определяющий имя переменной. При формировании имени могут участвовать буквы, цифры, знак подчеркивания и символ доллара. Иные символы недопустимы. Имя переменной может начинаться только с буквы или символа доллара (в противном случае будет представлена ошибка error.semantic ).
(Необходимость указания: обязательно) - expr — атрибут, используемый в качестве значения, которое присваивается переменной при ее объявлении.
(Необходимость указания: обязательно)
Области видимости переменных
VoiceXML использует область видимости как в ECMAScript для объявления переменных на разных уровнях иерархии в приложении. Например, на переменную, объявленную в области видимости документа (document scope), можно ссылаться где угодно в пределах данного документа, в то время как локальная переменная элемента <catch> доступна только в пределах данного элемента. Для того чтобы сохранить семантику области видимости, все переменные ECMAScript должны быть объявлены. При использовании необъявленных переменных выдается ошибка error.semantic
Scope Type | Description |
---|---|
session | Эти переменные доступны только для чтения, которые относятся ко всей сессии. Они объявляются и устанавливаются интерпретатором. Новые переменные этого типа не могут быть объявлены в VoiceXML документе |
application | Данные переменные объявлены с помощью и <script>, и они являются потомком корневого элемента <vxml> в корневом документе. Они видимы для всех загружаемых документов в данный документ. Обратите внимание, что при выполнение действий внутри корневого документа document.x эквивалентно application.x |
document | Данные переменные объявлены с помощью <var> и <script>, и они являются потомком корневого элемента <vxml> в некотором документе. Они видимы только внутри данного документа. |
dialog | Каждый диалог (меню или форма) имеет свою область видимости, которая существует только лишь, когда пользователь обращается к диалогу и видна элементам диалога. Область видимости диалога включает в себя следующие переменные:
|
(anonymous) | каждый элемент <block>, <filled>, <catch> определяет новую анонимную область видимости, которая содержит переменные объявленные в этих элементах |
Каждая область видимости содержит предопределенную переменную, имя которой совпадает с именем типа области видимости, которая ссылается сама на себя. Это позволяет разработчику, например для anonymous, dialog, document областей видимости ссылаться на переменную X, находящуюся в области видимости document используя document.X. Также не рекомендуется использовать "session", "application", "document" и "dialog" в качестве имен переменных.
Стандартные переменные session
- session.connection.local.uri — определяет URI, по которому происходит обращение к устройству локальной интерпретации
- session.connection.remote.uri — определяет URI, по которому происходит обращение к удаленному устройству абонента
- session.connection.protocol.name — переменная, определяющая имя протокола
- session.connection.protocol.version — версия протокола
- session.connection.redirect — эта переменная массив, определяющий пути переадресации. Первый элемент — номер на который звонит абонент. Последний — последний переадресованный номер. Каждый элемент содержит uri, pi (presentation information), si (screening information) и reason property. Последнее может принимать значение "unknown", "user busy", "no reply", "deflectin during alerting", "deflection immediate response", "mobile sibscriber not reachable"
Стандартные переменные application:
- application.lastresult$ — данная переменная хранит информацию про последнюю распознанную фразу в пределах данного приложения. Это массив элементов, в котором каждый элемент, application.lastresult$[i], представляет собой возможный результат с помощью следующих переменных
- application.lastresult$[i].confidence — переменная, характеризующая качество распознавания текста. Значение переменной лежит в пределах [0; 1]. В случае DTMF значение переменной всегда равно 1.
- application.lastresult$[i].utterance — переменная отвечающая за неинтерпретированный текст (то есть как пользователь произнес, так и возвращается значение). Токенизация зависит от данной конкретной платформы("5300" = "5 тысяч 300" = "пять тысяч триста" и т.д.). В случае DTMF-грамматики, переменной возвращается последовательность цифр
- application.lastresult$[i].inputmode — определяет как вводили данные. DTMF или речевые.
- application.lastresult$[i].interpretation — интерпретированный результат распознавания.
Интерпретированный текст сортируется, согласно вероятности распознавания: от наиболее вероятного к наименее вероятному. Интерпретированный текст с идентичной вероятностью сортируются далее согласно иерархии грамматик. Различные элементы application.lastresult$ будут всегда отличаться в их utterance, interpretation или в обоих показателях. Гарантируется, что число элементов application.lastresult$ будет не меньше одного и не больше, чем свойство системы распознавание "maxnbest". Если не было получено никаких результатов, то значение application.lastresult$ будет undefined. Более того, отметим, что нулевой элемент массива application.lastresult$ содержит свойства confidence, utterance, inputmode, and interpretation. В случае, когда выдается событие <nomatch>, это считается "успешным" распознаванием и влияет на значение application.lastresult$, однако какие именно значения зависит от конкретной платформы. В отличие от <nomatch> <noinput> не влияет на значение application.lastresult$
Родители
<block> <catch> <error> <filled> <form> <help> <if> <nomatch>
Потомки
none
Пример
<?xml version="1.0"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xml:lang="ru-RU"> <var name="surname" expr="'Ульянов'"/> <form> <block> Первая фамилия <value expr="surname"/>. <assign name="surname" expr="'Ленин'"/> Новая фамилия <value expr="surname"/>. </block> </form> </vxml>