Да, активная грамматика должна содержать фразу «помощь», которая возвращает значение «помощь». Затем вы перехватываете событие с помощью тега 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
:
<?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 Executing приложение для работы с несколькими документами. См. также раздел Обработка событий в Tellme Студийная документация
Затем на страницах вашего приложения сделайте ссылку на корневой документ приложения через атрибут application
элемента vxml
и произнесите соответствующее слово в блоке catch 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
был активен для каждого поля вашего приложения, если нет конфликта с чем-то в грамматике конкретного поля.
person
David J. Liszewski
schedule
19.01.2011