Iniciar una aplicación en primer plano con los comandos de voz en Cortana (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Además de usar los comandos de voz en Cortana para acceder a las funciones del sistema, también puedes usar los comandos de voz a través de Cortana para iniciar una aplicación en primer plano y especificar una acción o un comando para que se ejecute dentro de la aplicación.

Nota  

Un comando de voz es una expresión única con una determinada propósito, definida en un archivo de definición de comando de voz (VCD), dirigida a una aplicación instalada mediante Cortana.

Una definición de comando de voz puede variar en complejidad. Puede admitir desde una expresión única y restringida a una colección de expresiones más flexibles y de lenguaje natural, que denotan el mismo propósito.

Un archivo VCD define uno o más comandos de voz, cada uno con un único propósito.

Se puede iniciar la aplicación de destino en primer plano (la aplicación toma el foco) o activarla en segundo plano (Cortana conserva el foco, pero proporciona los resultados de la aplicación), según el nivel y la complejidad de la interacción. Por ejemplo, los comandos de voz que requieren contexto o entrada de usuario adicionales (por ejemplo, enviar un mensaje a un determinado contacto) se administran mejor en una aplicación en primer plano, mientras que los comandos básicos pueden controlarse en Cortana a través de una aplicación en segundo plano.

 

Aquí, se muestran estas funciones con una aplicación de administración y planificación de viajes llamada Adventure Works.

Para crear un nuevo viaje de Adventure Works sin Cortana, un usuario debe iniciar la aplicación y navegar a la página Nuevo viaje. Para ver un viaje existente, un usuario debe iniciar la aplicación, navegar a la página Viajes próximos y, después, seleccionar el viaje.

Con los comandos de voz y Cortana, el usuario puede simplemente decir: "Adventure Works agrega un viaje" o "Agregar un viaje en Adventure Works" para iniciar la aplicación y navegar a la página Nuevo viaje. A su vez, al indicar "Adventure Works, muestra mi viaje a Londres", se iniciará la aplicación y navegarás a la página Viajes próximos.

Inicio de una aplicación en primer plano con Cortana

A continuación detallamos los pasos básicos para agregar funciones de comandos de voz e integrar Cortana en tu aplicación mediante entradas de voz o de teclado:

  1. Crea un archivo VCD. Se trata de un documento XML en el que se definen todos los comandos de voz que el usuario puede decir para iniciar acciones o invocar comandos al activar la aplicación. Consulta VCD elements and attributes v1.2.
  2. Registra los conjuntos de comandos en el archivo VCD cuando se inicia la aplicación.
  3. Administra el comando de activación por voz, la navegación dentro de la aplicación y la ejecución del comando.

Objetivo: Aprender cómo habilitar los comandos de voz en primer plano.

Requisitos previos

Si no estás familiarizado con el desarrollo de aplicaciones con JavaScript:

Para completar este tutorial, ojea los siguientes temas para familiarizarte con las tecnologías tratadas aquí.

Directrices sobre la experiencia del usuario:

Consulta Directrices de diseño de Cortana para obtener información sobre cómo integrar tu aplicación con Cortana y Directrices de diseño de voz para obtener sugerencias prácticas sobre el diseño de una aplicación habilitada para voz que sea útil y atractiva.

1. Crear un archivo VCD

  1. En Visual Studio, haz clic con el botón secundario en el nombre del proyecto, selecciona Add->New Item y, después, Archivo XML.
  2. Escribe un nombre para el archivo VCD. Por ejemplo, "AdventureWorksCommands.xml". Selecciona Agregar.
  3. En el Explorador de soluciones, selecciona el archivo VCD.
  4. En la ventana Propiedades, establece Acción de compilación en Contenido y luego establece Copiar en el directorio de salida en Copiar si es posterior.

2. Modificar el archivo VCD

Para cada idioma compatible con la aplicación, crea un CommandSet de comandos de voz que la aplicación pueda controlar.

Cada Command declarado en un archivo VCD debe incluir esta información:

  • Un nombre de comando que la aplicación use para identificar el comando de voz en tiempo de ejecución

  • Un elemento Example que contenga una frase que describa cómo puede invocar el comando un usuario. Cortana muestra este ejemplo cuando el usuario dice "¿Qué puedo decir?", "Ayuda", o pulsa Ver más.

  • Un elemento ListenFor que contiene las palabras o frases que la aplicación reconoce para iniciar un comando. Cada comando debe tener al menos un elemento ListenFor.

  • Un elemento Feedback que contiene el texto que Cortana muestra y dice cuando se inicia la aplicación.

  • Un elemento Navigate con un atributo Target para indicar que el comando de voz debe iniciar la aplicación en primer plano. Especifica un elemento VoiceCommandService si el comando de voz inicia la aplicación en segundo plano en su lugar. Para obtener más información, consulta [Extensibilidad de Cortana].

Consulta la documentación sobre VCD elements and attributes v1.2 para obtener más detalles.

Puedes especificar versiones en varios idiomas de los comandos usados para activar la aplicación y ejecutar un comando. Puedes crear varios elementos CommandSet, cada uno de ellos con un atributo xml:lang diferente, para poder usar la aplicación en diferentes mercados. Por ejemplo, una aplicación para los Estados Unidos puede tener un CommandSet para inglés y otro CommandSet para español.

Precaución  

Para activar una aplicación e iniciar una acción mediante un comando de voz, la aplicación debe registrar un archivo VCD que contenga un CommandSet con un idioma que coincida con el idioma de la voz que el usuario seleccionó en su dispositivo. El usuario establece este idioma en la pantalla Settings > System > Speech > Speech Language del dispositivo.

 

Este es un archivo VCD que define un comando de voz para la aplicación Adventure Works.

Para este ejemplo, CommandPrefix se establece en "Adventure Works", Command, identificado por Nombre ("showTripToDestination"), especifica lo que el usuario puede decir y los comentarios que proporciona Cortana, ListenFor especifica el texto que se puede reconocer (con una referencia a un elemento PhraseList que limita los destinos reconocidos), Navigate indica que el comando de voz se controla por el inicio de la aplicación en primer plano y Feedback especifica lo que el usuario escuchará cuando Cortana inicie la aplicación

Los elementos ListenFor no se pueden modificar mediante programación. Sin embargo, los elementos PhraseList que estén asociados a elementos ListenFor se pueden modificar mediante programación. Las aplicaciones deben modificar el contenido del elemento PhraseList en tiempo de ejecución, según el conjunto de datos que se genera cuando el usuario usa la aplicación. Consulta el artículo sobre el procedimiento para modificar listas de frases de VCD de forma dinámica.

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="https://schemas.microsoft.com/voicecommands/1.1">
  <CommandSet xml:lang="en-us" Name="AdventureWorksCommandSet_en-us">
    <CommandPrefix> Adventure Works, </CommandPrefix>
    <Example> Show trip London </Example>

    <Command Name="showTripToDestination">
      <Example> show trip to London  </Example>
      <ListenFor> show trip to {destination} </ListenFor>
      <Feedback> Showing trip to {destination} </Feedback>
      <Navigate/>
    </Command>

    <PhraseList Label="destination">
      <Item> London </Item>
      <Item> Dallas </Item>
      <Item> New York </Item>
    </PhraseList>

    <PhraseTopic Label="newDestination" Scenario="Search">
      <Subject>City/State</Subject>
    </PhraseTopic>
  </CommandSet>

<!-- Other CommandSets for other languages -->

</VoiceCommands>

3. Instalar los comandos de VCD

Tienes que ejecutar tu aplicación una vez para instalar los conjuntos de comandos del archivo VCD.

Cuando la aplicación esté activa, llama a InstallCommandSetsFromStorageFileAsync durante el Launch para registrar los comandos que el sistema debe esperar que se digan.

Nota  Si se realiza una copia de seguridad del dispositivo y la aplicación se vuelve a instalar automáticamente, no se conservarán datos de comandos de voz. Para asegurarte de que los datos de los comandos de voz de la aplicación no cambien, considera la opción de inicializar el archivo VCD cada vez que se inicia o se activa la aplicación, o almacena una configuración que indique si el VCD está actualmente instalado y comprueba la configuración cada vez que se inicia o se activa la aplicación.

 

A continuación verás un ejemplo en el que se muestra cómo instalar los comandos especificados en un archivo VCD (vcd.xml).

N/A

4. Administrar la activación y ejecutar los comandos de voz

Una vez iniciada la aplicación e instalados los conjuntos de comandos de voz, especifica cómo responde la aplicación a activaciones posteriores mediante comandos de voz. Por ejemplo, puede que la aplicación vaya a una página de contenido concreta, que muestre un mapa u otra utilidad de navegación, o que reproduzca una confirmación o un estado.

Tiene que:

  1. Comprobar que la aplicación se haya activado mediante un comando de voz.

    En el evento onactivated, comprueba si activationKind es voiceCommand.

  2. Determinar el nombre del comando y qué se ha dicho.

    Obtén una referencia a un objeto VoiceCommandActivatedEventArgs desde IActivatedEventArgs y consulta la propiedad result de un objeto speechRecognitionResult.

    Para determinar lo que dijo el usuario, comprueba el valor de text o las propiedades semánticas de la frase reconocida en el diccionario speechRecognitionSemanticInterpretation.

  3. Realiza la acción apropiada en la aplicación, normalmente navegar a la página correspondiente.

Para este ejemplo, nos referiremos al VCD del paso 3 anterior: Edit the VCD file.

Cuando se reciba el resultado de reconocimiento de voz para el comando de voz, se obtiene el nombre del comando a partir del primer valor de la matriz rulePath. Como el archivo VCD definió más de un comando de voz posibles, es necesario comparar el valor con los nombres de comandos en la VCD y realizar la acción apropiada.

La acción más común que una aplicación puede realizar es navegar a una página con contenido relevante para el contexto del comando de voz. En este ejemplo, se navegará a una página TripPage y se pasará el valor del comando de voz, cómo ha sido la entrada del comando y la frase de "destination" reconocida (si procede). Como alternativa, la aplicación podría enviar un parámetro de navegación a speechRecognitionResult al navegar a la página.

Puedes saber si el comando de voz que inició la aplicación se ha dicho realmente o se ha escrito como texto en el diccionario speechRecognitionSemanticInterpretation.properties mediante la clave commandMode. El valor de dicha clave puede ser "voice" o "text". Si el valor de la clave es "voice", considere usar síntesis de voz (Windows.Media.SpeechSynthesis) para ofrecer al usuario comentarios hablados.

Usa el elemento speechRecognitionSemanticInterpretation.properties para averiguar el contenido hablado en las restricciones PhraseList o PhraseTopic de un elemento ListenFor. La clave del diccionario es el valor del atributo Label de los elementos PhraseList o PhraseTopic. Aquí te mostramos cómo tener acceso al valor de la frase {destination}.

N/A

Resumen y siguientes pasos

Aquí, has aprendido a implementar los comandos de voz básicos con archivos VCD que se iniciarán en primer plano desde Cortana.

A continuación, aprende cómo implementar los comandos de voz que muestran los resultados en el lienzo de Cortana. Consulta Iniciar una aplicación en segundo plano con los comandos de voz en Cortana (HTML).

O consulta el Procedimiento para modificar listas de frases de VCD de forma dinámica. Esto puede ser útil si la acción del comando de voz implica datos transitorios que se generan cuando se usa la aplicación.

Temas relacionados

Interacciones de Cortana

Cómo definir restricciones de reconocimiento personalizadas

VCD elements and attributes v1.2

Diseñadores

Directrices para el diseño de Cortana