Postępuj zgodnie z instrukcjami w poniższych sekcjach, aby zintegrować Asystenta Google. do swojego projektu.
Powiązania gRPC
Usługa Asystenta Google jest oparta na gRPC, czyli platformy RPC open source. Ten schemat świetnie nadaje się dla dwukierunkowe strumieniowanie dźwięku.
Python
Jeśli używasz Pythona, zacznij od zapoznania się z tym przewodnikiem.
C++
Spójrz na naszą próbkę w C++. w GitHubie.
Node.js
Przyjrzyj się przykładowi Node.js. w GitHubie.
Android Things
Interesują Cię urządzenia osadzone? Sprawdź pakiet SDK Asystenta sample dla Informacje o Androidzie.
Inne języki
- Klonowanie repozytorium googleapis , aby pobrać definicje interfejsu bufora protokołu dla interfejsu Google Assistant Service API.
- Aby wygenerować gRPC, postępuj zgodnie z dokumentacją gRPC. powiązania dla wybranego języka;
- Postępuj zgodnie z instrukcjami w sekcjach poniżej.
Aby korzystać z Asystenta na koncie Google, musisz je autoryzować i uwierzytelnić
Następnym krokiem jest autoryzację urządzenia do rozmów z Asystentem Google za pomocą konta Google.
Uzyskiwanie tokenów OAuth za pomocą zakresu pakietu SDK Asystenta
Pakiet SDK Asystenta używa tokenów dostępu OAuth 2.0 do autoryzowania urządzenia połączyć się z Asystentem.
Podczas tworzenia prototypu możesz korzystać z narzędzia do autoryzacji, aby łatwo wygenerować protokół OAuth2.0.
dane logowania z pliku client_secret_<client-id>.json
wygenerowanego podczas
rejestrując model urządzenia.
Aby wygenerować dane logowania, wykonaj te czynności:
Użyj środowiska wirtualnego w języku Python. w celu odizolowania narzędzia 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 ją w terminalu na urządzeniu (a nie w 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
Gdy wszystko będzie gotowe do zintegrowania autoryzacji w ramach obsługi administracyjnej swojego urządzenia, przeczytaj przewodniki Korzystanie z OAuth 2.0 w celu uzyskiwania dostępu do interfejsów API Google na temat uzyskiwania, zachowywania i używania tokenów dostępu OAuth do zezwalania na którym chcesz rozmawiać z interfejsem API Asystenta.
W tych przewodnikach pomogą Ci te wskazówki:
- Zakres protokołu OAuth: https://www.googleapis.com/auth/assistant-sdk-prototype
Obsługiwane przepływy OAuth:
- (Zalecane) Zainstalowane aplikacje
- Aplikacje serwerów WWW
Zapoznaj się ze sprawdzonymi metodami dotyczącymi prywatności i bezpieczeństwa .
Uwierzytelnianie połączenia gRPC za pomocą tokenów OAuth
Na koniec poczytaj o tym, jak używać tokenów uwierzytelnienie przy użyciu Google, uwierzytelniać połączenie gRPC w interfejsie Asystenta API.
Zarejestruj swoje urządzenie
Zarejestruj model urządzenia i instancję ręcznie. lub za pomocą narzędzia do rejestracji (dostępnego w Pythonie).
Wdróż podstawowe okno rozmowy z Asystentem
- Zaimplementuj klienta gRPC dwukierunkowego strumieniowego przesyłania danych. dla interfejsu Google Assistant Service API.
- Poczekaj, aż użytkownik wywoła nowe żądanie (np. poczekaj na przerwanie działania GPIO po naciśnięciu przycisku).
Wyślij
AssistRequest
wiadomość z ustawionym polemconfig
(patrzAssistConfig
). Upewnij się, że poleconfig
zawiera te dane:- Pole
audio_in_config
, które określa sposób przetwarzania Dane z kategoriiaudio_in
, które zostaną przekazane w kolejnych prośbach (zobaczAudioInConfig
). - Pole
audio_out_config
, które określa wymagany format dla używany do zwrócenia komunikatówaudio_out
(patrzAudioOutConfig
). - Pole
device_config
, które określa zarejestrowane urządzenie w Asystencie (patrzDeviceConfig
). - Pole
dialog_state_in
, które zawieralanguage_code
powiązane z żądaniem (patrz:DialogStateIn
).
- Pole
Rozpocznij nagrywanie.
Wysyłaj wiele wiadomości wychodzących
AssistRequest
wiadomości z danymi dźwiękowymi z zapytania głosowego w poluaudio_in
.Obsługa wiadomości przychodzących
AssistResponse
wiadomości.Wyodrębnianie metadanych rozmów z:
AssistResponse
. Na przykład z witrynydialog_state_out
pobierzconversation_state
ivolume_percentage
(patrzDialogStateOut
).Zatrzymaj nagrywanie po otrzymaniu
AssistResponse
zevent_type
zEND_OF_UTTERANCE
.Odtwarzaj dźwięk odpowiedzi Asystenta z danymi z urządzenia
audio_out
.Skopiuj wyodrębniony wcześniej plik
conversation_state
wDialogStateIn
wiadomość wAssistConfig
dla następnej wiadomościAssistRequest
.
Teraz możesz już wysyłać pierwsze prośby do Google Asystenta na urządzeniu.
Rozszerz okno rozmowy o działania na urządzeniu
Rozszerz podstawowe okno rozmowy, aby aktywować unikalny sprzęt możliwości Twojego urządzenia:
- W wiadomościach przychodzących
AssistResponse
wiadomości, wyodrębnij poledevice_action
(patrzDeviceAction
). - Przeanalizuj ładunek JSON pola
device_request_json
. Zapoznaj się z na stronie Charakterystyka urządzeń dla: na liście obsługiwanych cech. Na każdej stronie schematu cech widać przykładową funkcję EXECUTE z poleceniami urządzenia i parametrami zwróconymi w Ładunek JSON.
Pobierz transkrypcję żądania użytkownika
Jeśli do urządzenia jest podłączony wyświetlacz, możesz go używać do:
do wyświetlania żądania użytkownika. Aby uzyskać tę transkrypcję, przeanalizuj pole speech_results
w AssistResponse
wiadomości. Gdy rozpoznawanie mowy zakończy działanie, ta lista będzie zawierać jeden element.
z wartością stability
ustawioną na 1,0.
Uzyskaj tekst lub obraz odpowiedzi Asystenta
Jeśli do urządzenia jest podłączony ekran, możesz go używać do:
w postaci tekstowej odpowiedzi Asystenta na zapytanie użytkownika. Ten tekst znajduje się
w DialogStateOut.supplemental_display_text
.
Na niektóre zapytania Asystent obsługuje odpowiedzi wizualne w HTML5 (Co
jaka jest pogoda w Warszawie? lub Która jest godzina?). Aby włączyć tę funkcję, ustaw
w polu screen_out_config
w AssistConfig
.
ScreenOutConfig
wiadomość ma pole screen_mode
, które powinno być ustawione na PLAYING
.
AssistResponse
wiadomości będą miały ustawione pole screen_out
. Dane HTML5 (jeśli są dostępne) możesz wyodrębnić z
data
.
Przesyłanie zapytań za pomocą wprowadzania tekstu
Jeśli do urządzenia jest podłączony interfejs tekstowy (np. klawiatura),
ustaw pole text_query
w polu config
(patrz AssistConfig
).
Nie ustawiaj pola audio_in_config
.
Rozwiązywanie problemów
Zobacz Rozwiązywanie problemów w razie problemów.