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.
- Instale o Microsoft Visual Studio.
- Obter uma licença de desenvolvedor. Para obter instruções, veja Desenvolver usando o Visual Studio 2013.
- Crie seu primeiro aplicativo em JavaScript.
- Mapa para os aplicativos da Windows Store usando JavaScript
- Saiba mais sobre eventos com Guia de início rápido: adicionando controles HTML e manipulando eventos
- 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.
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
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