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

    <input-params>
      <param name="id" value="some-name" required="true" rtexprvalue="false" visible="1" description="Component ID">
        This specifies the id of this alpha 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 alpha 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-zA-Z ']*" required="false" rtexprvalue="true" visible="2" description="Default value of alpha">
        This specifies the initial default value of alpha. 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 alpha 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 alpha 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 alpha value.
      </param>
      <param name="maxLength" value="[0-9]*" required="false" rtexprvalue="true" visible="1" description="Maximum acceptable length">
        The maximum length constraint. Any alpha 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 alpha value.
      </param>
      <param name="pattern" value="regular-expression" required="false" rtexprvalue="true" visible="1" description="Pattern of acceptable values">
        The pattern constraint. Any alpha value which does not conform to this will be treated as invalid
        and will be rejected. The regular expression can constitute of a-z, A-Z, ' ' (space) and ' (apostrophe). 
        The default pattern is [a-zA-Z ']*.
      </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 alpha specified by the user">
        Variable that holds the alpha 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 spell the input value.</prompt>
      </prompt-list>
      <help-list>
        <help>
          <prompt> You need to spell the input. For Mike, say M I K E.</prompt>
        </help>
      </help-list>
      <noinput-list>
        <noinput count="1">
          <prompt>I did not hear you spell the input.</prompt>
        </noinput>
        <noinput count="2">
          <prompt>Could you please repeat the input?</prompt>
        </noinput>
        <noinput count="3">
          <prompt>I appear to be having trouble hearing you. 
            Waiting for you to spell the input. </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>
