Compartilhar via


Iniciar um aplicativo em primeiro plano com comandos de voz na Cortana (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Além de usar comandos de voz na Cortana para acessar recursos do sistema, você também pode usar comandos de voz por meio da Cortana para iniciar um aplicativo em primeiro plano e especificar uma ação ou um comando para serem executados dentro do aplicativo.

Observação  

Um comando de voz é uma expressão única com um propósito específico, definido em um arquivo VCD (Definição de Comando de Voz), direcionado para um aplicativo instalado por meio da Cortana.

Uma definição de comando de voz pode variar em complexidade. Ela pode oferecer suporte a tudo, desde uma única expressão restrita até uma coleção de expressões mais flexíveis e de linguagem natural, todas indicando o mesmo propósito.

Um arquivo VCD define um ou mais comandos de voz, cada um com um propósito exclusivo.

O aplicativo de destino pode ser iniciado em primeiro plano (o aplicativo recebe foco) ou ativado em segundo plano (a Cortana retém o foco, mas fornece resultados do aplicativo), dependendo da complexidade da interação. Por exemplo, comandos de voz que exigem contexto adicional ou entrada do usuário (como enviar uma mensagem para um contato específico) são realizados com mais facilidade em um aplicativo em primeiro plano, enquanto comandos básicos podem ser realizados na Cortana por meio de um aplicativo em segundo plano.

 

Demonstraremos esses recursos aqui com um aplicativo de planejamento e gerenciamento de viagens chamado Adventure Works.

Para criar uma nova viagem do Adventure Works sem a Cortana, o usuário pode iniciar o aplicativo e navegar até a página Nova viagem. Para exibir uma viagem existente, o usuário pode iniciar o aplicativo, navegar até a página Viagens futuras e selecionar a viagem.

Em vez disso, usando os comandos de voz da Cortana, o usuário pode simplesmente dizer "Adventure Works, adicione uma viagem" ou "Adicionar uma viagem no Adventure Works" para iniciar o aplicativo e navegar até a página Nova viagem. Por sua vez, dizer "Adventure Works, mostrar minha viagem para Londres" inicia o aplicativo e navega até a página de detalhes da Viagem, mostrada aqui.

Cortana iniciando aplicativo em primeiro plano

Essas são as etapas básicas para adicionar a funcionalidade de comando por voz e integrar o Cortana ao seu aplicativo usando a fala ou entrada do teclado:

  1. Crie um arquivo VCD. Este é um documento XML que define todos os comandos falados que o usuário pode dizer para iniciar ações ou invocar comandos ao ativar seu aplicativo. Confira VCD elements and attributes v1.2.
  2. Registre os conjuntos de comandos no arquivo VCD quando o aplicativo for iniciado.
  3. Manipule a ativação por comando de voz, a navegação no aplicativo e a execução do comando.

Objetivo: Para saber como ativar comandos de voz em primeiro plano.

Pré-requisitos

Se você for iniciante no desenvolvimento de aplicativos em JavaScript:

Para concluir este tutorial, veja estes tópicos para se familiarizar com as tecnologias discutidas aqui.

Diretrizes de experiência do usuário:

Confira as Diretrizes de design da Cortana para saber como integrar seu aplicativo à Cortana e as Diretrizes de design de controle por voz para obter dicas úteis para criar um aplicativo interessante e útil habilitado para controle por voz.

1. Criar um arquivo VCD

  1. No Visual Studio, clique com o botão direito do mouse no nome do projeto, selecione Add->New Item e Arquivo XML.
  2. Digite um nome para o arquivo VCD. Por exemplo: "AdventureWorksCommands.xml". Selecione Adicionar.
  3. No Gerenciador de Soluções, selecione o arquivo VCD.
  4. Na janela Propriedades, defina Ação de construção para Conteúdo e defina Copiar para diretório de saída como Copiar se mais recente.

2. Editar arquivo VCD

Para cada idioma compatível com seu aplicativo, crie um CommandSet dos comandos de voz que seu aplicativo pode manipular.

Cada Command declarado em um arquivo VCD deve incluir estas informações:

  • Um Nome de comando usado pelo aplicativo para identificar o comando de voz no tempo de execução

  • Um elemento Example que contém uma frase que descreve como um usuário pode invocar o comando. A Cortana mostra este exemplo quando o usuário diz "O que posso falar?", "Ajuda", ou quando toca em Veja mais.

  • Um elemento ListenFor que contém as palavras ou frases que o aplicativo reconhece para iniciar um comando. Cada comando precisa ter pelo menos um elemento ListenFor.

  • Um elemento Feedback que contém o texto para a Cortana exibir e falar quando o aplicativo for iniciado.

  • Um elemento Navigate com um atributo Target para indicar que o comando de voz deve iniciar o aplicativo em primeiro plano. Especifique um elemento VoiceCommandService para que o comando de voz inicie o aplicativo em segundo plano. Veja mais detalhes em [Extensibilidade da Cortana].

Consulte a referência VCD elements and attributes v1.2 para mais detalhes.

Você pode especificar várias versões de idioma para comandos usados para ativar o aplicativo e executar um comando. Você pode criar vários elementos CommandSet, cada um com atributo xml:lang diferente para permitir que o aplicativo seja usado em diferentes mercados. Por exemplo, um aplicativo para os Estados Unidos pode ter um CommandSet para Inglês e um CommandSet para Espanhol.

Cuidado  

Para ativar um aplicativo e iniciar uma ação usando um comando de voz, o aplicativo deve registrar um arquivo VCD que contém um CommandSet com um idioma que corresponde ao idioma do comando por voz que o usuário selecionou no dispositivo. Esse idioma é definido pelo usuário na tela Settings > System > Speech > Speech Language do dispositivo.

 

Este é um arquivo VCD que define um comando de voz para o aplicativo Adventure Works.

Para esse exemplo, CommandPrefix está definido como "Adventure Works", Command, identificado por Nome ("showTripToDestination"), especifica o que o usuário pode dizer e qual comentário é fornecido pela Cortana, ListenFor especifica o texto que pode ser reconhecido (com uma referência a um elemento PhraseList que restringe os destinos reconhecidos), Navigate indica que o comando de voz é manipulado ao iniciar o aplicativo em primeiro plano e Feedback especifica o que o usuário ouvirá quando a Cortana iniciar o aplicativo.

Elementos ListenFor não podem ser modificados de forma programática. Entretanto, os elementos PhraseList associados aos elementos ListenFor podem ser modificados de forma programática. Os aplicativos devem modificar o conteúdo de PhraseList no tempo de execução com base no conjunto de dados gerado conforme o usuário usa o aplicativo. Veja Como modificar dinamicamente listas de frases VCD.

<?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 os comandos VCD

O aplicativo deve ser executado para instalar os conjuntos de comando no VCD.

Quando o aplicativo é ativado, chame InstallCommandSetsFromStorageFileAsync durante Launch para registrar os comandos que o sistema deve ouvir.

Observação  Se for feito um backup do dispositivo e seu aplicativo for reinstalado automaticamente, os dados de comando de voz não serão preservados. Para garantir que os dados de comando por voz para o seu aplicativo permaneçam intactos, considere inicializar o arquivo VCD toda vez que o aplicativo inicializar ou ativar ou armazene uma configuração que indique se o VCD está atualmente instalado e verifique cada vez que o aplicativo for inicializado ou ativado.

 

Aqui está um exemplo que mostra como instalar os comandos especificados por um arquivo VCD (vcd.xml).

N/A

4. Manipulação de ativação e execução de comandos por voz

Após a inicialização do aplicativo e instalação dos conjuntos de comandos de voz, especifique como o aplicativo responde a ativações por comando de voz subsequentes. Por exemplo, o aplicativo pode navegar para uma página específica de conteúdo, exibir um mapa ou outro utilitário de navegação ou falar uma confirmação ou status.

Você precisa:

  1. Confirmar que o aplicativo foi ativado por comando por voz.

    No caso de evento onactivated, verifique se activationKind é voiceCommand.

  2. Determine o nome do comando e o que foi falado.

    Obtenha uma referência a um objeto VoiceCommandActivatedEventArgs de IActivatedEventArgs e consulte a propriedade result de um objeto speechRecognitionResult.

    Para determinar o que o usuário disse, verifique o valor de text ou das propriedades semânticas da frase reconhecida no dicionário speechRecognitionSemanticInterpretation.

  3. Execute a ação apropriada no aplicativo, normalmente navegando até a página relevante.

Para este exemplo, fazemos referência ao VCD na Etapa 3: Edit the VCD file.

Ao termos o resultado do reconhecimento por voz para o comando por voz, temos o nome do comando do primeiro valor na matriz rulePath. Como o arquivo VCD definiu mais de um comando de voz possível, precisamos comparar o valor em relação os nomes dos comando no VCD e executar a ação apropriada.

A ação mais comum do aplicativo é navegar até uma página com conteúdo relevante ao contexto do comando de voz. Neste exemplo, navegamos para uma página TripPage e transmitimos o valor do comando de voz, como o comando foi inserido e a frase "destino" reconhecida (se aplicável). Como opção, o aplicativo pode enviar um parâmetro de navegação para speechRecognitionResult ao navegar até a página.

Você pode descobrir se o comando de voz inicializado pelo aplicativo foi realmente falado ou digitado como texto, a partir do dicionário speechRecognitionSemanticInterpretation.properties usando a chave commandMode. O valor dessa chave será "voz" ou "texto". Se o valor da chave for "voz", considere o uso de sintetização de voz (Windows.Media.SpeechSynthesis) para dar feedback falado ao usuário.

Use speechRecognitionSemanticInterpretation.properties para descobrir o conteúdo falado nas restrições de PhraseList ou PhraseTopic de um elemento ListenFor. A chave do dicionário é o valor do atributo Label do elemento PhraseList ou PhraseTopic. Veja aqui como acessar o valor da frase {destination}.

N/A

Resumo e próximas etapas

Você aprendeu como implementar comandos de voz básicos usando arquivos de VCD a serem iniciado em primeiro plano na Cortana.

Em seguida, saiba como implementar comandos de voz que exibem os resultados na tela da Cortana. Veja Iniciar um aplicativo em segundo plano com comando de voz na Cortana (HTML).

Ou saiba Como modificar dinamicamente listas de frases VCD. Isso pode ser útil quando a ação do comando de voz envolve dados transitórios gerados conforme seu aplicativo é usado.

Tópicos relacionados

Interações da Cortana

Como definir restrições de reconhecimento personalizadas

VCD elements and attributes v1.2

Designers

Diretrizes para design da Cortana