Integracja Asystenta z projektem (inne języki)

Aby zintegrować Asystenta Google ze swoim projektem, postępuj zgodnie z instrukcjami w poniższych sekcjach.

Powiązania gRPC

Usługa Asystenta Google opiera się na gRPC, wysokiej wydajności platformy RPC typu open source. Platforma ta dobrze sprawdza się w dwukierunkowej transmisji audio.

Python

Jeśli używasz Pythona, zacznij od skorzystania z tego przewodnika.

C++

Zajrzyj do naszego przykładu C++ na GitHubie.

Node.js

Zapoznaj się z naszym przykładem Node.js na GitHubie.

Android Things

Interesują Cię urządzenia wbudowane? Zapoznaj się z przykładem pakietu SDK Asystenta na Androidzie.

Inne języki

Aby móc używać Asystenta, autoryzuj i uwierzytelniaj swoje konto Google

Następnym krokiem jest autoryzacja urządzenia do komunikacji z Asystentem Google przy użyciu Twojego konta Google.

Uzyskiwanie tokenów OAuth z zakresem pakietu SDK Asystenta

Pakiet SDK Asystenta używa tokenów dostępu OAuth 2.0 do autoryzacji urządzenia do łączenia się z Asystentem.

Podczas tworzenia prototypu możesz użyć narzędzia do autoryzacji, aby z łatwością wygenerować dane uwierzytelniające protokołu OAuth2.0 z pliku client_secret_<client-id>.json wygenerowanego podczas rejestrowania modelu urządzenia.

Aby wygenerować dane logowania:

  1. Użyj środowiska wirtualnego Pythona, aby odizolować narzędzie do autoryzacji i jego zależności od systemowych pakietów Pythona.

    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. Zainstaluj narzędzie do autoryzacji:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. Uruchom narzędzie. Usuń flagę --headless, jeśli uruchamiasz tę aplikację z terminala na urządzeniu (nie z sesji SSH):

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

Jeśli zechcesz zintegrować autoryzację w ramach mechanizmu obsługi administracyjnej urządzenia, przeczytaj nasze przewodniki na temat używania protokołu OAuth 2.0 do uzyskiwania dostępu do interfejsów API Google, aby dowiedzieć się, jak uzyskiwać, zachowywać i używać tokenów dostępu OAuth, aby umożliwić urządzeniu komunikowanie się z interfejsem Assistant API.

Podczas pracy z tymi przewodnikami korzystaj z następujących wskazówek:

Zapoznaj się ze sprawdzonymi metodami dotyczącymi prywatności i bezpieczeństwa, aby poznać zalecenia dotyczące zabezpieczania urządzenia.

Uwierzytelniaj połączenie gRPC za pomocą tokenów OAuth

Na koniec połącz wszystkie elementy w artykule o używaniu uwierzytelniania za pomocą tokenów w Google do uwierzytelniania połączenia gRPC z interfejsem Assistant API.

Zarejestruj swoje urządzenie

Zarejestruj model urządzenia i instancję ręcznie lub za pomocą narzędzia do rejestracji (dostępnego w Pythonie).

Wdrażanie podstawowego okna rozmowy z Asystentem

  1. Zaimplementuj klienta gRPC dwukierunkowego strumieniowania dla interfejsu Google Assistant Service API.
  2. Poczekaj, aż użytkownik wywoła nowe żądanie (np. zaczekaj na przerwanie GPIO po naciśnięciu przycisku).
  3. Wyślij wiadomość AssistRequest z ustawionym polem config (patrz AssistConfig). Upewnij się, że pole config zawiera te elementy:

    • Pole audio_in_config, które określa sposób przetwarzania danych audio_in przekazywanych w kolejnych żądaniach (patrz AudioInConfig).
    • Pole audio_out_config określające format, którego serwer ma używać podczas zwracania komunikatów audio_out (patrz AudioOutConfig).
    • Pole device_config, które identyfikuje zarejestrowane urządzenie Asystentowi (patrz DeviceConfig).
    • Pole dialog_state_in, które zawiera wartość language_code powiązaną z żądaniem (patrz DialogStateIn).
  4. Rozpocznij nagrywanie.

  5. Wysyłaj kilka wychodzących wiadomości AssistRequest z danymi dźwiękowymi z zapytania głosowego w polu audio_in.

  6. Obsługuj wiadomości przychodzące AssistResponse.

  7. Wyodrębnianie metadanych rozmowy z wiadomości AssistResponse. Na przykład z dialog_state_out pobieraj conversation_state i volume_percentage (patrz DialogStateOut).

  8. Zatrzymaj nagrywanie po otrzymaniu AssistResponse z event_type o wartości END_OF_UTTERANCE.

  9. Odtwarzaj dźwięk odpowiedzi Asystenta z danymi dźwiękowymi pochodzącymi z pola audio_out.

  10. Skopiuj wcześniej wyodrębniony plik conversation_state i skopiuj go do wiadomości DialogStateIn w AssistConfig w celu następnych AssistRequest.

Po wykonaniu tych czynności możesz już wysyłać pierwsze prośby do Asystenta Google na swoim urządzeniu.

Rozszerzanie okna rozmowy za pomocą Działań na urządzeniu

Rozszerz podstawowe okno rozmowy powyżej, aby włączyć unikalne możliwości sprzętowe danego urządzenia:

  1. Z wiadomości przychodzących AssistResponse wyodrębnij pole device_action (zobacz DeviceAction).
  2. Przeanalizuj ładunek JSON w polu device_request_json. Lista obsługiwanych cech znajdziesz na stronie cechy urządzenia. Każda strona schematu cech pokazuje przykładowe żądanie EXECUTE z poleceniami urządzenia i parametrami zwracanymi w ładunku JSON.

Pobierz transkrypcję prośby użytkownika

Jeśli do urządzenia jest podłączony wyświetlacz, możesz użyć go, aby wyświetlić prośbę użytkownika. Aby uzyskać tę transkrypcję, przeanalizuj pole speech_results w wiadomościach AssistResponse. Po zakończeniu rozpoznawania mowy lista będzie zawierać jeden element z wartością stability ustawioną na 1, 0.

Pobierz tekst lub wizualne renderowanie odpowiedzi Asystenta

Jeśli do urządzenia jest podłączony wyświetlacz, możesz użyć go, aby wyświetlić odpowiedź Asystenta w postaci zwykłego tekstu na prośbę użytkownika. Znajduje się on w polu DialogStateOut.supplemental_display_text.

Na niektóre zapytania Asystent obsługuje odpowiedzi wizualne za pomocą HTML5 (Jaka jest pogoda w Warszawie? lub Która jest godzina?). Aby to włączyć, ustaw pole screen_out_config w AssistConfig. Wiadomość ScreenOutConfig zawiera pole screen_mode, w którym należy ustawić wartość PLAYING.

Wiadomości AssistResponse będą miały ustawione pole screen_out. Możesz wyodrębnić dane HTML5 (jeśli są dostępne) z pola data.

Przesyłanie zapytań za pomocą funkcji wprowadzania tekstu

Jeśli do urządzenia jest podłączony interfejs tekstowy (np. klawiatura), skonfiguruj pole text_query w polu config (patrz AssistConfig). Nie ustawiaj pola audio_in_config.

Rozwiązywanie problemów

Jeśli napotkasz jakieś problemy, wejdź na stronę Rozwiązywanie problemów.