用 cortana 解析数字

Parse number with cortana

我有一个 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>

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

<PhraseTopic Label="amount" Scenario="Commands">
  <Subject>Phone Number</Subject>
</PhraseTopic>

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

在尝试主题时,自动完成功能显示了几个选项,其中最有希望的是 Date/TimeAddressesPhone Number。当尝试使用多个主题时,我永远无法匹配,但是使用 "Phone Number"(或者只是 "Number",即使没有这样的选项)我能够在某种程度上始终如一地接收数值。

该数字以数字形式出现,所以我只需要 int.TryParse(myText, out myNumber) 并使用它或说出 "invalid number input"。

请注意,这里可以输入任何内容,即使有主题和场景限制...以下内容将有效:

"Hey Cortana, MyAppName add blah blah blah dollars"

金额将是 "blah blah blah"