<listen ...> element


The listen element is used for speech recognition, for audio recording, or for both.

A listen element which is used for speech recognition contains one or more grammar elements, which are used to specify possible user inputs. A listen element which is used for audio recording contains a record element which is used to configure the recording process. A listen element used for simultaneous recognition and recording holds one or more grammar elements and a record element. In all cases, bind can be used to process the results obtained from recognition and/or recording.


Attributes

Name Data type Default
accesskey
CDATA
implied
babbleTimeOut
milliseconds
implied
endSilience
milliseconds
implied

id

ID
implied
initialTimeOut
milliseconds
implied

maxTimeOut

milliseconds
implied
mode
listen.mode
"automatic"
onError
script.statement
implied
onNoReco
script.statement
implied
onReco
script.statement
implied
onSilence
script.statement
implied
onSpeechDetected
script.statement
implied
reject
confidence.value
implied
style
CDATA
"visibility: hidden"
xml:lang
CDATA
implied

Children

Parents

Properties

     Properties used when <record ...> element tag is used:

Methods

Examples

<html xmlns:salt="http://www.saltforum.org/2002/SALT">
...
    <input type="button" value="Talk to me" onClick="listenCity.Start()" />
    <input name="txtBoxOrigin" type="text" />
    <input name="txtBoxDest" type="text" />
...
    <salt:listen id="listenCity" onreco="processCityRecognition()">
        <salt:grammar src="/grammars/cities.grxml" />
    </salt:listen>


    <script><![CDATA[
        function processCityRecognition () {
            smlResult = event.srcElement.recoresult;
            origNode = smlResult.selectSingleNode("//origin_city/text()");
            if (origNode != null) txtBoxOrigin.value = origNode.value;
            destNode = smlResult.selectSingleNode("//dest_city/text()");
            if (destNode != null) txtBoxDest.value = destNode.value;
        }
    ]]></script>

</html>

 

<!-- HTML -->
<html xmlns:salt="http://www.saltforum.org/2002/SALT">
    <body onload="RunAsk()">
        <form id="travelForm">
            <input name="txtBoxOriginCity" type="text" />
            <input name="txtBoxDestCity" type="text" />
        </form>
        
         <!-- Speech Application Language Tags -->
        <salt:prompt id="askOriginCity">
            Where would you like to leave from?
         </salt:prompt>
        <salt:prompt id="askDestCity">
            Where would you like to go to?
         </salt:prompt>
        <salt:prompt id="sayDidntUnderstand" oncomplete="runAsk()">
            Sorry, I didn't understand.
        </salt:prompt>

        <salt:listen id="recoOriginCity"
                 onReco="procOriginCity()"
                 onNoReco="sayDidntUnderstand.Start()">
            <salt:grammar src="city.xml" />
        </salt:listen>
        <salt:listen id="recoDestCity"
                 onReco="procDestCity()"
                 onNoReco="sayDidntUnderstand.Start()">
            <salt:grammar src="city.xml" />
        </salt:listen>


         <!-- scripted dialog flow -->
        <script>
            function RunAsk() {
                if (travelForm.txtBoxOriginCity.value=="") {
                    askOriginCity.Start();
                    recoOriginCity.Start();
                } else if (travelForm.txtBoxDestCity.value=="") {
                    askDestCity.Start();
                    recoDestCity.Start();
                }
            }
            function procOriginCity() {
                travelForm.txtBoxOriginCity.value = recoOriginCity.text;
                RunAsk();
            }
            function procDestCity() {
                travelForm.txtBoxDestCity.value = recoDestCity.text;
                travelForm.submit();
            }
        </script>
    </body>
</html>

 

<html xmlns:salt="http://www.saltforum.org/2002/SALT">
    <head>
        <title>origin and destination</title>
    </head>

    <body>
        <form id="travelForm" action="http://mysite.com/travel/inquire.php"
                 method="post">
            <input name="txtBoxOriginCity" type="text" />
            <input name="txtBoxDestCity" type="text" />
        </form>

        <!-- SALT -->
        <salt:prompt id="askOriginCity" onerror="procError()">
            Where from?
        </salt:prompt>
        <salt:prompt id="askDestCity" onerror="procError()">
            Where to?
        </salt:prompt>
        <salt:prompt id="notUnderstood" onerror="procError()">
            Sorry, I could not understand your input.
        </salt:prompt>
        <salt:prompt id="operator"
                 oncomplete="transferToOperator()"
                 onerror="transferToOperator()">
                <!-- external function -->
            I am transferring you to an operator.
        </salt:prompt>

         <salt:listen id="recoOriginCity"
                 onReco="procOriginCity()"
                onNoReco="procNothingUnderstood()"
                onSilence="procNothingUnderstood()"
                onError="procError()">
            <salt:grammar src="./city.grxml" />
        </salt:listen>
        <salt:listen id="recoDestCity"
                onReco="procDestCity()"
                onNoReco="procNothingUnderstood()"
                onSilence="procNothingUnderstood()"
                onError="procError()">
            <salt:grammar src="./city.grxml" />
        </salt:listen>


         <!-- scripts -->
        <script>
            function RunAsk() {
                if (txtboxOriginCity.value=="") {
                    askOriginCity.Start();
                    recoOriginCity.Start();
                } else if (txtboxDestCity.value=="") {
                    askDestCity.Start();
                    recoDestCity.Start();
                } else {
                    <!-- all slots filled -->
                    travelForm.submit();
                 }
            }
            function procOriginCity () {
                txtBoxOriginCity.value = recoOriginCity.value;
                RunAsk();
            }
            function procDestCity () {
                txtBoxDestCity.value = recoDestCity.value;
                RunAsk();
            }
            function procNothingUnderstood(){
                notUnderstood.Start();
                RunAsk();
            }
            function procError() {
                operator.Start();
            }
            function terminate() {
                <!-- caller hung up -->
                window.close();
            }
        </script>

         <!-- on page load -->
        <script>
        <!-- detect disconnect at a central place instead of
                placing disconnect detect handlers in the listen objects -->
            callControl.attachEvent("call.disconnected",terminate());
            <!-- start dialog execution -->
            RunAsk();
        </script>
    </body>
</html>

 

Extra info

For details on usage of this element, see the SALT Specification, Version 1.0.