为什么要使用我的自定义意图混合参数?

问题描述

我对应用程序操作有一个自定义的意图,以便说出这些句子:

  1. 嘿,Google,打开MyCookingApp将蛋糕烤10分钟
  2. 嘿,谷歌,打开MyCookingApp烤15分钟的披萨
  3. 嘿,Google,打开MyCookingApp烤披萨(此处用户未指定任何时间)

为此,我使用以下自定义意图:

<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的真实值?应该为空,对吧?

任何身体都可以在这里显示一些光线。基本上,我需要问用户一个字符串值,然后是一个可选数字。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...