Subdialog

Материал из VXML
Перейти к: навигация, поиск


<subdialog> — поддиалог. Подобен вызову функции, которая обеспечивает механизм для вызова нового подсценария и возвращения в исходную форму. Примеры переменных, грамматики и информация о состоянии сохраняются и доступны до тех пор, пока они не возвращены в исходный диалог. Поддиалоги могут использоваться, например, для создания последовательности подтверждений, которые могут потребоваться для запроса в базе данных; для создания набора компонент, которые могут передаваться другим документам в пределах одного документа; для создания библиотек многократного использования в диалогах, которые могут предаваться нескольким приложениям.

<subdialog> вызывает поддиалог, определенный атрибутом src или srcexpr в основном диалоге. Поддиалог выполняется в новом сценарии, который содержит документ поддиалога, объявления переменных, информацию о состоянии данного элемента, а так же корень приложения (если он присутствует) со сброшенными счетчиками и инициализированными переменными. <subdialog> выполняется до тех пор, пока не начинают выполнятся элементы <return> или <exit>, или до тех пока ни один элемент данной формы не будет иметь доступа к FIA с возможностью выбора (эквивалентно элементу <exit>) Сценарии диалога и поддиалога независимы, даже если они оба находятся в одном документе. Переменные в области видимости основного диалога не передаются поддиалогу. Даже если поддиалог указан в одном документе, что и основной диалог, выполняемый сценарий содержит иные переменные. Если поддиалог и диалог находятся в разных документах, но имеют единый корневой документ, переменные корня поддиалога все равно отличаются от переменных диалога. Все связи переменных применимые в сценарии поддиалога теряются при возвращении в основной сценарий Однако в рамках сценария поддиалога применяются обычные правила для области видимости грамматик, событий и переменных.

Элемент <subdialog> может содержать элементы, такие же как и для всех элементов формы, в том числе <param>. Данный элемент в поддиалоге определяет параметры,которые передаются поддиалогу. Эти параметры должны быть объявлены с помощью в форме, выполняемой в поддиалоге. В противном случае выдается ошибка error.semantic. Когда происходит инициализация поддиалога, то form-level элементы <var> инициализируются в порядке документа значениями, указанными в элементе <param> с соответствующим именем. В этом случае значение переменной элемента <var> игнорируется. Если для элемента <var> нет соответствующего ему элемента <param>, значение атрибута expr берется по умолчанию или undefined, как это обычно у элемента <form>.

Синтаксис

<subdialog  cond="CDATA" 
            enctype="CDATA" 
            expr="CDATA" 
            fetchaudio="CDATA" 
            fetchhint="(prefetch|safe)" 
            fetchtimeout="CDATA" 
            maxage="CDATA" 
            maxstale="CDATA" 
            method="(GET|POST)" 
            name="NMTOKEN" 
            namelist="NMTOKEN" 
            src="string - URI">

Атрибуты

  • cond — условие, при выполнении которого действия, заключенные между тегами <subdialog> и </subdialog> , будут выполнены.
    (Необходимость указания: необязательно)
    По умолчанию TRUE
  • name — результат возвращения поддиалога. Объект ECMAScript, чьи свойства определены в атрибуте namelist элемента <return>
    (Необходимость указания: обязательно)
  • expr — начальное значение переменной элемента формы. Если это значение инициализировано, то элементы формы не посещаются, до тех пор пока значение не очистится.
    (Необходимость указания: необязательно)
  • namelist — список переменных, необходимых для представления. Если список пуст, он может содержать ссылки на переменные вне списка. Переменные должны быть объявлены. В противном случае выдается ошибка error.semantic
    (Необходимость указания: необязательно)
    По умолчанию список пуст
  • src — URI на поддиалог
    (Необходимость указания: обязательно, если не указан srcexpr)
  • srcexpr — ECMAScript выражение для URI поддиалога
    (Необходимость указания: обязательно, если не указан src)
  • fetchaudio — URI на аудио-файл, который проигрывается, пока получение не будет выполнено.Если адрес не указан и используется данный атрибут или атрибут не указан, никакое аудио проигрываться не будет.
    (Необходимость указания: необязательно)
  • fetchtimeout — время ожидания на возвращение содержимого сценария, до того как будет выдана ошибка error.badfetch.
    (Необходимость указания: необязательно)
    По умолчанию: 5s
  • fetchhint — используется, чтобы определить, когда данные должны быть получены во время выполнения работы приложения. Возможные значения и их описания:
  1. prefetch — данные получаются при первом выполнении документа
  2. safe — данные получаются, только когда они специально запрашиваются в приложении
    (Необходимость указания: необязательно)
    По умолчанию: safe
  • maxage — указывает максимально допустимое время выполнения сценария. Время указывается в секундах.
    (Необходимость указания: необязательно)
  • maxstale — указывает максимально допустимое "время жизни" сценария, то есть время, в течение которого можно использовать сценарий. Время указывается в секундах.
    (Необходимость указания: необязательно)
  • method — указывает HTTP метод, который используется, когда отправляется запрос.(возможны значения 'GET' и 'POST')
    (Необходимость указания: необязательно)
    По умолчанию: GET
  • enctype — тип кодирования представленного документа
    (Необходимость указания: необязательно)
    По умолчанию: application/x-www-form-urlencoded

Родители

<form>

Потомки

<audio> <catch> <error> <filled> <help> <noinput> <nomatch> <param> <property>

Пример

Пример основного диалога, который обращается к файлу day.xml с помощью элемента <subdialog>.

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xml:lang="ru-RU">
  <form id="Day">
    <subdialog name="day" src="day.xml">
      <filled>
        <prompt bargein="false">
          Вы сказали:
          <value expr="day.today" />
        </prompt>
      </filled>
    </subdialog>
  </form>
</vxml>

Пример поддиалога — файл day.xml:

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xml:lang="ru-RU">
  <var name="today"/>
  <form id="day">
    <field>
      <prompt>
        Какой сегодня день?
      </prompt>
      <grammar xml:lang="ru-RU" root="main" mode="voice" version="1.0" tag-format="semantics/1.0">
        <rule id="main">
          <one-of>
            <item>понедельник</item>
            <item>вторник</item>
            <item>среда</item>
            <item>четверг</item>
            <item>пятница</item>
            <item>суббота</item>
            <item>воскресенье</item>
          </one-of>
        </rule>	   
      </grammar>
      <filled> 
        <assign expr="application.lastresult$.utterance" name="today"/>
        <return namelist="today"/>
      </filled>
    </field>
  </form>
</vxml>



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

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Статьи
Грамматики
Элементы VXML
Элементы SSML
Инструменты