voicexml выводит внешнюю грамматику и пополняет элемент поля - PullRequest
1 голос
/ 10 января 2011

Мне бы хотелось, чтобы, если пользователь сказал «помощь», следующее поле не было заполнено и пользователь получил все возможные варианты.

<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>

</field>

(скажем, во внешней грамматикеэто «p1», «p2» и «p3», пользователь говорит «помощь», а системы говорят «p1», «p2», «p3», и пользователь может выбрать снова - поэтому слово «помощь»быть во внешней грамматике, не так ли?)

заранее спасибо

1 Ответ

2 голосов
/ 19 января 2011

Да, активная грамматика должна содержать высказывание «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 был активным для каждого поля вашего приложения, если только нет столкновения с чем-то в определенном поле. грамматика.

...