在短语列表中创建 Cortana 可以理解的模式

Create Patterns in Phraselist that Cortana can understand

我正在开发一个 UWP 应用程序,该应用程序应按其 VehicleIdentificationNumber (VIN) 过滤汽车。此 VIN 是一个 17 个字符的长字符串。它可以在每个位置上包含数字和字母。

有没有人知道我如何让用户口述这个 17 个字符的长字符串并且 Cortana 会正确理解它?一些测试表明 Cortana 有时能理解这些数字,并在第二次尝试中将其写为 "three" f。 e.

这是我的 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" />

我必须编写一个解析器来获取您提供的字符串响应并将数字文本转换为数字。如果你一次只做一个数字,应该不会太糟糕。

您也可以尝试为每个 digit/letter 创建一个目标,因为大多数人会分开说。然后,不使用 PhraseTopic,而是使用 Phraselist 并将每个数字和字母放入列表中。

我已经找到了这个案例的答案。 这很简单。我只需要在我的 PhraseTopic 中添加两个主题。

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

一个小问题是,Cortana 在拼写的 VIN 中添加了一些空格。这可以通过简单的字符串操作来删除。

希望我能帮助有同样问题的人。