使用cortana解析数字

JBe*_*rdo 6 c# cortana windows-10 uwp windows-10-universal

我有一个Cortana XML文件,我需要输入一个数字.我该怎么做才能确保将其转换为数字?

<Command Name="AddMoney">
  <Example> Add 10 dollars </Example>
  <ListenFor> add {amount} {currency} </ListenFor>
  <Feedback> Adding some money </Feedback>
  <Navigate/>
</Command>

<PhraseList Label="currency">
    <item>dollar</item>
    <item>euro</item>
    <item>pound</item>
</PhraseList>

<PhraseList Label="amount">
</PhraseList>
Run Code Online (Sandbox Code Playgroud)

JBe*_*rdo 4

我找到了一种接收号码的方法,但并不完美。

<PhraseTopic Label="amount" Scenario="Commands">
  <Subject>Phone Number</Subject>
</PhraseTopic>
Run Code Online (Sandbox Code Playgroud)

注意我使用PhraseTopic而不是PhraseList。我真的不知道哪一个Scenario是最好的,但我发现Commands比没有Scenario设置能产生更好的结果。由于某些奇怪的原因,PhraseTopic 标签必须放置在所有 PhraseList 标签之后......

在尝试科目时,自动完成功能会显示一些选项,其中最有希望的是Date/TimeAddressesPhone Number。当尝试使用多个主题时,我永远无法匹配,但是使用“电话号码”(或只是“数字”,即使没有这样的选项),我能够在某种程度上一致地接收数字值。

该数字以数字形式出现,因此我只需要int.TryParse(myText, out myNumber)使用它或说“数字输入无效”。

请注意,即使有主题和场景限制,也可以在此处输入任何内容......以下内容将起作用:

"Hey Cortana, MyAppName add blah blah blah dollars"
Run Code Online (Sandbox Code Playgroud)

金额实际上是"blah blah blah"