【问题标题】:How to get a money / currency value in an Alexa skill intend?如何在 Alexa 技能中获得金钱/货币价值?
【发布时间】:2019-02-22 11:15:15
【问题描述】:

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

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

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

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

value": "?"

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

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

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

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

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

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

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

  • 仅美元价值:“5 美元”
  • 仅美分值:“23 美分”
  • 美元价值 + 美分价值:“5 美元 23 美分”
  • 有或没有货币:“5 美元 23 美分”、“5 美元 23”、“5 23”等
  • 不同的货币:“5 美元 23 美分”、“5 英镑 23 便士”等。
  • 第一句话(“创建新发票条目”)中没有值,Alexa 要求返回值

为了解决前五点,我做了以下操作:

  • 定义自定义槽类型“货币”,其值为“美元、欧元、 英镑等。”
  • 使用值“美分、便士、便士、拉彭等”定义自定义槽类型“美分”
  • 在意图中添加了以下语句:

配置:

{
    "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"
    ]
}

问题:

  • 如果有人说“将 500 17 添加到发票”,则检测为 517 而不是 500.17(由 {decimalValue} {cents} 定义)。这没什么大不了的,但仍然不是最佳的
  • “2 美元 18 美分”被检测为“2 美元 18,000”。这个问题出现在不同的说话者身上,不能用非常精确的发音来解决......
  • 在德语中,数字一被翻译为“eins”。然而,“一美元四分”将被翻译成“ein Dollar vier cent”,这将是“一美元四美分”而不是“一美元”。没有人会说“eins Dollar...”。当然,“ein”或“a”不是有效数字,因此“ein Dollar vier cent”被检测为“intValue = ?”和“decimalValue = 4”导致“$0,14”

最大的问题:

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

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

那么如何解决呢?

【问题讨论】:

  • 您好,您解决了这个问题吗?如果你做到了,怎么做到的?谢谢!

标签: alexa alexa-skills-kit alexa-skill alexa-slot


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多