어시스턴트를 프로젝트에 통합 (다른 언어)

아래 각 섹션의 안내에 따라 Google 어시스턴트를 프로젝트에 통합하세요.

gRPC 바인딩

Google 어시스턴트 서비스는 고성능 오픈소스 RPC 프레임워크인 gRPC를 기반으로 합니다. 이 프레임워크는 양방향 오디오 스트리밍에 적합합니다.

Python

Python을 사용하는 경우 이 가이드를 사용하여 시작하세요.

C++

GitHub의 C++ 샘플을 살펴봅니다.

Node.js

GitHub에서 Node.js 샘플을 살펴봅니다.

Android Things

내장 기기에 관심이 있으신가요? Android Things용 어시스턴트 SDK 샘플을 확인하세요.

다른 언어

  • googleapis 저장소를 클론하여 Google Assistant Service API의 프로토콜 버퍼 인터페이스 정의를 가져옵니다.
  • gRPC 문서에 따라 원하는 언어의 gRPC 바인딩을 생성하세요.
  • 아래 섹션의 단계를 따르세요.

어시스턴트를 사용할 수 있도록 Google 계정을 승인하고 인증합니다.

다음 단계는 기기가 Google 계정을 사용하여 Google 어시스턴트와 대화하도록 승인하는 것입니다.

어시스턴트 SDK 범위로 OAuth 토큰 가져오기

어시스턴트 SDK는 OAuth 2.0 액세스 토큰을 사용하여 기기가 어시스턴트와 연결되도록 승인합니다.

프로토타입을 제작할 때 승인 도구를 사용하면 기기 모델을 등록할 때 생성된 client_secret_<client-id>.json 파일에서 OAuth2.0 사용자 인증 정보를 쉽게 생성할 수 있습니다.

다음 단계에 따라 사용자 인증 정보를 생성합니다.

  1. Python 가상 환경을 사용하여 승인 도구와 종속 항목을 시스템 Python 패키지에서 격리합니다.

    sudo apt-get update
    sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
    python3 -m venv env
    env/bin/python -m pip install --upgrade pip setuptools wheel
    source env/bin/activate
    
  2. 승인 도구를 설치합니다.

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. 도구를 실행합니다. 기기의 터미널 (SSH 세션이 아님)에서 이를 실행하는 경우 --headless 플래그를 삭제합니다.

    google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
    

기기의 프로비저닝 메커니즘의 일부로 승인을 통합할 준비가 되면 OAuth 2.0을 사용하여 Google API에 액세스 가이드를 읽고 기기가 Assistant API와 통신할 수 있도록 OAuth 액세스 토큰을 가져오고 유지하고 사용하는 방법을 알아보세요.

이 가이드를 진행할 때 다음 사항을 사용하세요.

기기를 보호하는 방법에 관한 권장사항은 개인 정보 보호 및 보안에 관한 권장사항을 확인하세요.

OAuth 토큰으로 gRPC 연결 인증

마지막으로 Google에서 토큰 기반 인증을 사용하여 Assistant API에 대한 gRPC 연결을 인증하는 방법을 읽어봅니다.

기기 등록

수동으로 또는 등록 도구 (Python에서 제공)를 사용하여 기기 모델과 인스턴스를 등록합니다.

어시스턴트로 기본 대화 대화상자 구현하기

  1. Google Assistant Service API를 위한 양방향 스트리밍 gRPC 클라이언트를 구현합니다.
  2. 사용자가 새 요청을 트리거할 때까지 기다립니다 (예: 버튼 누르기로 인한 GPIO 인터럽트 대기).
  3. config 필드가 설정된 AssistRequest 메시지를 전송합니다 (AssistConfig 참고). config 필드에 다음이 포함되어 있는지 확인합니다.

    • audio_in_config 필드: 후속 요청에 제공될 audio_in 데이터를 처리하는 방법을 지정합니다(AudioInConfig 참고).
    • audio_out_config 필드: 서버에서 audio_out 메시지를 반환할 때 사용할 원하는 형식을 지정합니다 (AudioOutConfig 참고).
    • 어시스턴트에 등록된 기기를 식별하는 device_config 필드 (DeviceConfig 참고).
    • dialog_state_in 필드: 요청과 연결된 language_code를 포함합니다 (DialogStateIn 참고).
  4. 녹화를 시작합니다.

  5. audio_in 필드에 음성 쿼리의 오디오 데이터와 함께 발신 AssistRequest 메시지 여러 개를 보냅니다.

  6. 수신 AssistResponse 메시지를 처리합니다.

  7. AssistResponse 메시지에서 대화 메타데이터를 추출합니다. 예를 들어 dialog_state_out에서 conversation_statevolume_percentage를 가져옵니다 (DialogStateOut 참고).

  8. END_OF_UTTERANCEevent_typeAssistResponse를 수신하면 녹화를 중지합니다.

  9. audio_out 필드에서 오는 오디오 데이터를 사용하여 어시스턴트 답변의 오디오를 재생합니다.

  10. 앞에서 추출한 conversation_state를 가져와 다음 AssistRequestAssistConfigDialogStateIn 메시지에 복사합니다.

이제 기기를 통해 Google 어시스턴트에 첫 번째 요청을 할 준비가 되었습니다.

기기 작업으로 대화 대화상자 확장

위의 기본 대화 대화상자를 확장하여 특정 기기의 고유한 하드웨어 기능을 트리거합니다.

  1. 수신 AssistResponse 메시지에서 device_action 필드를 추출합니다 (DeviceAction 참고).
  2. device_request_json 필드의 JSON 페이로드를 파싱합니다. 지원되는 trait 목록은 기기 특성 페이지를 참고하세요. 각 특성 스키마 페이지에는 JSON 페이로드로 반환되는 기기 명령어와 매개변수가 포함된 샘플 EXECUTE 요청이 표시됩니다.

사용자 요청의 스크립트 가져오기

기기에 디스플레이가 연결되어 있으면 디스플레이를 사용하여 사용자 요청을 표시하는 것이 좋습니다. 이 스크립트를 가져오려면 AssistResponse 메시지의 speech_results 필드를 파싱합니다. 음성 인식이 완료되면 이 목록에 stability이 1.0으로 설정된 항목 하나가 포함됩니다.

어시스턴트 응답의 텍스트 또는 시각적 렌더링 가져오기

기기에 디스플레이가 연결되어 있으면 이를 사용하여 사용자 요청에 대한 어시스턴트의 일반 텍스트 응답을 표시하는 것이 좋습니다. 이 텍스트는 DialogStateOut.supplemental_display_text 필드에 있습니다.

어시스턴트는 특정 쿼리 (마운틴 뷰 날씨 또는 지금 몇 시야?)에 HTML5를 통한 시각적 응답을 지원합니다. 사용 설정하려면 AssistConfig에서 screen_out_config 필드를 설정하세요. ScreenOutConfig 메시지에는 PLAYING로 설정해야 하는 screen_mode 필드가 있습니다.

그러면 AssistResponse 메시지에 screen_out 필드가 설정됩니다. data 필드에서 HTML5 데이터 (있는 경우)를 추출할 수 있습니다.

텍스트 입력을 통한 쿼리 제출

기기에 텍스트 인터페이스 (예: 키보드)가 연결되어 있는 경우 config 필드에서 text_query 필드를 설정합니다 (AssistConfig 참고). audio_in_config 필드는 설정하지 마세요.

문제 해결

문제가 발생하면 문제 해결 페이지를 참조하세요.