вывод voicexml внешней грамматики и заполнение элемента поля

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

<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», и пользователь может выбрать снова — поэтому слово «помощь» тоже должно быть во внешней грамматике, не так ли?)

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


person Tyzak    schedule 10.01.2011    source источник


Ответы (1)


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