Google Assistant SDK на pi ничего не делает с пользовательским действием

Я настроил Google Assistant с Raspberry Pi. Я хотел бы определить пользовательское действие, но оно не работает. Google Assistant распознает предложение, но ничего не делает. Вот журнал. Как это исправить?

Я отредактировал action.py, чтобы поместить свой код

class SwitchControl(object):
        """Control a RC-Socket"""


        COMMAND_ON = 'sudo /home/pi/rcswitch-pi/send 00111 3 1'
        COMMAND_OFF = 'sudo /home/pi/rcswitch-pi/send 00111 3 0'


        def __init__(self, say, toggle):
                self.say = say
                self.toggle = toggle

        def run(self, voice_command):
                try:
                        if (self.toggle == 'ON'):
                                self.say(_('Turning switch on.'))
                                for i in range(10):
                                        subprocess.call(SwitchControl.COMMAND_ON, shell=True)
                        elif (self.toggle =='OFF'):
                                self.say(_('Turning switch off.'))
                                for i in range(10):
                                        subprocess.call(SwitchControl.COMMAND_OFF, shell=True)
                except (ValueError, subprocess.CalledProcessError):
                        logging.exception("Error using codesend to toggle rc-socket.")            self.say("Sorry I didn't identify that command")

    # =========================================
    # Makers! Add your own voice commands here.
    # =========================================

    actor.add_keyword(_('pi power off'), PowerCommand(say, 'shutdown'))
    actor.add_keyword(_('pi reboot'), PowerCommand(say, 'reboot'))
    actor.add_keyword(_('switch on'), SwitchControl(say, 'ON'))
    actor.add_keyword(_('switch off'), SwitchControl(say, 'OFF'))
    return actor

person aimen06    schedule 25.06.2017    source источник
comment
я запускаю Google Assistant с помощью google-assistant-demo, может быть, подсказка   -  person aimen06    schedule 02.07.2017
comment
Мне удается использовать API Google Cloud Voice для локальных действий, набрав терминал python3 src/main.py -T gpio --cloud-speech   -  person aimen06    schedule 18.07.2017
comment
запуск скрипта [2017-07-17 22:26:26,389] INFO:recorder:начал запись   -  person aimen06    schedule 18.07.2017
comment
и когда я нажимаю кнопку, ничего не происходит, тогда как с помощью помощника и триггера ok-google работает :(   -  person aimen06    schedule 18.07.2017


Ответы (1)


Хорошо, наконец, мне удалось заставить это работать :) Первое, что вам нужно знать, чтобы сделать локальное действие, вам нужно использовать облачную речь. Затем я застрял, потому что в моем терминале, когда я запускаю Google Assistant, я не видел: [2017-07-26 09:25:20,672] INFO:main:ready... Нажмите кнопку на GPIO 23, затем говорите или нажмите Ctrl+C, чтобы выйти...

Я видел только НАЧАТЬ ЗАПИСЬ

Итак, я взял изображение пиксельного raspbian для magpi, и он работал с этим дистрибутивом, а затем я вставил свою старую SD-карту с моим raspbian для повторного тестирования, и, тада, он работал !!!

person aimen06    schedule 26.07.2017