Question

J'utilise VXML propulsée par un moteur similaire à TellMe. J'ajouter la reconnaissance vocale aux invites téléphoniques pour un système de messagerie vocale. Le nouveau menu d'abord demander à l'utilisateur pour l'entrée verbale, et si aucune correspondance n'a été trouvée, ou si aucune entrée est donnée, l'utilisateur est invité à nouveau avec des options de tonalité tactile.

Les menus originaux ressemblent à ceci:

<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>

Les nouveaux looks de menu comme ceci:

<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>

Cependant, je veux utiliser le <enumerate> et le comportement de <choice> dans le menu d'origine à reprompt au lieu du long texte (ce qui est trop long et provoque une erreur).

VOICI LA QUESTION: est-il un moyen d'utiliser le premier style de l'invite dans le second style de prompt? puis-je mettre et à l'intérieur d'un champ? et comment pourrais-je faire?

Était-ce utile?

La solution

L'élément de choix est spécifique au menu. Alors que peut utiliser un énumèrent dans le Invites général, la façon dont il est utilisé dans le premier exemple, il est nouant les invites à l'entrée autorisée. Pour un champ, vous obtenez les entrées disponibles à partir d'une grammaire définie.

Sur ce dernier point, votre extrait ne mentionne pas la grammaire ni le champ indique un type. Est-ce la grammaire définie à un niveau supérieur dans le document VoiceXML ou construit dans la grammaire? Dans le cas contraire, cela peut être la source de votre erreur.

Vous pouvez utiliser la reconnaissance vocale avec des menus et des choix, mais la façon dont les sélections sont définies par l'énumération:

Ceci est un exemple modifié de la spécification 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 vous mettez les invites dans un tableau ECMAScript, vous pouvez probablement utiliser l'énumération aussi bien.

En général, je recommande l'approche sur le terrain. Vous gagnez beaucoup plus de flexibilité pour fournir des invites riches et la gestion des erreurs. Menu / choix est un mécanisme de raccourci qui est destiné à simple cas limités.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top