2011-01-10 7 views
1

ユーザーが「ヘルプ」と答えて、次のフィールドが入力されず、ユーザーがすべての可能なオプションを取得したとします。外部文法の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" と言いますユーザーが再び選択することができます - ので、単語「ヘルプ」は、同様の外部文法にしておく必要があり、それはしていません)事前

答えて

2

感謝はい、アクティブな文法は「ヘルプ」を含まなければなりませんの?値 '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 principleを以下、この効果はlink要素を含むアプリケーションルートドキュメントを使用して、アプリケーションのグローバルを行うことができます。 app-root.vxmlドキュメント以下の例では、helpイベントにグローバル文法「ヘルプ」発言を結合linkがあります:

<?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 a Multi-Document Applicationのセクションで説明しています。また、アプリケーションのページで、vxml要素のapplication属性を経由してアプリケーションルートドキュメントへの参照を作成し、help catchブロックで適切に話す次にTellmeのメーカードキュメント

からHandling Eventsを参照してください。

<?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が有効になります。

関連する問題