사용 중인 기기에 현재 적용되지 않는 특수 기능이 특성 "조명 깜박임" 등 특성이 있습니다. 나 사용자 기기에 전송되는 명령을 지정하는 사용자 지정 작업을 장치를 사용하여 특수 능력을 일으킬 수 있습니다.
맞춤 기기 작업을 정의하려면 다음이 필요합니다.
- 사용자 쿼리와 일치시킬 패턴
- 일치하는 검색어와 연결할 맞춤 기기 작업
- 기기에서 작업을 지원하는 경우 사용자에게 음성으로 제공되는 텍스트입니다.
- 매개변수로 다시 전송되는 명령어 이름
이 정보를 작업 패키지 작업 패키지는 어시스턴트 응답 형식을 정의합니다. 좋아요 취소 Actions SDK, 맞춤 기기 작업이 로컬에서 처리됨 포드의 상태를 엔드포인트를 사용하여 요청을 처리하고 응답을 제공합니다. 맞춤 기기 작업: 대화식이 아닌가 봐요.
작업 패키지 만들기
다음을 예로 사용하여 다음을 실행하는 파일 (예: actions.json)을 만듭니다.
는 테스트 명령어인 LED 깜박임을 정의합니다.
 생성한 샘플 코드에서 복사합니다.
이전 단계에서 다운로드한 항목:
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc/
cp ~/assistant-sdk-python/google-assistant-sdk/actions.json .
{ "manifest": { "displayName": "Blinky light", "invocationName": "Blinky light", "category": "PRODUCTIVITY" }, "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" } } } ] } } } } ], "types": [ { "name": "$Speed", "entities": [ { "key": "SLOWLY", "synonyms": [ "slowly", "slow" ] }, { "key": "NORMALLY", "synonyms": [ "normally", "regular" ] }, { "key": "QUICKLY", "synonyms": [ "quickly", "fast", "quick" ] } ] } ] }
이전 예에서는 다음 정보를 사용하여 맞춤 기기를 정의합니다. 액션:
- 사용자 검색어와 일치시킬 패턴 (N번 깜박임)
- 일치하는 쿼리와 연결할 맞춤 기기 작업 (com.example.actions.BlinkLight) 관리 목적으로
- 기기에서 작업을 지원하는 경우 사용자에게 음성으로 제공되는 텍스트입니다. (N번 깜박임)
- 다시 전송되는 명령어 이름 (com.example.commands.BlinkLight) 기기 및 모든 매개변수 (숫자 및 가능한 경우 속도에 대한 설명)
쿼리 패턴을 정의하려면 다음에 유의하세요.
- schema.org에서 정의한 유형을 사용하여 사용할 수 있습니다.
- types [...]배열은 커스텀 유형 목록을 정의합니다 (예:- $Speed).
- 쿼리 패턴에 커스텀 유형을 사용할 수 있습니다. 사용자는 동의어를 쿼리 패턴과 일치시킵니다.
- 동의어가 일치하면 유형 인스턴스 (speed)는 다음과 같습니다. 정규화된 키 (SLOWLY)를 반환합니다. 여러 개의 항목이 있을 수 있고 다양한 속도를 지원하는 다양한 조명이 있는 경우 만들 수 있습니다
- 요청 TTS 패턴의 일부는 선택사항입니다. 예를 들어
($Speed:speed)?를 쿼리 패턴에 추가하여 이 부분을 선택사항으로 만들 수 있습니다.
- $type.raw(예:- $speed.raw) 응답 TTS가 사용자가 실제로 말한 단어로 대체됩니다.
이러한 여러 입력란에 대한 설명은 ActionPackage 문서를 참조하세요.
</ph>작업 패키지 배포
작업 패키지에서 맞춤 기기 작업을 빌드한 후 어시스턴트가 액세스할 수 있는 작업 패키지
기기에서 이 섹션의 단계를 수행할 수 있지만 더 쉬울 수도 있습니다. 개발 시스템에서 수행할 수 있습니다. 다음 명령은 실행할 수 있습니다
- gactions명령줄 도구를 다운로드합니다.
- gactions과 동일한 디렉터리에서 기존 사용자 인증 정보를 삭제합니다. 있습니다.- rm creds.data 
- gactionsCLI를 사용하여 작업 패키지를 Google에 저장합니다.- project_id를 Actions Console 프로젝트로 바꿉니다. ID- ./gactions update --action_package actions.json --project project_id 
- 이 명령어를 처음 실행하면 URL이 제공되고 로그인합니다. URL을 복사하여 브라우저에 붙여넣습니다 (모든 시스템에서 수행 가능). 페이지에 Google 계정에 로그인하라는 메시지가 표시됩니다. 서명 이전에 프로젝트를 생성한 Google 계정으로 단계를 참조하세요. 
- API의 권한 요청을 승인하면 코드가 표시됩니다. 표시됩니다(예: '4/XXXX'). 이 코드를 복사하여 터미널: - Enter the authorization code: - 승인에 성공하면 다음과 유사한 응답이 표시됩니다. 다음과 같습니다. - Your app for the Assistant for project my-devices-project was successfully updated with your actions.
- gactionsCLI를 사용하여 작업 패키지를 테스트 모드로 배포합니다. 이전에 한 번 이상 Google에 작업 패키지를 저장한 적이 있어야 합니다. 실행할 수 있습니다 테스트 모드는 사용자 계정만 사용할 수 있습니다.- ./gactions test --action_package actions.json --project project_id - 현재 작업 시뮬레이터를 사용하여 프로젝트를 테스트할 수 없습니다. 
- 작업 패키지를 업데이트하려면 - gactions update명령어를 사용합니다.
- (선택사항) 현지화된 작업 패키지를 만들 수 있습니다. 다양한 다양한 언어 및 지역을 여러 작업을 동시에 수행할 수 있습니다 
샘플 수정
기기에서 이 섹션의 단계를 실행합니다.
nano pushtotalk.py
커스텀 작업을 위한 핸들러를 추가합니다. 아래의 핸들러는 이미 추가되어 있습니다. 위의 샘플 작업 패키지의 샘플 코드로 연결됩니다.
... device_handler = device_helpers.DeviceRequestHandler(device_id) @device_handler.command('com.example.commands.BlinkLight') def blink(speed, number): logging.info('Blinking device %s times.' % number) delay = 1 if speed == "SLOWLY": delay = 2 elif speed == "QUICKLY": delay = 0.5 for i in range(int(number)): logging.info('Device is blinking.') # GPIO.output(25, 1) time.sleep(delay) # GPIO.output(25, 0) time.sleep(1)
샘플 실행
소스 코드를 실행합니다.
python pushtotalk.py
쿼리해 보세요. 위의 예에서는 다음을 시도해 보세요.
5회 깜박입니다.
쿼리는 작업 패키지의 쿼리 패턴과 일치해야 합니다.
