Pregunta

Estoy utilizando un motor basado en Tellme. He visto ejemplos de gramáticas donde el usuario puede decir que una de las pocas cosas distintas que se consideran de la misma. Sin embargo, todos los ejemplos que he visto han sido por las gramáticas en línea (que no trabajan con el motor im usando vxml). Quiero saber cómo puedo cambiar mi archivo .grxml para hacer esto. Este es el archivo:

<?xml version="1.0"?>
<!-- created by Matthew Murdock. Grammars for speech rec menus -->
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar      http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0.2006">
   <rule id="keep">
      <one-of>
         <item>exit</item>
         <item>exit the system</item>
         <item>another</item>
         <item>another mailbox</item>
         <item>play</item>
         <item>play back</item>                      
      </one-of>
   </rule>
</grammar>

en lugar de tener 6 artículos, quiero tener 3 artículos, cada uno con dos posibles enunciados. ¿Alguna idea sobre cómo puedo hacer esto?

¿Fue útil?

Solución 3

lo he descubierto. He cambiado de gramática para tener este aspecto:

<?xml version="1.0"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar      http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0-literals">
   <rule id="keep">
      <one-of>
         <item><ruleref id="#exit"/></item>
         <item><ruleref id="#play"/></item>
      </one-of>
   </rule>
   <rule id="exit">
      <one-of>
         <item>exit</item>
         <item>exit the system</item>
      </one-of>
      <tag>out.result = "exit"</tag>
   </rule>
   <rule id="play">
      <one-of>
         <item>play</item>
         <item>play back</item>
      </one-of>
      <tag>out.result = "play"</tag>
   </rule>
</grammar>

A continuación, de nuevo en mi guión en lugar de basar mis acciones en callerInput (la variable especificada en la etiqueta <field>), i ellas con sede fuera de callerInput $ .La interpretación que sostiene XML que contiene todo lo que he asignado a out.result en el elemento <tag> de la gramática.

supongo que tiene sentido para basar sus acciones en la "interpretación" y no literal de entrada de la persona que llama.

NOTA:. Debido a que estamos trabajando con nuestro propio motor vxml hemos sido capaces de crear un método para extraer el valor interpretación del xml

Otros consejos

una forma más compacta:

  <rule id="exit">
    exit <item repeat="0-1">the system</item>
    <tag>out.result = "exit"</tag>
  </rule>
  <rule id="play">
    play <item repeat="0-1">back</item>
    <tag>out.result = "play"</tag>
  </rule>

Las respuestas que usted quiere están en la SISR especificación que proporciona un mecanismo para adjuntando significado a rutas de entrada. Volver a escribir el ejemplo:

<?xml version="1.0"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar      http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0-literals">
   <rule id="keep">
      <one-of>
       <item>
        <one-of>
         <item>exit</item>
         <item>exit the system</item>
        </one-of>
        <tag>exit</tag>
        </item>

       <item>
        <one-of>
         <item>another</item>
         <item>another mailbox</item>
        </one-of>
        <tag>another</tag>
       </item>

       <item>
        <one-of>
         <item>play</item>
         <item>play back</item>                      
        </one-of>
        <tag>play</tag>
       </item>
      </one-of>
   </rule>
</grammar>

Hay varias cosas que hay que saber:

  • I eligió el formato de etiqueta literal (nota el atributo de etiquetas de formato del elemento de la gramática). Podría también se han implementado utilizando "semántica / 1.0" y el contenido de la etiqueta habría parecido: OUT = "salida";
  • valores de variables de formato TELLME pueden necesitar ser diferentes, pero su guía de desarrollo implica que siguen las normas.
  • Una vez que tenga que trabajar, no dude en crear gramáticas de relleno (en SRGS hablan, reglas). reglas de relleno serían reglas sin ninguna SI (sin elementos de etiqueta) y contienen frases comunes que se añaden a las respuestas. Por ejemplo, una regla de arrastre que podría añadirse al final de su gramática:
      </one-of>
      <item repeat="0-1"><ruleref uri="#trailing"/></item>
   </rule>

   <rule id="trailing>
      <one-of>
         <item>please</item>
         <item>thank you</item>

      </one-of>
   </rule>

</grammar>

Esto apoyaría tipos más naturales de las respuestas. Esto puede o no ser importante, dependiendo de su base de llamadas. gramáticas de relleno pueden ser muy grandes, pero tienden a ser altamente reutilizables. También puede agregar relleno al principio de la entrada. En aplicaciones de voz ricos, una la ganancia más importante en el proceso de ajuste implica la actualización de la gramática para contener las frases reales pronunciadas por la persona que llama frente a lo que se iba a decir el desarrollador o diseñador de pensamiento VUI.

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