Служба помощника Google, как отфильтровать несколько аудиоответов

Это сложно объяснить, но на самом деле я пытаюсь закодировать свою собственную библиотеку с помощью Google Assistant Service.

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 ответ

Правильный способ сделать это - использовать пользовательские действия на устройстве. Вы можете создать собственное действие, которое будет запускать запрос, например "установить таймер", что позволит вам обрабатывать пользовательскую логику и даже поддерживать параметры в самом запросе.

На этой странице документации объясняется, как их настроить. Вы определяете пакет действий с вашими действиями. Вот действие для "мигания":

"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"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
],
Другие вопросы по тегам