2017-02-17 37 views
1

Я работаю над приложением UWP, которое должно фильтровать автомобили по их идентификатору VehicleIdentificationNumber (VIN). Этот VIN представляет собой длинную строку длиной 17 символов. Он может включать Числа и буквы в каждой позиции.Создайте шаблоны в фразелисте, которые Cortana может понять

У кого-нибудь есть идея, как я могу позволить пользователю диктовать эту длинную строку длиной 17 символов, и Кортана поймет это правильно? Некоторые тесты показали, что Кортана иногда понимает цифры, и во второй попытке она записывает ее как «три» f. е.

Это строки в моем VCD-файле, который вызывает фоновое обслуживание. В BackgroundService результат, который я получаю из VehicleIdentificationNumber, - «...».

<Command Name="selectedSpecificVehicleByVIN"> 
    <Example>Fahrzeug nach VIN WAUZZZ8V5EA012963 filtern</Example> 
    <ListenFor RequireAppName="BeforeOrAfterPhrase">Fahrzeug nach VIN {VehicleIdentificationNumber} filtern</ListenFor> 
    <Feedback>Suche nach Fahrzeug mit VIN {VehicleIdentificationNumber}</Feedback> 
    <VoiceCommandService Target="VehicleSelectionService"/> 
</Command> 

И мой PhraseTopic выглядит следующим образом:

<PhraseTopic Label="VehicleIdentificationNumber" Scenario="Dictation" /> 

ответ

3

Я нашел ответ для этого случая. Было довольно просто. Мне только пришлось добавить два предмета на мой PhraseTopic.

<PhraseTopic Label="VehicleIdentificationNumber" Scenario="Dictation"> 
    <Subject>Characters</Subject> 
    <Subject>Alphabet</Subject> 
</PhraseTopic> 

Одна небольшая проблема заключается в том, что Cortana добавляет некоторые пробелы внутри записанного VIN. Это можно удалить с помощью простых строковых операций.

Надеюсь, что я могу помочь кому-то, у кого такая же проблема.

+1

Спасибо, сценарий «Диктатура» не имел никакой документации, когда я в последний раз смотрел. Это значительно облегчит мое приложение. –

1

Я должен был написать парсер, который будет принимать строку ответа, что вы получаете и конвертировать текст номера для цифр. Если вы делаете одну цифру за раз, это не должно быть слишком плохо.

Вы также можете попытаться создать цель для каждой цифры/буквы, так как большинство людей будет говорить их отдельно. Затем, вместо использования PhraseTopic, используйте фразелист и поместите каждую цифру и букву в список.

+1

Я проверил ваш второй совет. Для информации: он не работает, если я использую PhraseList и помещаю каждую цифру/букву внутрь, потому что в VCD только каждый первый элемент будет использоваться каждый раз. Так что, если я создаю этот PhraseList как B ... и мой говоря VIN является WVWxxxxx .. это займет W на каждой позиции, и будет искать VIN «WWWWWWWWWWWWWW» , И если я создаю для каждого Digit отдельный фразелист, количество фразелистов в каждом полете больше 10. Я проверю ваш первый совет, если он будет работать. – TiMeJuMp