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
- Skopiuj repozytorium googleapis, aby uzyskać definicje interfejsu bufora protokołu dla Google Assistant Service API.
- Postępuj zgodnie z dokumentacją gRPC, aby wygenerować powiązania gRPC dla wybranego języka
- Wykonaj czynności opisane w poniższych sekcjach.
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:
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
Zainstaluj narzędzie do autoryzacji:
python -m pip install --upgrade google-auth-oauthlib[tool]
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:
- Zakres protokołu OAuth: https://www.googleapis.com/auth/assistant-sdk-prototype
Obsługiwane przepływy OAuth:
- (Zalecane) Zainstalowane aplikacje
- Aplikacje serwera WWW
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
- Zaimplementuj klienta gRPC dwukierunkowego strumieniowania dla interfejsu Google Assistant Service API.
- Poczekaj, aż użytkownik wywoła nowe żądanie (np. zaczekaj na przerwanie GPIO po naciśnięciu przycisku).
Wyślij wiadomość
AssistRequest
z ustawionym polemconfig
(patrzAssistConfig
). Upewnij się, że poleconfig
zawiera te elementy:- Pole
audio_in_config
, które określa sposób przetwarzania danychaudio_in
przekazywanych w kolejnych żądaniach (patrzAudioInConfig
). - Pole
audio_out_config
określające format, którego serwer ma używać podczas zwracania komunikatówaudio_out
(patrzAudioOutConfig
). - Pole
device_config
, które identyfikuje zarejestrowane urządzenie Asystentowi (patrzDeviceConfig
). - Pole
dialog_state_in
, które zawiera wartośćlanguage_code
powiązaną z żądaniem (patrzDialogStateIn
).
- Pole
Rozpocznij nagrywanie.
Wysyłaj kilka wychodzących wiadomości
AssistRequest
z danymi dźwiękowymi z zapytania głosowego w poluaudio_in
.Obsługuj wiadomości przychodzące
AssistResponse
.Wyodrębnianie metadanych rozmowy z wiadomości
AssistResponse
. Na przykład zdialog_state_out
pobierajconversation_state
ivolume_percentage
(patrzDialogStateOut
).Zatrzymaj nagrywanie po otrzymaniu
AssistResponse
zevent_type
o wartościEND_OF_UTTERANCE
.Odtwarzaj dźwięk odpowiedzi Asystenta z danymi dźwiękowymi pochodzącymi z pola
audio_out
.Skopiuj wcześniej wyodrębniony plik
conversation_state
i skopiuj go do wiadomościDialogStateIn
wAssistConfig
w celu następnychAssistRequest
.
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:
- Z wiadomości przychodzących
AssistResponse
wyodrębnij poledevice_action
(zobaczDeviceAction
). - 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.