Набор голосовых команд UWP не работает с несколькими фразами

При попытке реализовать VoiceCommands я использую этот набор:

<Command Name="searchCommand">
  <Example>Search for UWP on Bing </Example>
  <ListenFor RequireAppName="BeforeOrAfterPhrase"> search for {search} on {service} </ListenFor>
  <Feedback>Searching for {search} on {service}</Feedback>
  <Navigate />
</Command>

Я добавил эти фразы (где служба динамически обновляется в коде, это все работает нормально):

<PhraseList Label="service">
  <!-- Dynamic -->
</PhraseList>

<PhraseTopic Label="search" Scenario="Search">
  <!-- Dynamic -->
</PhraseTopic>

Теперь, когда я использую эту команду, API, похоже, распознает только последнюю фразу. Поэтому, если я использую 3 фразы, будет распознана только последняя.

Command:          'Search for UWP on Bing'
Shows up as:      'Searching for {search} on Bing'
TextSpoken value: 'Search for UWP on Bing' (so the voice to text is working correctly)

Когда я использую «Поиск {search}» в ListenFor, он правильно возвращает правильный результат. Но для этой функции, которую я реализую, мне нужно 2 (или даже 3) фразы в одной команде.

Кажется, что UWP распознает только последнюю фразу. Я прав или можно использовать несколько фраз внутри элемента ListenFor?

Обновление от 13 июня 2016 г.:

Я создал репродукцию:

Скриншот с изображением ошибки Cortana


person Geert van Horrik    schedule 09.06.2016    source источник
comment
Я не могу воспроизвести вашу проблему, можете ли вы поделиться образцом?   -  person Grace Feng    schedule 13.06.2016
comment
@GraceFeng-MSFT Я добавил репродукцию   -  person Geert van Horrik    schedule 13.06.2016


Ответы (2)


Герт, похоже, вы используете сборку Windows Insider 14342. Проблема, которую вы видите, связана с ошибкой, появившейся в сборке 14341, которая должна быть исправлена ​​в сборках >= 14371.

Надеюсь, это поможет.

person Khuram Shahid - MSFT    schedule 22.06.2016

Ни одна UWP не распознает несколько фраз внутри ListenFor

Я думаю, вам нужно более одного ListenFor

 <Command Name="searchCommand">
      <Example>Search for UWP on Bing </Example>
      <ListenFor RequireAppName="BeforeOrAfterPhrase"> search for {search} on {service} </ListenFor>
<ListenFor RequireAppName="BeforeOrAfterPhrase">search for {search}</ListenFor>
<ListenFor RequireAppName="BeforeOrAfterPhrase">search for on {service}</ListenFor>
      <Feedback>Searching for {search} on {service}</Feedback>
      <Navigate />
    </Command>

Таким образом, вы можете покрыть все комбинации. Я предполагаю, что Cortana запуталась из-за только одного ListenFor.

person coder    schedule 10.06.2016
comment
Спасибо за ваш ответ. Я тестировал это и до сих пор получаю только последний элемент. - person Geert van Horrik; 10.06.2016