我对应用程序操作有一个自定义的意图,以便说出这些句子:
为此,我使用以下自定义意图:
<action intentName="custom.actions.intent.BAKE_SOMETHING" queryPatterns="@array/ExampleQueries">
<!-- Define parameters -->
<parameter name="text1" type="https://schema.org/Text" />
<parameter name="number1" type="https://schema.org/Number" />
<!-- Define fulfillment -->
<fulfillment urlTemplate="https://my.app.com/{?item_name,number_of_minutes}">
<parameter-mapping intentParameter="text1" urlParameter="item_name" />
<parameter-mapping intentParameter="number1" urlParameter="number_of_minutes" />
</fulfillment>
</action>
这是ExampleQueries:
<string-array name="ExampleQueries">
<item>bake a $text1</item>
<item>bake a $text1 for $number1 minutes</item>
</string-array>
如果我只是说“打开MyCookingApp烤披萨”,那么我会得到item_name =“ Pizza”和number_of_minutes = null,这是正确!
但是,如果我说“打开MyCookingApp烘烤比萨饼15分钟”,那么我会得到item_name =“比萨饼15分钟”,并且number_of_minutes = 15,这是错误!为什么我将“ Pizza for 15 minutes”作为第一个参数?
我尝试了2种不同的自定义意图。一个仅用于项目“ bake a $ text1”,另一个用于项目“ bake a $ text1 for $ number1分钟”,但我得到的结果相同。助手似乎采取了“最简单”的方式。我的意思是,如果提供了“ bake a $ text1”,那么“ bake a”之后的所有内容都将被视为字符串。但是在这种情况下,为什么我要获得number_of_minutes的真实值?应该为空,对吧?
任何身体都可以在这里显示一些光线。基本上,我需要问用户第一个字符串值,然后是一个可选数字。