首页 > 解决方案 > Google assistant sdk [CUSTOM TYPES]:从自定义操作中捕获货币价值(10 美元、20 美元、50 美元)

问题描述

我想在我的自定义操作中使用自定义类型来捕获 $10、$5、$20 等值,因为这种数据没有 Schema.org 定义的类型。我将它添加到 json 文件中,但它不起作用。

这是在 raspbian 上运行的。使用谷歌助手 SDK 1.0.1 版本。该操作是针对西班牙语进行的。

{   
    "locale": "es",
    "manifest": {
        "displayName": "Imprimir",
        "invocationName": "Imprimir",
        "category": "PRODUCTIVITY"
    },
    "actions": [
        {
            "name": "com.example.actions.Imprimir",
            "availability": {
                "deviceClasses": [
                    {
                        "assistantSdkDevice": {}
                    }
                ]
            },
            "intent": {
                "name": "com.example.intents.Imprimir",
                "parameters": [
                    {
                        "name": "cantidad",
                        "type": "SchemaOrg_Number"
                    },
                    {
                        "name": "valor",
                        "type": "$Valor"
                    }
                ],
                "trigger": {
                    "queryPatterns": [
                        "imprimir $SchemaOrg_Number:cantidad tickets de $Valor:valor"
                    ]
                }
            },
            "fulfillment": {
                "staticFulfillment": {
                    "templatedResponse": {
                        "items": [
                            {
                                "simpleResponse": {
                                    "textToSpeech": "De acuerdo"
                                }
                            },
                            {
                                "deviceExecution": {
                                    "command": "com.example.commands.Imprimir",
                                    "params": {
                                        "cantidad": "$cantidad",
                                        "valor": "$valor"
                                    }
                                }
                            }
                        ]
                    }
                }
            }
        }
    ],
    "types": [
        {
            "name": "$Valor",
            "entities": [
                {
                    "key": "1$",
                    "synonyms": [
                        "1 dolar"
                    ]
                },
                {
                    "key": "2$",
                    "synonyms": [
                        "2 dolares"
                    ]
                },
                {
                    "key": "5$",
                    "synonyms": [
                        "5 dolares"
                    ]
                },
                {
                    "key": "10$",
                    "synonyms": [
                        "10 dolares"
                    ]
                },
                {
                    "key": "20$",
                    "synonyms": [
                        "20 dolares"
                    ]
                }
            ]
        }
    ]
}

它没有向我显示任何明显的错误。这就是我谈论订单时发生的事情:

ON_END_OF_UTTERANCE
ON_END_OF_UTTERANCE
ON_RECOGNIZING_SPEECH_FINISHED:
  {"text": "imprimir dos ticket de $10"}
ON_RESPONDING_STARTED:
  {"is_error_response": false}
ON_RESPONDING_FINISHED
ON_CONVERSATION_TURN_FINISHED:
  {"with_follow_on_turn": false}

助理告诉我,她不明白。我在一个西班牙集团工作。

我知道我的自定义类型不起作用,因为未捕获事件。我确定 json 文件没有错误,因为如果我忽略“Valor”类型,将其替换为$SchemaOrg_Number并省略“dolar”一词,gaction 运行良好。

我已经尝试过$SchemaOrg_priceCurrency,但它捕获了美元、索尔、日元、欧元等货币的类型......

标签: pythonjsonpython-3.xschema.orggoogle-assistant-sdk

解决方案


您的同义词列表应包括每个可能的组合。如果您的查询将“$10”作为字符串,则需要作为同义词进行匹配,否则查询将根本不匹配。


推荐阅读