如何获得Alexa技能意图中的货币/货币价值?

问题描述 投票:1回答:1

如何在缩进中获得货币/货币价值?

我真的很惊讶没有用于货币和/或货币价值的插槽类型的构建......目标是创建一个向发票添加一些货币价值的意图(技能链接到Web服务)。

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

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

value": "?"

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

但是,分值呢?各种货币怎么样?

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

"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要求返回值

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

  • 使用值“Dollar,Euro,Pound等”定义自定义插槽类型“Currency”
  • 定义一个自定义插槽类型“Cent”,其值为“Cent,Pences,Pennies,Rappen等”
  • 为意图添加了以下话语:

配置:

{
    "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千”。不同的扬声器会出现此问题,并且无法通过非常精确的发音解决...
  • 在德语中,头号被翻译为“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个回答
0
投票

Dialog功能在这里可能会有所帮助,在我看来,你的意图中需要插槽 - 金额。那么你可以使用Developer Console来定义Alexa应该问的问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.