Текстовые запросы Кортаны

Я разрабатываю приложение Cortana и хочу протестировать свое приложение с помощью текстовых запросов (а также голосовых запросов), но Cortana активирует мое приложение только тогда, когда я использую голосовые команды. Можно ли протестировать приложение, используя только текст?

Что мне следует изменить/запрограммировать в приложении, чтобы Кортана могла вызывать приложение на основе текстовых запросов?

Я использую ноутбук с Windows 10.

Вот пример моего VCD:

<?xml version="1.0" encoding="utf-8" ?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2">
  <CommandSet xml:lang="en-us" Name="FruitsCommandSet_en-us">

    <AppName>Nutritional</AppName>
    <Example>Show nutritional information about fruits.</Example>

    <Command Name="GetFruitNames">
      <Example>Show the fruit nutritional facts.</Example>

      <ListenFor RequireAppName="ExplicitlySpecified">[Show] {builtin:AppName} details for [the] {FruitName}.</ListenFor>

      <Feedback>Loading fruit details...</Feedback>

      <Navigate />
    </Command>


    <PhraseTopic Label="FruitName">
    </PhraseTopic>

  </CommandSet>
</VoiceCommands>

person JohnTortugo    schedule 25.01.2016    source источник
comment
И текстовая, и голосовая активация должны работать одинаково. Когда вы создали файл VCD, использовали ли вы тег AppName для указания ключевого слова активации? Или вы использовали старое устаревшее имя CommandName? Включение некоторых фрагментов вашего VCD в ваш вопрос должно облегчить понимание того, что происходит.   -  person Andrew Pilley    schedule 26.01.2016
comment
Я использую тег CommandPrefix для слова активации и теги ListenFor для команд. Я включил пример.   -  person JohnTortugo    schedule 26.01.2016
comment
Попробуйте использовать ‹AppName›. Проблема в том, что вы используете инфиксный формат (встроенный бит: AppName), но не указываете AppName. CommandPrefix предназначен для устаревшей поддержки старых VCD winphone 8.x, которые не поддерживают тег AppName. См. этот образец VCD для примера, и посмотреть, как вы идете.   -  person Andrew Pilley    schedule 26.01.2016
comment
Спасибо, но .. должно быть что-то не так, потому что я все еще могу активировать приложение только с помощью голоса.   -  person JohnTortugo    schedule 26.01.2016
comment
Странный. Можете ли вы попробовать добавить ListenFor, который помещает имя вашего приложения в начало? И можете ли вы попробовать образец Adventureworks и посмотреть, возникнет ли у вас такая же проблема?   -  person Andrew Pilley    schedule 26.01.2016
comment
Да... Сейчас попробую с advetureworks, потому что он не работал даже для однословных предложений + {before, after, beforeOrAfter}.   -  person JohnTortugo    schedule 26.01.2016
comment
Хм.. AdventureWorks для WinPhone.. У меня его нет, и эмулятор сейчас не работает. Любой пример, который работает в Win 10? Кстати, это мой настоящий VCD pastebin.com/p6C86rck   -  person JohnTortugo    schedule 26.01.2016
comment
Образец Adventureworks определенно работает на ПК. Visual Studio по умолчанию использует ARM, поскольку это первая конфигурация сборки в файлах проекта, но она будет работать нормально, если вы переключите ее на x86 или x64.   -  person Andrew Pilley    schedule 26.01.2016
comment
В нем говорится, что я использую слишком старую версию универсальной среды выполнения Windows (10.0.10240.16430). Я использую Win 10 Enterprise и проверил обновление ОС, но обновления недоступны.   -  person JohnTortugo    schedule 26.01.2016
comment
Похоже, ваша компания еще не распространила ноябрьское обновление win10 (1511) или вы еще не установили обновление vs2015 1 и не получили новый пакет SDK. Вы должны иметь возможность редактировать файлы проекта, чтобы вернуться к 10240, хотя я не помню никаких изменений API.   -  person Andrew Pilley    schedule 26.01.2016
comment
Я нашел, в чем была проблема. Это была точка. в конце предложений и может быть какая-то другая смысловая ошибка. Но точка фундаментальна! Если я добавлю точку в конце текста ListenFor, Кортана не сможет распознать запрос, даже если я добавлю точку в конце запроса.   -  person JohnTortugo    schedule 26.01.2016
comment
Ах, извините. переполнение стека отформатировало это так, чтобы точка была за пределами экрана, поэтому я пропустил это в вашем образце. Вы определенно хотите избежать лишних знаков препинания в своих операторах ListenFor. Теперь нормально работает голосовой и текстовый ввод?   -  person Andrew Pilley    schedule 26.01.2016


Ответы (1)


Публикация здесь, чтобы окончательный ответ был более ясен из обсуждения выше.

Файл VCD, который использовал Джон, имел функции, требующие установки AppName (встроенный маркер: AppName), и имел некоторые знаки препинания в операторе ListenFor, которые затрудняли сопоставление текста.

Рекомендуется избегать знаков препинания в операторе ListenFor (например, точек). В то время как распознавание речи работает на основе подхода, основанного на достоверности, и справится, ввод текста немного более строгий.

person Andrew Pilley    schedule 26.01.2016