Google助手服务,如何过滤多个音频回复

时间:2018-06-27 15:31:45

标签: google-assistant-sdk

很难解释,但实际上我正在尝试使用Google Assistant服务来编写自己的库。

me > "set a timer"
GA > "sure, how long"
me > "10 mn"
GA > "ok, timer is set" (1st response)
GA > "Sorry I can't help you" (2nd response)

反应正常,因为服务不支持计时器。我想编写自己的计时器,但是无法保留第一个响应并阻止第二个响应。 dialog_state_out.supplemental_display_text 仅包含第一个,但音频核心将播放我们在 audio_out.audio_data 中拥有的所有数据。

如何分隔2个响应,我看不到数据流断开连接并且仅完成了1个请求。

1 个答案:

答案 0 :(得分:0)

正确的方法是使用custom device actions。您可以创建自己的操作,该操作将在诸如“设置计时器”之类的查询上触发,从而使您可以处理自定义逻辑,甚至支持查询本身内的参数。

文档中的

This page说明了如何进行设置。您可以使用动作定义一个动作包。这是“闪烁”的动作:

"actions": [
    {
        "name": "com.example.actions.BlinkLight",
        "availability": {
            "deviceClasses": [
                {
                    "assistantSdkDevice": {}
                }
            ]
        },
        "intent": {
            "name": "com.example.intents.BlinkLight",
            "parameters": [
                {
                    "name": "number",
                    "type": "SchemaOrg_Number"
                },
                {
                    "name": "speed",
                    "type": "Speed"
                }
            ],
            "trigger": {
                "queryPatterns": [
                    "blink ($Speed:speed)? $SchemaOrg_Number:number times",
                    "blink $SchemaOrg_Number:number times ($Speed:speed)?"
                ]
            }
        },
        "fulfillment": {
            "staticFulfillment": {
                "templatedResponse": {
                    "items": [
                        {
                            "simpleResponse": {
                                "textToSpeech": "Blinking $number times"
                            }
                        },
                        {
                            "deviceExecution": {
                                "command": "com.example.commands.BlinkLight",
                                "params": {
                                    "speed": "$speed",
                                    "number": "$number"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
],