<?xml version="1.0" encoding="utf-8"?>
<ui-config>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<component name="ssn" summary="Collect an international standard book number input from the user"
           path="META-INF/tags/rdc/isbn.tag">

	<input-params>
	<param name="id" value="some-name" required="true" rtexprvalue="false" visible="1" description="Component ID">
			This specifies the id of this isbn component. 
	</param>
	<param name="pattern" value="a-regular-expression" required="false" rtexprvalue="true" visible="1" description="A regular expression representing the
		set of valid international standard book numbers">
		This pattern specifies the regular expression used to validate the input received by the RDC. The default or 
		initial value is also validated using this pattern.
	</param>
	<param name="config" value="xxx-cfg.xml" required="false" rtexprvalue="true" visible="1" description="Configuration file for the component">
		This specifies a configuration file for customizing configuration for the isbn component. 
		Default configuration exists in the component.
	</param>
	<param name="echo" value="true/false" required="false" rtexprvalue="true" visible="1" description="Playback options">
		If echo is true, the value is played back to the user, else
		it is not. Default is no echo.
	</param>
	<param name="confirm" value="true/false" required="false" rtexprvalue="true" visible="1" description="Confirmation option">
		If confirm is true, it asks a user for confirmation of the 
		value, else it does not. Default is no confirmation.
	</param>
	<param name="locale" value="[language](-[country])?" required="false" rtexprvalue="true" visible="2" description="RDC Locale">
        The Locale to which the grammar(s) and default configuration chosen for this component will belong to.
        Default is en-US.
    </param>
	<param name="maxNoInput" value="[0-9]*" required="false" rtexprvalue="true" visible="2" description="Graceful exit on noinput">
        Maximum number of client side &lt;noinput&gt; events before this RDC gracefully exits with MAX_NOINPUT exitStatus.
        Never exit by default.
    </param>
    <param name="maxNoMatch" value="[0-9]*" required="false" rtexprvalue="true" visible="2" description="Graceful exit on nomatch">
        Maximum number of client side &lt;nomatch&gt; events before this RDC gracefully exits with MAX_NOMATCH exitStatus.
        Never exit by default.
    </param>
    <param name="initial" value="xxxxxxxxxxx" required="false" rtexprvalue="true" visible="2" description="Default ISBN value">
      This specifies the initial default value of ISBN number. If a user says initial or default, this value 
      is selected. Value has to be a valid ISBN.
      If not specified, the user will not be able to select a default value.
    </param>
	<param name="numNBest" value="[0-9]*" required="false" rtexprvalue="true" visible="2" description="Maximum number of N-best values requested">
		This specifies the maximum number of N-Best isbn values requested.
	</param>
	<param name="minConfidence" value="[0-9][0-9].[0-9]*F" required="false" rtexprvalue="true" visible="2" description="Minimum confidence value of the recognised output">
		This specifies the minimum confidence score of a utterance for it to be 
		considered in the NBest list. 
	</param>
    <param name="submit" value="submit-uri" required="false" rtexprvalue="true" visible="0" description="URI of the jsp page">
        This specifies the URI where the component should submit the values.
    </param>
    <param name="subdialog" value="true/false" required="false" rtexprvalue="true" visible="1" description="Subdialog option">
        If subdialog is true, the RDC value will be returned to the calling dialog using
        the VoiceXML return statement. Default value is false.
        The value of the RDC must be serialized according to a standard public contract so 
        meaningful deserialization can take place in the host dialog (or caller).
    </param>
    </input-params>

    <output-params>
	<param name="id of this component" description="The international standard book number specified by the user">
		The international standard book number specified by the user.
	</param>
    </output-params>
</component>

<config>
  <input>
    <property-list>
      <property name="incompletetimeout"  value="1s"/>
      <property name="completetimeout"  value="1s"/>
    </property-list>
    <prompt-list>
      <prompt>Please specify the 10 digit international standard book number.</prompt>
    </prompt-list>
    <help-list>
      <help>
        <prompt>You need to specify the 10 digit I S B N like 
              1 8 5 8 6 8 8 6 8 X </prompt>
      </help>
    </help-list>
    <noinput-list>
      <noinput count="1">
        <prompt>I did not hear you speak the international standard book number</prompt>
      </noinput>
      <noinput count="2">
        <prompt>Could you please repeat the number?</prompt>
      </noinput>
      <noinput count="3">
        <prompt>I appear to be having trouble hearing you. 
          Waiting for you to speak the international standard book number. </prompt>
      </noinput>
    </noinput-list>
    <nomatch-list>
      <nomatch>
        <prompt>I am sorry. I didn't understand you. Please repeat the 
          book number.</prompt>
      </nomatch>
    </nomatch-list>
  </input>
  <confirm>
    <property-list>
      <property name="incompletetimeout" value="1s"/>
      <property name="completetimeout" value="1s"/>
    </property-list>
    <prompt-list>
        <prompt>I think you said #{model.utterance}. Is that
      right? </prompt>
    </prompt-list>
    <help-list>
      <help>
        <prompt>To accept the international standard book number say yes. To change your mind, say no.</prompt>
      </help>
    </help-list>
    <noinput-list>
      <noinput>
        <prompt>Is #{model.utterance} an acceptable number? Please
          say yes or no.</prompt>
      </noinput>
    </noinput-list>
    <nomatch-list>
      <nomatch>
        <prompt>If #{model.utterance} is acceptable, say yes. Otherwise,
          say no.</prompt>
      </nomatch>
    </nomatch-list>
    <reject>
      <prompt>OK, lets try again.</prompt>
    </reject>
  </confirm>
  <validate>
    <handler errorCode="635463">
      <prompt>I'm sorry, but there is no default or initial value
       available. </prompt>
    </handler>
    <handler errorCode="1">
      <prompt>The international standard book number you specified,
       #{model.utterance}, is not valid. </prompt>
    </handler>
    <handler errorCode="2">
      <prompt>The international standard book number you specified
       is not of correct length. </prompt>
    </handler>
  </validate>
  <echo>
    <property-list>
      <property name="universals" value="all"/>
    </property-list>
    <prompt-list>
      <prompt>OK, #{model.utterance}. Got it.</prompt>
    </prompt-list>
  </echo>
</config>
</ui-config>
