명령어 처리

기기에서 맞춤 코드를 실행하려면 다음 안내를 따르세요. Google 어시스턴트의 명령에 응답합니다.

샘플 실행

이제 트레잇을 정의하고 모델을 업데이트했으므로 Google 어시스턴트가 적절한 알림의 사용/사용 중지 명령어를 쿼리합니다.

googlesamples-assistant-pushtotalk

Enter 키를 누르고 다음 쿼리를 실행해 봅니다.

사용 설정합니다.

콘솔 출력에 다음 문이 표시됩니다. 그렇지 않은 경우 문제 해결 안내를 참조하세요.

INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Transcript of user request: "turn on".
INFO:root:Playing assistant response.
INFO:root:Turning device on
INFO:root:Waiting for device executions to complete.
INFO:root:Finished playing assistant response.

이러한 문이 소스 코드에서 출력되는 위치를 찾을 수 있습니다.

소스 코드 가져오기

이제 자체 프로젝트를 시작할 준비가 되었습니다.

git clone https://github.com/googlesamples/assistant-sdk-python

명령어 핸들러 찾기

샘플 코드의 pushtotalk.py 파일은 SDK를 사용하여 요청을 전송하고 Google 어시스턴트로부터 응답을 받을 수 있습니다.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

다음 핸들러 정의를 검색합니다.

device_handler = device_helpers.DeviceRequestHandler(device_id)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
    else:
        logging.info('Turning device off')

onoff()의 코드는 action.devices.commands.OnOff 명령어를 처리합니다. 이 명령어는 OnOff의 일부입니다. 트레잇 스키마

현재 onoff() 정의는 콘솔에 출력을 로깅합니다. 도우미를 사용하여 device_helpers.py의 함수를 사용하여 응답 JSON을 파싱하고 명령어를 저장합니다. 쉽게 사용할 수 있도록 변수에 여러 매개변수를 포함할 수 있습니다. 이 코드를 수정하여 지정할 수 있습니다

LED 키트가 있는 경우 계속해서 아래 내용을 읽고 이에 대응하여 LED를 켜는 방법을 알아보세요. OnOff 명령으로 전달됩니다. 그렇지 않은 경우 다음 섹션을 건너뛰어 트레잇과 핸들러를 더 추가합니다.

다음 단계 - Raspberry Pi

수신되는 명령어를 처리하는 방법을 알게 되었으므로 이제 샘플 코드를 수정합니다. LED를 켜세요 이 기능을 사용하려면 일부 추가 하드웨어가 Raspberry Pi입니다.

GPIO 패키지 가져오기

GPIO (범용 입력/출력) 핀에 대한 소프트웨어 액세스를 간소화하기 위해 Raspberry Pi를 설치하려면 RPi.GPIO를 설치합니다. 가상 환경에서 실행되어야 합니다

pip install RPi.GPIO

샘플 수정

pushtotalk.py 파일을 엽니다.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

pushtotalk.py 파일에서 RPi.GPIO를 가져옵니다. 모듈을 사용하여 Pi의 GPIO 핀을 제어합니다. 다음 문장을 기타 import 문:

import RPi.GPIO as GPIO

처음에 출력 핀을 낮은 로직 상태로 설정하도록 코드를 수정합니다. 이 명령이 수신되면 핀을 높은 논리 상태로 설정합니다. 이 명령어가 수신되면 핀을 낮은 논리 상태로 설정합니다.

device_handler = device_helpers.DeviceRequestHandler(device_id)
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
        GPIO.output(25, 1)
    else:
        logging.info('Turning device off')
        GPIO.output(25, 0)

변경사항을 저장하고 파일을 닫습니다.

샘플 실행

수정된 샘플 코드를 실행합니다.

python pushtotalk.py

이전과 동일한 쿼리를 사용합니다. LED가 켜집니다.

이는 시작에 불과합니다. 더 많은 트레잇 및 핸들러를 추가하는 방법을 알아봅니다.