Да, активная грамматика должна содержать высказывание «help», которое возвращает значение «help». Затем вы ловите событие с тегом help
:
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd">
<form id="test">
<field name="var1">
<prompt bargein="true" bargeintype="hotword" >say xy </prompt>
<grammar src = "grammar.grxml" type="application/srgs+xml" />
<filled>
<assign name="myProdukt" expr="var1" />
you said <value expr="myProdukt"/>
</filled>
<help>
To choose a product, say,
<!-- whatever the product choices are -->
frobinator, submarine, curling iron, ..
<reprompt/>
</help>
</field>
</form>
</vxml>
В качестве альтернативы, следуя принципу DRY , этот эффект можно сделать глобально для вашего приложения с использованием корневого документа приложения , содержащего link
элемент. В приведенном ниже примере app-root.vxml
есть link
, связывающий глобальную грамматическую фразу «help» с событием help
:
<?xml version="1.0"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml">
<link event="help">
<grammar mode="voice" root="root_rule" tag-format="semantics/1.0"
type="application/srgs+xml" version="1.0" xml:lang="en-US">
<rule id="root_rule" scope="public">
<one-of>
<item weight="1.0">
help
</item>
</one-of>
</rule>
</grammar>
</link>
</vxml>
Эта грамматика будет активна повсюду - эффективно объединяется с каждой грамматикой активного поля. Если вам нужна дополнительная информация о корневых документах приложения, поясняется раздел спецификации VoiceXML Выполнение приложения с несколькими документами . Также см. Обработка событий из Tellme Studio Документация
Затем на страницах своего приложения сделайте ссылку на корневой документ приложения через атрибут application
элемента vxml
и говорите соответствующим образом в блоке перехвата help
:
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"
application="app-root.vxml">
<form id="test">
<field name="var1">
<prompt bargein="true" bargeintype="hotword" >say xy </prompt>
<grammar src = "grammar.grxml" type="application/srgs+xml" />
<filled>
<assign name="myProdukt" expr="var1" />
you said <value expr="myProdukt"/>
</filled>
<help>
To choose a product, say,
<!-- whatever the product choices are -->
frobinator, submarine, curling iron, ..
<reprompt/>
</help>
</field>
</form>
</vxml>
Конечно, вы можете поместить код link
на той же странице, что и ваша форма, но, скорее всего, вы захотите, чтобы help
был активным для каждого поля вашего приложения, если только нет столкновения с чем-то в определенном поле. грамматика.