• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            鐵觀音

            C++編程寶典

               ::  ::  ::  ::  :: 管理 ::
              1 隨筆 :: 19 文章 :: 0 評論 :: 0 Trackbacks
            第一節 Resource Fetching 第二節 ??第三節??第四節??第五節
            ?
            一、Fetching
            ????VoiceXML解釋器環境需要獲取VoiceXML文檔和其他的資源,例如聲音文件,語法,腳本和object。下面的屬性控制著每次和URI相關的資源的獲取:
            fetchtimeout 等待要獲取的資源返回的時間,超過這個時間就拋出一個error.badfetch 時間。該值是一個Time Designation (見6.5節)。如果沒有指定該屬性,則使用最內部的fetchtimeout屬性值。
            fetchhint 它定義了解釋器環境應該在何時從服務器上獲取資源。該屬性值為prefetch或safe。Prefetch表示當加載文檔時,就可以獲取該資源了;而safe表示只有在確實需要獲取資源時才去獲取資源。如果沒有指定該屬性,則使用最內部的fetchhint屬性值。
            maxage 表示如果該資源存在的時間沒有超過指定的時間(以秒計),則文檔可以使用該資源(類似于HTTP 1.1 RFC2616中的‘max-age’)。文檔不會使用過期的資源,除非指定了maxstale屬性。如果沒有指定該屬性,則使用最內部的maxage屬性值。
            maxstale 表示文檔可以使用過期的資源(類似于HTTP 1.1 RFC2616中的‘max-stale’)。如果指定了該屬性,則文檔會接受過期時間不超過該屬性值的資源。如果沒有指定該屬性,則使用最內部的maxstale屬性值。
            表53:獲取的屬性
            ????當從URI獲取資源時,fetchtimeout屬性決定了等待該資源返回的時間(由需要獲取該資源的時候算起),fetchhint屬性決定了何時獲取該資源。VoiceXML解釋器環境的緩存策略采用maxage和maxstale屬性,詳細的介紹請看下面。
            ????Fetchhint屬性和其他的各種fetchhint property只是提示解釋器環境何時可以獲取資源。它告訴解釋器環境,可以預取該資源,而不是要求該資源可預取;它只是提示該資源可以被預取。然而,一般都要求解釋器環境使用safe fetchhint。
            ????當通過<subdialog>,<goto>,<submit>,<link>或<choice>元素從一個dialog跳轉到另一個dialog時,下面的一些規則會影響到解釋器的行為。
            ??????1、如果引用的URI指向一個文檔(如,“doc#dialog”),或者提供了一些查詢的數據(通過POST或GET),則要獲取這個新的文檔(從本地緩存,或者中介緩存,或者從原始的web服務器)。當獲取到這個文檔時,則進入初始化階段(即初始化一個新的應用根文檔(如果需要的話),初始化該文檔的變量,并執行腳本)。最后初始化并執行所請求的dialog(如果沒有指定的話,就是第一個dialog)。
            ??????2、通常,如果URI引用只包含一個段(如,“#my_dialog”),則不用獲取任何文檔,也不用執行該文檔的任何初始化操作。然而,<submit>元素總是需要獲取資源,且如果有包含一個段和指定namelist屬性的話,也需要獲取資源。
            ??????3、如果在葉文檔中的一個URI引用指向該文檔的應用根文檔,即使該URI引用包含的是絕對或相對的URI(見1.5.2節和RFC2396),則不用獲取資源,也不用初始化。然而,如果指向應用根文檔的URI引用包含了一個查詢串或指定了namelist屬性,則要重新獲取該應用根文檔。
            ????所有獲取VoiceXML文檔的元素也支持下面的屬性:
            fetchaudio 該URI指定了正在獲取資源時要播放的音頻。如果沒有指定,則使用fetchaudio property值。如果fetchaudio property也沒有設置,則在獲取資源時不播放任何音頻。audiofetchhint,audiomaxage,audiomaxstale property控制著該音頻的獲取,而fetchtimeout property則控制資源獲取的時間。fetchaudiodelay property控制該音頻的播放,fetchaudiominimum property控制該獲取音頻的時間。
            表54:附加的獲取屬性
            ????當正在獲取下一個文檔有明顯的延遲時,fetchaudio屬性就很有用,它可用于播放背景音樂,或者公告。當需要的文檔已經獲取到時,如果還在播放音頻,則中斷播放。在獲取fetchaudio屬性指定的音頻時,如果出現錯誤,則不拋出任何事件,在獲取文檔時也不播放任何音頻。
            ?
            二、Caching
            ????和HTML的可視瀏覽器一樣,VoiceXML解釋器環境也可以使用緩存以提高獲取文檔和其他資源時的性能。就像在HTML網頁中有很多圖片一樣,在VoiceXML文檔中也有很多聲音剪輯。在可視的瀏覽器中,通常都包含有終端用戶的控制,用于刷新那些快要過期的內容。而這在VoiceXML解釋器中就做不到,因為它缺少響應的中斷用戶的控制。因此,實現緩存更新是通過在文檔中適當使用maxage和maxstale屬性判斷的。
            ????注意,VoiceXML解釋器環境使用的緩存策略必須遵循HTTP1.1(RFC2616)中的緩存正確性規則。特別是必須遵循到期和緩存控制頭,下面的算法總結了這些規則,并說明了當請求資源時解釋器環境的行為:
            ??????·如果該資源在緩存中不存在,則使用get方法從服務器獲取。
            ??????·如果該資源在緩存中存在,
            ????????o 如果有提供了maxage屬性值,
            ??????????·如果緩存中的該資源存在的時間<=maxage屬性值,
            ????????????·如果該資源已經過期,
            ??????????????·則檢查maxstale屬性值。
            ????????????·否則使用使用緩存中的該資源。
            ??????????·否則使用get方法從服務器獲取相應的資源。
            ????????o 否則,
            ??????????·如果該資源已經過期,
            ????????????·則檢查maxstale屬性值。
            ??????????·否則使用使用緩存中的該資源。
            ????檢查maxstale屬性值是指:
            ??????·如果有提供maxstale屬性值,
            ????????o 如果緩存中的該資源已經過期,且過期的時間沒有超過它的maxstale屬性值,則使用緩存中的該資源。
            ????????o 否則使用get方法從服務器獲取相應的資源。
            ??????·否則使用get方法從服務器獲取相應的資源。
            ????注意,當需要從服務器獲取資源時,可以檢查一下還在緩存中的文檔,“如果該文檔已經被更改了,則從服務器獲取”。這是一個可行的優化。
            ????如果其他的協議也有maxage和maxstale屬性,且直接由HTTP1.1支持,則有些資源除了可以由HTTP的URI定位,也可以由這些協議的URI定位。如果該協議不支持資源存在時間(age)的概念,則解釋器環境在接收到該資源時開始計算其存在時間。如果該協議不支持資源失效(staleness)的概念,則解釋器環境應該認為該資源在被接收后馬上就過期。
            ????Controlling the Caching Policy
            ????VoiceXML允許開發者對每個資源(除了<vxml>元素的application屬性引用的文檔:對于應用根文檔,沒有任何機制可以控制它的緩存策略)的每次使用進行緩存策略的控制。
            ????每個和資源相關的元素都可以指定maxage和maxstale屬性。給maxage指定一個非0的值,可用于獲取緩存中還沒有過期的最新的資源。如果maxage的屬性值為0,則每次請求都無條件的去獲取最新的資源。
            ????Maxstale屬性使開發者可以規定使用不太陳舊的過期的資源(根據HTTP1.1的規則)。通過減少獲取資源的次數來提高性能。該屬性對于那些對服務器端大文件沒有過期控制的開發者來講,特別有用。
            ?
            三、Prefetching
            ????預取資源是一個可選的特性,它使解釋器環境在需要一個資源之前就可以去獲取該資源。如果某元素的fetchhint屬性值為“prefetch”,則由該元素確定的資源就可以進行預取。當解釋器環境預取資源時,必須確保所預取的資源正好是所需要的資源。特別的,如果該URI由expr屬性確定,在沒有給該表達式的變量賦值之前,解釋器環境一定不能提前獲取資源。同樣的,在給namelist屬性的變量賦值之前,也不能提前獲取<submit>元素需要的資源。
            ????每次使用資源都必須檢查該資源的是否過期,如果它的fetchhint屬性值為“prefetch”,則預取該資源。檢查資源必須遵循6.1.2節中的緩存策略的規則。
            ?
            四、Protocols
            ????VoiceXML平臺必須支持“http”的URI協議,應該支持“https”協議,也可以支持其他的URI協議。

            第二節 Metadata Information 第一節 ??第三節??第四節??第五節
            ?
            ????元數據信息是關于文檔的信息,而不是關于文檔內容的信息。VoiceXML提供了兩個元素用于表示元數據信息:<meta>和<metadata>元素。對于元素據信息,<metadata>元素比<meta>元素提供了更全面、更強大的處理。
            ????VoiceXML沒有指定必須的元素據信息。然而,我們推薦用<metadata>元素來表示元數據,該元素的信息是Dublin Core1.0版本RDF(Resource Description Framework)方案的RDF格式的(見6.2.2節)。
            ?
            一、META
            ????<meta>元素指定了元信息,就如在HTML中一樣。<meta>元素有兩種類型。
            ????第一種是指定整個文檔的元數據property,它由name和content這對屬性表示。例如,指定VoiXML文檔的維護人員:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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">
                    <meta name="maintainer" content="jpdoe@anycompany.example.com"/>
                    <form>
                      <block>
                        <prompt>Hello</prompt>
                      </block>
                    </form>
                  </vxml>
            ????第二種是指定了HTTP響應頭,它由http-equiv和content這對屬性表示。在下面的例子中,第一個<meta>元素設置了一個過期日期,以防止該文檔緩存;第二個<meta>元素設置了日期頭:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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">
                    <meta http-equiv="Expires" content="0"/>
                    <meta http-equiv="Date" content="Thu, 12 Dec 2000 23:27:21 GMT"/>
                    <form>
                      <block>
                        <prompt>Hello</prompt>
                      </block>
                    </form>
                  </vxml>
            ????<meta>元素的屬性:
            name 該元數據的特性名。
            content 該元數據的特性值。
            http-equiv HTTP響應頭的名稱。
            表55:<meta>元素的屬性
            ????必須正確的指定屬性“name”或“http-equiv”中的一個,否則拋出一個error.badfetch事件。
            ?
            二、METADATA
            ????<metadata>元素是一個容器,所有關于文檔的信息都可以使用元數據模式放在該元素中。雖然任何元數據方案都可以和<metadata>元素一起使用,但是我們建議使用RDF模式和Dublin Core Metadata初稿(Dublin Core Metadata Initiative)中定義的元數據特性。
            ????下面是DC中的元數據特性,我們建議在<metadata>元素中使用這些特性:
            Creator 表示該資源的內容的作者。
            Rights 表示該資源相關的版權信息。
            Subject 表示該資源內容的主題。一般使用該資源的關鍵字、主要的短語或類別的代碼來表示。建議最好從控制性詞匯或正式的類別方案中選一個值。The topic of the content of the resource. Typically, a subject will be expressed as keywords, key phrases or classification codes. Recommended best practice is to select values from a controlled vocabulary or formal classification scheme.
            表56:推薦的DC元數據特性
            ????下面的例子展示了在VoiceXML文檔中怎樣使用DC1.0版本的RDF模式包含<metadata>元素:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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">
                    <metadata>
                      <rdf:RDF
                         xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                         xmlns:rdfs = "http://www.w3.org/TR/1999/PR-rdf-schema-19990303#"
                         xmlns:dc = "http://purl.org/metadata/dublin_core#">
            										
                      <!-- Metadata about the VoiceXML document -->
                      <rdf:Description about="http://www.example.com/meta.vxml"
                         dc:Title="Directory Enquiry Service"
                         dc:Description="Directory Enquiry Service for London in VoiceXML"
                         dc:Publisher="W3C"
                         dc:Language="en"
                         dc:Date="2002-02-12"
                         dc:Rights="Copyright 2002 John Smith"
                         dc:Format="application/voicexml+xml">
                         <dc:Creator>
                           <rdf:Seq ID="CreatorsAlphabeticalBySurname">
                             <rdf:li>Jackie Crystal</rdf:li>
                             <rdf:li>William Lee</rdf:li>
                           </rdf:Seq>
                         </dc:Creator>
                       </rdf:Description>
                     </rdf:RDF>
                    </metadata>
                    <form>
                      <block>
                        <prompt>Hello</prompt>
                      </block>
                    </form>
                  </vxml>
            ?
            第三節 Property 第一節 ??第二節??第四節??第五節
            ?
            ????<property>元素用于設置系統的特性值。系統的特性影響著平臺的運轉狀態,例如識別方法,timeout,緩存策略等。
            ????可以在應用根文檔中定義<property>元素,作用于整個應用;也可以在<vxml>級定義,作用于整個文檔;也可以在<form>或<menu>級定義,作用于該dialog;或在一個form item中定義,作用于該form item。<property>元素作用于它的父元素及該父元素的所有子元素。對于相同的property,低級別的優先權高。當在同一級別中給某個property指定了兩個不同的值,則以在文檔順序中排后面的為準。在應用根文檔中指定的propery值是該應用中所有文檔的propety的默認值。在單獨的文檔中指定的property值的優先權高于在應用根文檔中指定的。
            ????如果平臺檢測到某個property值是非法的,應該拋出error.semantic事件。
            ????在某些情況下,<property>元素為其他元素的屬性,如timeout或bargein屬性,指定了默認值。例如,這個例子說明了怎樣在form中設置屬性bargein的默認值,使用戶不能打斷提示語:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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="no_bargein_form">
                      <property name="bargein" value="false"/>
                      <block>
                        <prompt>
                           This introductory prompt cannot be barged into.
                        </prompt>
                        <prompt>
                           And neither can this prompt.
                        </prompt>
                        <prompt bargein="true">
                           But this one <emphasis>can</emphasis> be barged into.
                        </prompt>
                      </block>
                      <field type="boolean">
                        <prompt>
                           Please say yes or no.
                        </prompt>
                      </field>
                    </form>
                  </vxml>
            ?
            一、Platform-Specific Properties
            ????解釋器環境可以任意的提供依賴于平臺的property。例如下面的例子,在該文檔內設置“multiplication factor”屬性:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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>
                      <property name="com.example.multiplication_factor" value="42"/>
                      <block>
                        <prompt>Welcome</prompt>
                      </block>
                    </form>
                  </vxml>
            ????依賴于平臺的property引入了不兼容的因素,降低了平臺的可移植性。為了最大限度的降低這些因素,我們強烈建議如下的方案:
            ??????1、依賴于平臺的property應使用反轉域名命名,以減少潛在的沖突,例如,com.example.foo 和net.example.foo就明顯的不一樣。
            ??????2、當解釋器環境碰到不支持的property時,寧可忽略這個peoperty,一定不能拋出error.unsupported.property事件。
            ?
            二、Generic Speech Recognizer Properties
            ????一般的語音識別器peoperty大部分來自JSAPI:
            confidencelevel 語音識別的confidence級別,它是一個浮點數,取值范圍從0.0到1.0。如果application.lastresult$.confidence 的值低于該property的值,識別結果會被拒絕(即拋出nomatch事件)。0.0表示識別需要的最低的confidence;1.0表示最高的confidence。該property的值是一個Real Number Designation(見6.5節)。默認值為0.5。
            sensitivity 設置sensitivity級別。值為1.0表示對無噪聲輸入高度敏感,值為0.0表示對噪聲的最低的敏感。該property的值是一個Real Number Designation(見6.5節)。默認值為0.5。
            speedvsaccuracy 表示在速度和準確性上想要的平衡點。0.0表示最快的識別速度,1.0表示最高的準確性。該property的值是一個實數標識(Real Number Designation見6.5節)。默認值為0.5。
            completetimeout 表示在用戶語音輸入之后和語音識別器得出識別結果(要么接收這個結果,要么拋出nomatch事件。)之前需要的靜音的 時長。它用于決定語音輸入是否為一個激活語法的完全匹配。相反,incompletetimeout用于決定語音輸入是否為一個激活語法的不完全匹配。
            長的completetimeout值會延遲識別結果的產生,并使得計算機的反應變慢。短的completetimeout值可能會導致用戶說的話被不適當的結束。合理的completetimeout值一般為0.3秒到1.0秒。該值是一個Time Designation (見6.5節)。默認值是依賴于平臺的,見附錄D。
            雖然平臺必須解析completetimeout property,但是平臺不是必須要支持completetimeout的 。 如果平臺選擇不支持completetimeout,則必須調整incompletetimeout property 的值。如下面描述的。
            incompletetimeout 識別器得出識別結果后,跟在用戶語音輸入后面的需要的靜音時長。當靜音之前的語音是所有激活的語法的一個不完全匹配時,incompletetimeout就起作用了。在這種情況下,一旦觸發了該屬性,則平臺不接受該不完全匹配的結果(即拋出一個nomatch事件)。
            當靜音之前的語音是一個激活的語法的完全匹配,且繼續說下去也可能匹配該語法時,incompletetimeout也會起作用。相比之下,當語音是一個激活的語法的完全匹配,且平臺不接受更多的語音時,使用的是completetimeout。
            太長的incompletetimeout值會延遲識別結果的產生,且使計算機的響應變慢。太短的incompletetimeout值可能會導致用戶說的話被不適當的結束。
            Incompletetimeout值通常都比completetimeout值長,這樣才能讓用戶在說話時可以停頓(例如,呼吸)。見附錄D。
            如果平臺選擇不支持completetimeout property (上面所講的),則平臺必須使用completetimeout和incompletetimeout中的最大值作為incompletetimeout 的值。
            該值是一個Time Designation (見6.5節)。
            maxspeechtimeout 用戶語音輸入的最大時長。如果用戶語音輸入的時間超過該時長,則拋出一個“maxspeechtimeout”事件。該值是一個Time Designation 。默認的值是依賴于平臺的。
            表57:一般的語音識別Properties
            ?
            三、Generic DTMF Recognizer Properties
            ????下面這幾個是屬于DTMF語法識別的property:
            interdigittimeout 當識別DTMF輸入時才使用interdigittimeout值。該值是一個Time Designation (見6.5節)。默認的值是依賴于平臺的。見附錄D。
            termtimeout 當識別DTMF輸入時才使用termtimeout值。該值是一個Time Designation (見6.5節)。默認的值是“0s”。見附錄D。
            termchar DTMF輸入識別時的結束DTMF字符。默認值為“#”。見附錄D。
            表58:一般的DTMF識別器的property
            ?
            四、Prompt and Collect Properties
            ????下面的這些是用于控制平臺的提示和收集的property。
            bargein 值為true或false。該屬性在播放提示語時起作用。值為true時允許bargein,值為false時則不允許bargein。默認的值為true。
            bargeintype 值為speech或hotword。該屬性用于設置bargein的類型。默認的值是依賴于平臺的。見4.1.5.1。
            timeout 當沒有輸入的時間超過該值時,平臺就拋出一個noinput事件。該值是一個Time Designation (見6.5節)。默認的值是依賴于平臺的。見附錄D。
            表59:提示和收集時的Properties
            ?
            五、Fetching Properties
            ????下面的這些是屬于在獲取新文檔和資源時的property。
            audiofetchhint 值為safe或prefetch。該屬性用于設置平臺是否可以預取音頻。當值為safe時,則該音頻只有在需要時才去獲取,在需要之前不能進行獲取。當值為prefetch時,則允許平臺預取音頻,但不是必須要預取音頻。默認值為prefetch。
            audiomaxage 用于設置對于緩存中的音頻資源平臺可接受的最大的存在時間,單位為秒。默認的值是依賴于平臺的。
            audiomaxstale 用于設置對于緩存中已經過期的音頻資源平臺可接受的最大的失效時間。默認的值是依賴于平臺的。
            documentfetchhint 值為safe或prefetch。用于設置平臺是否可以預取文檔。默認值為safe。
            documentmaxage 用于設置對于緩存中的文檔平臺可接受的最大的存在時間。單位為秒。默認的值是依賴于平臺的。
            documentmaxstale 用于設置對于緩存中的過期文檔平臺可接受的最大的失效時間,單位為秒。默認的值是依賴于平臺的。
            grammarfetchhint 值為safe或prefetch。用于設置平臺是否可以預取語法。默認的值為prefetch。
            grammarmaxage 用于設置對于緩存中的語法平臺可接受的最大的存在時間,單位為秒。默認的值是依賴于平臺的。
            grammarmaxstale 用于設置對于緩存中過期的語法平臺可接受的最大的失效時間,單位為秒。默認的值是依賴于平臺的。
            objectfetchhint 值為safe或prefetch。用于設置平臺是否可以預取<object>元素URI的內容。默認的值為prefetch。
            objectmaxage 用于設置對于緩存中的object平臺可接受的最大的存在時間,單位為秒。默認的值是依賴于平臺的。
            objectmaxstale 用于設置對于緩存中過期的object平臺可接受的最大的失效時間,單位為秒。默認的值是依賴于平臺的。
            scriptfetchhint 值為safe或prefetch。用于設置平臺是否可以預取<script>。默認的值為prefetch。
            scriptmaxage 用于設置對于緩存中的<script>平臺可接受的最大的存在時間,單位為秒。默認的值是依賴于平臺的。
            scriptmaxstale 用于設置對于緩存中過期的<script>平臺可接受的最大的失效時間,單位為秒。默認的值是依賴于平臺的。
            fetchaudio 在等待獲取資源文檔或其他資源時要要播放的音頻的URI。默認是在獲取時不播放任何音頻。<audio>,<grammar>,<objects>和<scripts>元素 沒有該property。音頻的獲取由audiofetchhint,audiomaxage,audiomaxstale控制,fetchtimeout則控制獲取的時間 。音頻的播放由fetchaudiodelay 控制,fetchaudiominimum peoperty則控制獲取的時間。
            fetchaudiodelay 在播放fetchaudio音頻之前等待獲取延遲的開始的時長。該值是一個Time Designation (見6.5節)。默認的值是依賴于平臺的,如“2s”。當獲取的延遲非常短時,不播放任何音頻比剛播放一小段音頻就被打斷好。
            fetchaudiominimum 播放fetchaudio音頻最短的時長。一旦開始播放fetchaudio音頻,即使資源已經獲取到了,如果播放的時長還沒有超過該值,也要繼續播放。該值是一個Time Designation (見6.5節)。默認的值是依賴于平臺的,如“5s”。一旦用戶已經聽到fetchaudio音頻,則不應該很快就中斷播放,這就是該屬性的作用。
            fetchtimeout 獲取資源timeout的時長,該值是一個Time Designation (見6.5節)。默認的值是依賴于平臺的。
            表60:獲取資源時的Properties
            ?
            六、Miscellaneous Properties
            inputmodes 值為dtmf或voice。該property用于確定要使用哪種輸入方式。在兩種方式都支持的平臺中,默認的值為“dtmf voice”。要使語音識別失效,則把該property設置為“dtmf”,要使DTMF識別失效,則把該property設置為“voice”。該property的一個作用是,在嘈雜的環境中可以使語音識別失效,而只使用DTMF識別。在只希望DTMF識別時,也可以讓語音識別失效。該property不能控制語法的激活。例如,當inputmodes為“dtmf”時,語音語法也可以被激活。然而,這些語音語法不會被匹配,因為語音輸入方式沒有激活。
            universals 平臺可以可選的提供一些依賴于平臺的通用的語法(universal command grammars),例如“help”,“cancel”或“exit”語法,這些語法總是激活的,且會產生相應的事件。
            一些應用通常需要定義它們自己的通用的語法,以提高應用的可移植性或提供一個與眾不同的界面。他們通過<link>元素指定新的通用語法。然后用該property避開默認的語法。該property不會影響默認的<catch>的事件處理。
            該property的默認值為“none”,它表示所有平臺默認的通用語法都失效。若該property的值為“all”,則表示所有平臺默認的通用語法都激活。要激活單個的語法,可以把該語法放在列表中,各個語法以空格隔開。例如,“cancel exit help”。
            maxnbest 該property用于控制數組“application.lastresult$”的最大長度。該數組的長度不能超過maxnbest的值。該property的最小值為1。默認的值為1。
            表61:其他的Properties
            ????下面的例子展示了在各個級別使用這些property。
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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">
                    <!-- set default characteristics for page -->
                    <property name="audiofetchhint" value="safe"/>
                    <property name="confidencelevel" value="0.75"/>
            										
                      <form>
                        <!-- override defaults for this form only -->
                        <property name="confidencelevel" value="0.5"/>
                        <property name="bargein" value="false"/>
                        <grammar src="address_book.grxml" type="application/srgs+xml"/>
                        <block>
                          <prompt>Welcome to the Voice Address Book</prompt>
                        </block>
                        <initial name="start">
                          <!-- override default timeout value -->
                          <property name="timeout" value="5s"/>
                          <prompt>Who would you like to call?</prompt>
                        </initial>
                        <field name="person">
                          <prompt>Say the name of the person you would like to call.</prompt>
                        </field>
                        <field name="location">
                          <prompt>Say the location of the person you would like to call.</prompt>
                        </field>
                        <field name="confirm">
                          <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/>
                          <!-- Use actual utterances to playback recognized words, rather than returned slot values -->
                          <prompt>
                             You said to call <value expr="person$.utterance"/>
                             at <value expr="location$.utterance"/>.
                             Is this correct?
                          </prompt>
                          <filled>
                           <if cond="confirm">
                             <submit namelist="person location"
                               next="http://www.messagecentral.example.com/voice/make_call" />
                           </if>
                           <clear/>
                        </filled>
                      </field>
                    </form>
                  </vxml>
            ?
            第四節 Param 第一節 ??第二節??第三節??第五節
            ?
            ????<param>元素用于指定要傳遞給subdialog或oject的值。它是以HTML的<PARAM>元素為模型的。它的屬性有:
            name Object或subdialog調用時的參數名。
            expr ECMASript表達式,它把它的結果值賦給相應的name屬性指定的參數。
            value Name屬性指定的參數的值。
            valuetype 它的值為data或ref,默認為ref。在object中,它用于表明name屬性的值是數據還是URI(ref)。該屬性不用在<subdialog>元素中,因為<subdialog>元素中的參數值都是數據。
            type 它表示當valuetype的值為ref時,name屬性指定的URI的媒體類型(media type)。該屬性只用于<object>元素中的<param>元素。
            表62:<param>元素的屬性
            ????必須正確的指定屬性expr或value中的一個,否則會拋出error.badfetch 事件。
            ????雖然特定的object可能需要指定valuetype和type的屬性值,但是通常這兩個屬性是是可選的。當<param>元素包含在<subdialog>元素中時,<param>元素指定的值用于初始化subdialog調用的dialog的<var>元素。當<param>元素包含在<object>元素中時,參數的用法是依賴于所調用的object的,它不屬于本規范說明書的范圍。
            ????下面是一個<object>元素中的<param>元素的用法的例子。在這個例子中,前兩個<param>元素包含有表達式(隱式的屬性值valuetype="data"),第三個<param>元素有顯式的值,而第四個<param>元素則包含了一個URI,該URI返回一個text/plain的媒體類型。
                  <object name="debit"
                      classid="method://credit_card/gather_and_debit"
                       data="http://www.recordings.example.com/prompts/credit/jesse.jar">
                    <param name="amount" expr="document.amt"/>
                    <param name="vendor" expr="vendor_num"/>
                    <param name="application_id" value="ADC5678-QWOO"/>
                    <param name="authentication_server"
                       value="http://auth_svr.example.com"
                       valuetype="ref"
                       type="text/plain"/>
                  </object>
            ????下面的一個例子說明了<param>元素在<subdialog>元素中的用法。在這個例子中,<param>元素中的兩個表達式用于初始化所調用的dialog中的變量。
            ????Form with calling dialog
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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>
                      <subdialog name="result" src="http://another.example.com/#getssn">
                        <param name="firstname" expr="document.first"/>
                        <param name="lastname"  expr="document.last"/>
                        <filled>
                        <submit namelist="result.ssn"
                          next="http://myservice.example.com/cgi-bin/process"/>
                        </filled>
                      </subdialog>
                    </form>
                  </vxml>
            ????Subdialog in http://another.example.com
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       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="getssn">
                      <var name="firstname"/>
                      <var name="lastname"/>
                      <field name="ssn">
                       <grammar src="http://grammarlib/ssn.grxml" type="application/srgs+xml"/>
                        <prompt>Please say social security number.</prompt>
                        <filled>
                          <if cond="validssn(firstname,lastname,ssn)">
                            <assign name="status" expr="true"/>
                            <return namelist="status ssn"/>
                         <else/>
                           <assign name="status" expr="false"/>
                           <return namelist="status"/>
                         </if>
                        </filled>
                      </field>
                    </form>
                  </vxml>
            ????在<subdialog>元素中使用<param>元素是傳遞數據給subdialog的一種方便的方法,這樣就不需要使用服務器端的腳本編程了。

            第五節 Value Designations 第一節 ??第二節??第三節??第四節
            ?
            ????一些VoiceXML參數的值遵循在W3C CSS(Cascading Style Sheet)中使用的約定。
            ?
            一、Integers and Real Numbers
            ????實數和整數只能在十進制中使用。整數由一個或多個“0”到“9”組成。實數可以是一個整數,也可以是0,或小數。實數和整數在前面加一個“+” 或“-”表示正負。
            ?
            二、Times
            ????時間標識由一個非負的實數和時間單位標識符組成。時間的單位標識符有:
            ??????·ms:毫秒
            ??????·s:秒
            ????例如:“3s”,“850ms”,“0.7s”,“.5s”或“+1.5s”。
            posted on 2006-09-16 22:56 鐵觀音 閱讀(818) 評論(0)  編輯 收藏 引用 所屬分類: VoiceXML2.0規范
            无码人妻少妇久久中文字幕蜜桃| 丁香五月网久久综合| 亚洲国产精品成人AV无码久久综合影院| 女人香蕉久久**毛片精品| 久久精品国产清自在天天线| 久久久无码精品亚洲日韩京东传媒| 亚洲中文久久精品无码| 久久久久久久99精品免费观看| 久久精品国产亚洲一区二区三区| 久久人人爽人人爽人人片AV东京热| 久久久精品免费国产四虎| 亚洲午夜久久久| 久久综合久久综合九色| 久久久久久伊人高潮影院| 国产精品伊人久久伊人电影| 久久亚洲精精品中文字幕| 亚洲国产高清精品线久久| 91精品国产高清久久久久久91| 亚洲国产欧洲综合997久久| 久久se精品一区二区影院| 久久天堂电影网| 久久婷婷五月综合国产尤物app| 久久人人爽人人爽人人片AV麻豆| 久久99国产精一区二区三区 | 国产69精品久久久久APP下载| 狠狠色丁香久久婷婷综合五月| 伊人久久大香线蕉无码麻豆| 国内精品久久久久影院网站| 久久不见久久见免费视频7| 无码人妻久久久一区二区三区 | 精品一久久香蕉国产线看播放| 精产国品久久一二三产区区别| 无码任你躁久久久久久| 久久久久国产精品嫩草影院| 久久播电影网| 日韩精品无码久久一区二区三| 国产一区二区精品久久凹凸| 国产精品无码久久四虎| 久久精品中文字幕第23页| 7国产欧美日韩综合天堂中文久久久久 | 青青热久久综合网伊人|