Integrar a Cortana numa aplicação Windows Phone

Este artigo tem como objetivo apresentar um exemplo de como integrar a Cortana com uma aplicação de Windows Phone.

Introdução

Uma das funcionalidades interessantes no Windows Phone 8.1 é a Cortana. A Cortana não é mais do que uma assistente pessoal, que ajuda os utilizadores em tarefas básicas, tais como ligar a um amigo, marcar na agenda um acontecimento e outras tarefas.

Atualmente não está disponível para todas as línguas, por esta razão muitos utilizadores que não são nativos de inglês mudaram as definições do seu dispositivo para suportar esta funcionalidade, é o caso de muitos portugueses. Para os interessados que ainda não o tenham feito, é recomendado que alterem as definições para Inglês e para Estados Unidos, para mais informações consultar este artigo.

De suporte ao artigo iremos usar o exemplo Menu App criado no Windows AppStudio.

Integrando a Cortana

A Cortana irá usar comandos de voz para interagir com as aplicações. Para isso esses comandos de voz tem que ser instalados por cada aplicação (cada vez que a aplicação inicia), para que a Cortana saiba como poderá interagir com cada aplicação.

Desta forma, o primeiro passo para integrar com a Cortana, na Menu App, passa por definir um ficheiro Voice Command Definition (VCD), este ficheiro não é mais do que um ficheiro XML com os vários comandos que a Cortana irá reconhecer e por sua vez permitirá fazer a ligação com a aplicação.

Para a Menu App, iremos definir Menu como o nome para a Cortana irá usar para iniciar a aplicação e iremos definir dois comandos:

  • Show Command – irá ser o comando para apresentar ecrãs específicos da aplicação, para a Menu App poderá ser os ecrãs Beverages, Starters, Mains, Desserts e Special Offers;
  • Natural Language Command – irá permitir que a Cortana reconheça expressões comuns do ser humano, tais como I am hungry, I want to eat e I want to drink.

Como foi mencionado anteriormente a Cortana não está disponível em todas as língua e atualmente não é possível interagir com a Cortana em português, por esta razão se está a usar expressões em inglês.

De seguida iremos ver um exemplo de um VCD, que estará definido para inglês. No entanto, é possível definir para outras línguas que a Cortana suporte.

<? xml version = "1.0" encoding = "utf-8" ?>
 
<!-- Be sure to use the new v1.1 namespace to utilize the new PhraseTopic feature --> 
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.1">
  <!-- The CommandSet Name is used to programmatically access the CommandSet --> 
  <CommandSet xml:lang="en-us" Name="englishCommands">
    <!-- The CommandPrefix provides an alternative to your full app name for invocation --> 
    <CommandPrefix>Menu</CommandPrefix>
    <!-- The CommandSet Example appears in the global help alongside your app name --> 
    <Example> I am hungry </Example>
 
    <Command Name = "ShowCommand">
      <Example> Show Mains </Example>
      <ListenFor> Show {dictatedShowTerms} </ListenFor>
      <Feedback> Showing in Menu ... </Feedback>
      <Navigate Target = "MainPage.xaml" />
    </Command>

    <Command Name = "NaturalLanguageCommand">
      <Example> I want to eat </Example>
      <ListenFor> {naturalLanguage} </ListenFor>
      <Feedback> Starting Menu ... </Feedback>
      <Navigate Target = "MainPage.xaml" />
    </Command>
 
    <PhraseTopic Label="dictatedShowTerms" Scenario="Search">
      <Subject> Starters </Subject>
      <Subject> Mains </Subject>
      <Subject> Desserts </Subject>
      <Subject> Beverages </Subject>
      <Subject> Special Offers </Subject>
    </PhraseTopic>
    <PhraseTopic Label="naturalLanguage" Scenario="Natural Language">
      <Subject> I want to eat </Subject>
      <Subject> I want to drink </Subject>
      <Subject> I am hungry </Subject>
    </PhraseTopic>
  </CommandSet>
</VoiceCommands>

De salientar que 

  • CommandSet – define os comandos para cada língua
  • CommandPrefix – define o nome com que a Cortana irá reconhecer a aplicação, neste caso Menu
  • Example – define um exemplo de como usar a Cortana para interagir com a  Menu App
  • Command – define o comando de voz suportado
  • PhraseTopic – define possíveis expressões que a Cortana poderá identificar para iniciar o comando de voz

Para mais detalhes consulte o artigo Voice Command Definition (VCD) elements and attributes.

Nota: No ficheiro Manifest é necessário selecionar a capacidade de “Microphone“.

Publicado na edição 47 (PDF) da Revista PROGRAMAR.