Compartilhar via


Como modificar dinamicamente listas de frases (HTML) de Definição de Comando de Voz (VCD)

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

Saiba como acessar e atualizar a lista de frases com suporte (elementos PhraseList) em um arquivo VCD usando o resultado do reconhecimento de fala em tempo de execução.

Modificar dinamicamente uma lista de frases em tempo de execução pode ser útil se o comando de voz for específico para uma tarefa que envolve algum tipo de favoritos definidos pelo usuário ou dados do aplicativo transitórios.

Por exemplo, digamos que você tenha um aplicativo de viagem onde os usuários podem inserir destinos. Você deseja que os usuários possam iniciar o aplicativo dizendo o nome do aplicativo seguido por "Mostrar viagem para <destino>". Não é necessário criar um elemento ListenFor separado para cada destino possível. Em vez disso, você pode preencher a PhraseList no tempo de execução dinamicamente com os destinos criados pelo usuário. No próprio elemento ListenFor, você pode especificar algo como: <ListenFor> Show trip to {destination} </ListenFor>, onde "destination" é o valor do atributo Label de PhraseList.

Consulte a referência VCD elements and attributes v1.2 para saber mais sobre PhraseList e outros elementos de VCD.

Pré-requisitos

Este tópico complementa o Guia de início rápido: comandos de voz com a Cortana. Continuaremos demonstrando recursos com um aplicativo de planejamento e gerenciamento de viagens chamado Adventure Works.

Para concluir este tutorial, dê uma olhada nestes tópicos para se familiarizar com as tecnologias discutidas aqui.

Instruções

Etapa 1: Identificar o comando

Para atualizar um elemento PhraseList no arquivo VCD, obtenha o elemento CommandSet que contém a lista de frases. Use o atributo Name desse elemento CommandSet (Name deve ser exclusivo no arquivo VCD) como uma chave para acessar a propriedade VoiceCommandManager.installedCommandSets e obter a referência voiceCommandSet.

Etapa 2: Substituir a lista de frases

Depois de ter identificado o conjunto de comandos, obtenha uma referência para a lista de frases que você deseja modificar e chame o método setPhraseListAsync; use o atributo Label do elemento PhraseList e uma matriz de cadeias de caracteres como o novo conteúdo da lista de frases.

Observação  Se você modificar uma lista de frases, a lista de frases inteira será substituída. Para inserir novos itens em uma lista de frases, especifique os itens existentes e os novos itens na chamada de setPhraseListAsync.

 

Aqui, o arquivo VCD define um Command "showTripToDestination" com um PhraseList que define três opções para selecionar um destino no aplicativo de viagem Adventure Works. Conforme o usuário salva e exclui destinos no aplicativo, ele atualiza as opções em PhraseList.

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

  </CommandSet>

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

</VoiceCommands>

Veja como atualizar o PhraseList mostrado no exemplo anterior com um destino adicional para Phoenix.

N/A

Comentários

É apropriado usar um PhraseList para restringir o reconhecimento para um conjunto relativamente pequeno ou algumas palavras. Quando o conjunto de palavras é muito grande (centenas de palavras, por exemplo) ou não deve ser restrito, use o elemento PhraseTopic e um elemento Subject para refinar a relevância dos resultados do reconhecimento de fala, melhorando a escalabilidade.

No nosso exemplo, temos um PhraseTopic com um Scenario de "Pesquisa", ainda mais refinado por um Subject de "Cidade\Estado".

<?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 to 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="destination" Scenario="Search">
      <Subject>City/State</Subject>
    </PhraseTopic>

  </CommandSet>

Tópicos relacionados

Interações da Cortana

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

Iniciar um aplicativo em segundo plano com comandos de voz na Cortana

VCD elements and attributes v1.2

Designers

Diretrizes para design da Cortana