谷歌助手服务,如何过滤多个音频响应



这很难解释,但实际上我正在尝试使用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 个请求。

正确的方法是使用自定义设备操作。您可以创建自己的操作,该操作将在查询上触发,例如"设置计时器",从而允许您处理自定义逻辑,甚至支持查询本身中的参数。

文档中的此页面介绍了如何设置它们。您可以使用操作定义操作包。以下是"闪烁"的操作:

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

最新更新