Пользовательское действие устройства не будет работать на Raspberry Pi со встроенным помощником - PullRequest
0 голосов
/ 04 мая 2018

У меня есть домашний помощник Google, работающий на Raspberry Pi, и я пытаюсь выполнить для него пользовательские действия.

Действие, которое я хочу сделать: «Привет, Google, проанализируй этот объект», и оно просто делает снимок того, что я держу в руках. Я не могу по какой-то причине использовать «сделать снимок», потому что он просто отвечает «Извините, я пока не могу сделать снимок!»

Я не могу заставить это работать, и я понятия не имею, почему. Пример мигания света работает, но эта команда проще и даже не имеет параметров. Я обновил действия и получил одобрение (Ваше приложение для Ассистента для проекта XXXX было успешно обновлено с вашими действиями). Но всякий раз, когда я говорю «эй, google, проанализируй этот объект», он просто кричит «Извини! Я не понимаю».

Что я здесь не так делаю?

JSON в файле действий:

    {
    "manifest": {
        "displayName": "Office Controller",
        "invocationName": "Office Controller",
        "category": "PRODUCTIVITY"
    },
    "actions": [
            {
            "name": "com.acme.actions.analyze_object",
            "availability": {
                "deviceClasses": [
                    {
                        "assistantSdkDevice": {}
                    }
                ]
            },
            "intent": {
                "name": "com.acme.intents.analyze_object",
                "trigger": {
                    "queryPatterns": [
                        "analyze this object"
                    ]
                }
            },
            "fulfillment": {
                "staticFulfillment": {
                    "templatedResponse": {
                        "items": [
                            {
                                "simpleResponse": {
                                    "textToSpeech": "Ok. Analyzing."
                                }
                            },
                            {
                                "deviceExecution": {
                                    "command": "com.acme.commands.analyze_object"
                                }
                            }
                        ]
                    }
                }
            }
        },
        {
            "name": "com.acme.actions.blink_light",
            "availability": {
                "deviceClasses": [
                    {
                        "assistantSdkDevice": {}
                    }
                ]
            },
            "intent": {
                "name": "com.acme.intents.blink_light",
                "parameters": [
                    {
                        "name": "number",
                        "type": "SchemaOrg_Number"
                    },
                    {
                        "name": "light_target",
                        "type": "LightType"
                    }
                ],
                "trigger": {
                    "queryPatterns": [
                        "blink the $LightType:light_target $SchemaOrg_Number:number times"
                    ]
                }
            },
            "fulfillment": {
                "staticFulfillment": {
                    "templatedResponse": {
                        "items": [
                            {
                                "simpleResponse": {
                                    "textToSpeech": "Blinking the $light_target.raw $number times"
                                }
                            },
                            {
                                "deviceExecution": {
                                    "command": "com.acme.commands.blink_light",
                                    "params": {
                                        "lightKey": "$light_target",
                                        "number": "$number"
                                    }
                                }
                            }
                        ]
                    }
                }
            }
        }
    ],
    "types": [
        {
            "name": "$LightType",
            "entities": [
                {
                    "key": "LIGHT",
                    "synonyms": [
                        "LED",
                        "light",
                        "bulb",
                        "light bulb"
                    ]
                }
            ]
        }
    ]
}

Код события в программе Python

if event.type == EventType.ON_DEVICE_ACTION:
        for command, params in process_device_actions(event, device_id):
            print('Do command', command, 'with params', str(params))

            if command == "com.acme.commands.blink_light":
                number = int( params['number'] )
                for i in range(int(number)):
                    print('Device is blinking.')
                    GPIO.output(25, 1)
                    time.sleep(1)
                    GPIO.output(25, 0)
                    time.sleep(1)

            elif command == "com.acme.commands.analyze_object":
                camera = picamera.PiCamera()
                camera.capture('photo.jpg')
                print('Took a photo')

1 Ответ

0 голосов
/ 04 мая 2018

Тьфу нашел это. Вы должны обновить свои действия, а затем нажать тест для ваших действий. Я забыл нажать тест.

...