Pregunta

Estoy utilizando vxml impulsado por un motor similar al Tellme. Me añadiendo reconocimiento de voz para los mensajes del teléfono para un sistema de correo de voz. El nuevo menú primero indica al usuario la información verbal, y si no se encuentra ninguna coincidencia, o si no se da ninguna entrada, el usuario se le pide de nuevo con opciones de tono de toque.

Los menús originales se ven así:

<menu id="msgedit">
        <prompt><enumerate><value expr="_prompt"/>press <value expr="_dtmf"/>.</enumerate></prompt>
        <choice dtmf="9" next="#checkurgent">To deliver your message </choice>
        <choice dtmf="7" next="#playmsg">To play your message </choice> 
        <choice dtmf="3" next="#rerecord">To discard your message and record over </choice>
        <choice dtmf="2" next="#addtomsg">To add to your message </choice>
        <choice dtmf="6" next="#testnumber">To enter a phone number where you may be reached </choice>
        <choice dtmf="1" next="#cancel">To cancel making a message </choice>
        <!-- handle no input/no match -->   
</menu>

El nuevo menú es similar al siguiente:

<form id="msgedit">
      <field name="choice">
         <prompt>
         <if count == 0">
            Please choose one of the following. 
            deliver, play back, rerecord, add to, 
            enter a callback number, or cancel.
            <else/>
            Please choose one of the following. 
            To deliver your message, press 9. 
            To play back your message, press 7. 
            To discard your message and rerecord, press 3. 
            To add to your message, press 2. 
            To enter a callback number, press 6. 
            To cancel your message, press 1.
         </if>
         </prompt>
      </field>
      <filled>
         <if cond="choice == 'deliver' || choice == '9'">
            <goto next="#checkurgent"/>
            <elseif cond="choice == 'play' || choice == '7'"/>
            <goto next="#playmsg"/>
            <elseif cond="choice == 'rerecord' || choice == '3'"/>
            <goto next="#rerecord"/>
            <elseif cond="choice == 'add' || choice == 'add to' || choice == '2'"/>
            <goto next="#addtomsg"/>
            <elseif cond="choice == 'enter callback number' || choice == 'callback number' || choice =='6'"/>
            <goto next="#testnumber"/>
            <elseif cond="choice == 'cancel' || choice =='1'"/>
            <goto next="#cancel"/>
            <else/>
            <throw event="nomatch"/>
         </if>
      </filled>
      <!-- handle no input/no match -->
   </form>

Sin embargo, quiero utilizar el <enumerate> y el comportamiento <choice> desde el menú original de Nueva solicitud en lugar del texto largo (que es demasiado largo y provoca un error).

Esta es la pregunta: ¿hay una manera de utilizar el primer estilo de pronta dentro del segundo estilo de símbolo? puedo poner y en el interior de un campo? y cómo iba a hacer eso?

¿Fue útil?

Solución

El elemento de elección es específico de menú. Si bien se puede utilizar enumerate en unas indicaciones generales, la forma en que se utiliza en el primer ejemplo, se está atando las instrucciones para la entrada permitido. Para un campo, que está recibiendo las entradas disponibles a partir de una gramática definida.

Sobre este último punto, el fragmento no menciona ni la gramática del campo indican un tipo. Se define la gramática a un nivel superior dentro del documento VoiceXML o una construida en la gramática? Si no es así, que puede ser la fuente de su error.

Puede utilizar el reconocimiento de voz con menús y opciones, pero la forma en que las selecciones se definen con la enumeración:

Este es un ejemplo modificado de la especificación VoiceXML 2.0:

<menu>
  <choice dtmf="1" next="http://www.sports.example.com/vxml/start.vxml">
    <grammar src="sports.grxml" type="application/srgs+xml"/>
    Press 1 or say Sports for sports scores
  </choice>
  <choice dtmf="2" next="http://www.weather.example.com/intro.vxml">
   <grammar src="weather.grxml" type="application/srgs+xml"/>
   Press 2 or say weather for weather
  </choice>
  <choice dtmf="3" next="http://www.stargazer.example.com/voice/astronews.vxml">
   <grammar src="astronews.grxml" type="application/srgs+xml"/>
   press 3 or say Stargazer astrophysics for ?
  </choice>
</menu>

Si coloca los mensajes en una matriz de ECMAScript, que probablemente podría utilizar la enumeración también.

En general, recomendaría el enfoque de campo. Se gana mucha más flexibilidad para proporcionar indicaciones ricos y tratamiento de errores. menú / opción es un mecanismo de acceso directo que se entiende por simple, casos limitados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top