<?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="alphanum" summary="Collect an alphanum value"
    path="META-INF/tags/rdc/alphanum.tag">

    <input-params>
      <param name="id" value="some-name" required="true" rtexprvalue="false" visible="1" description="Component ID">
        This specifies the id of this alphanum component.
      </param>
      <param name="submit" value="self-URI" required="false" rtexprvalue="true" visible="0" description="Location where resuls are submitted">
        This specifies the URL to which the component should submit its results.
        The default is to submit to the originating page that instantiated the component.
      </param>
      <param name="config" value="xxx-cfg.xml" required="false" rtexprvalue="true" visible="1" description="Configuration file for the component">
        This specifies the location of the configuration file used to customize interaction behavior of this instance. 
        Customizations include prompts, properties etc (see configuration section for details).
        By default, the component uses a pre-packaged configuration.
      </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 alphanum values requested.
        Default is 1 value.
      </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.
        Default is 40.0F.
      </param>
      <param name="echo" value="true/false" required="false" rtexprvalue="true" visible="1" description="Playback options">
        Specifies if the component produces a concluding utterance that echoes the value that was collected.
        Value is false by default.
      </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="[a-z0-9]*" required="false" rtexprvalue="true" visible="2" description="Default value of alphanum">
        This specifies the initial default value of alphanum. If a user says initial or default, this value 
        is selected. Value must conform to the the contraints minLength, maxLength and pattern. A non-conforming
        value for initial is equivalent to no initial value for the component.
        If not specified, the user will not be able to select a default value.
      </param>
      <param name="confirm" value="true/false" required="false" rtexprvalue="true" visible="1" description="Confirmation option">
        If confirm is true, the component asks the user to confirm the specified alphanum with an appropriate yes/no dialog.
        Value is false by default.
      </param>
      <param name="minLength" value="[0-9]*" required="false" rtexprvalue="true" visible="1" description="Minimum acceptable length">
        The minimum length constraint. Any alphanum value of length smaller than this will be treated as invalid
        and will be rejected.
        If not specified, there is no minimum length constraint on the alphanum value.
      </param>
      <param name="maxLength" value="[0-9]*" required="false" rtexprvalue="true" visible="1" description="Maximum acceptable length">
        The maximum length constraint. Any alphanum value of length greater than this will be treated as invalid
        and will be rejected.
        If not specified, there is no maximum length constraint on the alphanum value.
      </param>
      <param name="pattern" value="regular-expression" required="false" rtexprvalue="true" visible="1" description="Pattern of acceptable values">
        The pattern constraint. Any alphanum value which does not conform to this will be treated as invalid
        and will be rejected. The regular expression can constitute of a-z and 0-9. 
        The default pattern is [a-z0-9]*.
      </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="Variable that holds the alphanum specified by the user">
        Variable that holds the alphanum value specified by the user.
        Thus, if the component is invoked with an id value of "start", then variable $start holds the value collected by the component.
      </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 an alphanumeric value.</prompt>
      </prompt-list>
      <help-list>
        <help>
          <prompt>You need to specify an alphanumeric value like L W 1 4 8.</prompt>
        </help>
      </help-list>
      <noinput-list>
        <noinput count="1">
          <prompt>I did not hear you speak the alphanumeric value.</prompt>
        </noinput>
        <noinput count="2">
          <prompt>Could you please repeat the value?</prompt>
        </noinput>
        <noinput count="3">
          <prompt>I appear to be having trouble hearing you. 
            Waiting for you to speak the value. </prompt>
        </noinput>
      </noinput-list>
      <nomatch-list>
        <nomatch>
          <prompt>I am sorry. I didn't understand you. Please repeat the 
            input.</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 value, say yes. To change your mind, say no.</prompt>
        </help>
      </help-list>
      <noinput-list>
        <noinput>
          <prompt>Is #{model.utterance} an acceptable value? 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 value you specified, #{model.utterance}, is not valid. </prompt>
      </handler>
      <handler errorCode="2">
        <prompt>That's an invalid value. Please specify a shorter string. </prompt>
      </handler>
      <handler errorCode="3">
        <prompt>That's an invalid value. Please specify a longer string. </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>
