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