首页 > 解决方案 > 如何在 Alexa 技能中获得金钱/货币价值?

问题描述

如何在意图中获得金钱/货币价值?

我真的很惊讶没有内置的货币和/或货币价值的插槽类型......目标是创建一个为发票增加一些货币价值的意图(技能与网络服务相关联)。

“将 {value} 美元添加到发票中”

我的第一次尝试是将 {value} 配置为 AMAZON.Number 并输入“将 5.43 美元添加到发票中”。这会将以下内容发送到我的网络服务

value": "?"

“在发票上加 5doller”的结果是一样的。好的,看来 AMAZON.Number 只能处理书面数字,所以“在发票上加五美元”。这很好,因为在开发环境之外,用户会说出命令而不是编写命令。

但是,美分值呢?不同的货币呢?

我在意图中添加了两个插槽:

"slots": [                        
    {
        "name": "intValue",
        "type": "AMAZON.NUMBER",                               
    },{
        "name": "decimalValue",
        "type": "AMAZON.NUMBER",       
    }
]

但是如何定义话语呢?当然我可以简单地定义

Add {intValue} dollar {decimalValue} cents to invoice"

但这不会很灵活。应该可以使用...

为了解决前五点,我做了以下事情:

配置:

{
    "name": "AddInvoiceValue",
    "slots": [
        {
            "name": "intValue",
            "type": "AMAZON.NUMBER"
        },
        {
            "name": "decimalValue",
            "type": "AMAZON.NUMBER"
        },
        {
            "name": "currency",
            "type": "Currency"
        },
        {
            "name": "cents",
            "type": "Cent"
        }
    ],
    "samples": [
        "Add {decimalValue} {cents} to invoice",
        "Add {intValue} {decimalValue} to invoice",
        "Add {intValue} {currency} {decimalValue} to invoice",
        "Add {intValue} {currency} to invoice"
    ]
}

问题:

最大的问题:

如何创建一个对话框,用户说“创建新发票条目”并且 Alexa 回问“应该添加多少?”。

仅当需要插槽时才可以创建对话框,但不需要使用的插槽。应该可以仅添加 intValue 或仅添加十进制值...

那么如何解决这个问题呢?

标签: alexaalexa-skills-kitalexa-skillalexa-slot

解决方案


对话框功能在这里可能会有所帮助,在我看来,您的 Intent 中有必需的插槽 - 数量。因此,您可以使用开发人员控制台来定义 Alexa 应该提出的问题。

您可以创建自己的对话机制,而不是使用内置的对话机制 - 通过一些状态管理(您可以使用会话存储来保持用户答案之间的状态)。所以当 Alexa 说“应该加多少?” 应该有一个状态设置为“WAITING_FOR_AMOUNT”,然后意图接收带有一些逻辑的小数 - 当有一个“WAITING_FOR_AMOUNT”状态时,做一些事情等等。


推荐阅读