Frage

Ich bin mit vxml durch einen Motor angetrieben wird ähnlich wie TellMe. Ich Hinzufügen von Spracherkennung Telefonansagen für ein Voicemail-System. Das neue Menü wird zunächst Aufforderung die Benutzer für verbale Eingabe, und wenn keine Übereinstimmung gefunden wird, oder wenn keine Eingabe gegeben wird, wird der Benutzer aufgefordert, erneut mit Tonwahl-Optionen.

Die Original-Menüs wie folgt aussehen:

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

Die neuen Menü sieht wie folgt aus:

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

Allerdings möchte ich aus dem Original-Menü die <enumerate> und <choice> Verhalten verwenden, anstatt des langen Text reprompt (die zu lang ist und verursacht einen Fehler).

Hier ist die Frage: Gibt es eine Möglichkeit, die erste Art von Eingabeaufforderung zu verwenden, innerhalb der zweiten Art von Eingabeaufforderung? setzen und innerhalb eines Feldes kann ich? und wie würde ich das tun?

War es hilfreich?

Lösung

Die Wahl Element ist spezifisch für Menü. Während kann enumerate in einer allgemeinen Aufforderungen verwenden, wie es in dem ersten Beispiel verwendet wird, die Eingabeaufforderungen auf den zulässigen Eingang zu binden. Für ein Feld, bekommen Sie die verfügbaren Eingaben von einer definierten Grammatik.

Auf dem letzten Punkt Ihr Snippet nicht erwähnt Grammatik noch nicht angeben, das Feld einen Typen. Ist die Grammatik auf einer höheren Ebene innerhalb des Dokuments VoiceXML definiert oder ein in Grammatik gebaut? Falls nicht, dass die Quelle des Fehlers sein kann.

Sie können die Spracherkennung mit Menüs und Auswahlmöglichkeiten verwenden, aber die Art, wie die Auswahl mit der Aufzählung definiert werden:

Dies ist ein modifiziertes Beispiel von der VoiceXML 2.0-Spezifikation:

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

Wenn Sie die Eingabeaufforderungen in einen ECMAScript-Array setzen, könnten Sie wahrscheinlich die Aufzählung als auch verwendet werden.

Im Allgemeinen würde ich das Feld Ansatz empfehlen. Sie gewinnen viel mehr Flexibilität für reiche Eingabeaufforderungen und Fehlerbehandlung bietet. Menü / Wahl ist eine Abkürzung Mechanismus, der für die einfache, begrenzte Fälle gemeint ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top