Folgen Sie der Anleitung in den einzelnen Abschnitten unten, um Google Assistant in Ihr Projekt zu integrieren.
gRPC-Bindungen
Der Google Assistant-Dienst basiert auf gRPC, einem leistungsstarken Open-Source-RPC-Framework. Dieses Framework eignet sich gut für bidirektionales Audiostreaming.
Python
Wenn Sie mit Python arbeiten, beginnen Sie mit dieser Anleitung.
C++
Sehen Sie sich unser C++-Beispiel auf GitHub an.
Node.js
Sehen Sie sich unser Node.js-Beispiel auf GitHub an.
Android Things
Interessiert an eingebetteten Geräten? Sehen Sie sich das Beispiel für das Assistant SDK für Android Things an.
Weitere Sprachen
- Klonen Sie das googleapis-Repository, um die Protokollzwischenspeicher-Schnittstellendefinitionen für die Google Assistant Service API abzurufen.
- Folgen Sie der gRPC-Dokumentation, um gRPC-Bindungen für die Sprache Ihrer Wahl zu generieren.
- Führen Sie dazu die Schritte in den folgenden Abschnitten aus.
Google-Konto autorisieren und authentifizieren, um mit Assistant zu arbeiten
Als Nächstes musst du dein Gerät autorisieren, über dein Google-Konto mit Google Assistant zu sprechen.
OAuth-Tokens mit dem Assistant SDK-Bereich abrufen
Das Assistant SDK verwendet OAuth 2.0-Zugriffstokens, um dein Gerät für die Verbindung mit Assistant zu autorisieren.
Beim Prototyping können Sie mit dem Autorisierungstool ganz einfach OAuth2.0-Anmeldedaten aus der Datei client_secret_<client-id>.json
generieren, die bei der Registrierung Ihres Gerätemodells generiert wurde.
So generieren Sie die Anmeldedaten:
Verwenden Sie eine virtuelle Python-Umgebung, um das Autorisierungstool und seine Abhängigkeiten von den Python-Systempaketen zu isolieren.
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
Installieren Sie das Autorisierungstool:
python -m pip install --upgrade google-auth-oauthlib[tool]
Führen Sie das Tool aus. Entfernen Sie das Flag
--headless
, wenn Sie den Befehl über ein Terminal auf dem Gerät (keine SSH-Sitzung) ausführen:google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
Wenn du bereit bist, die Autorisierung als Teil des Bereitstellungsmechanismus deines Geräts zu integrieren, lies unsere Leitfäden unter OAuth 2.0 für den Zugriff auf Google APIs verwenden. Darin erfährst du, wie du OAuth-Zugriffstokens erhältst, beibehalten und verwendest, damit dein Gerät mit der Assistant API kommunizieren kann.
Beachten Sie beim Durcharbeiten dieser Anleitungen Folgendes:
- OAuth-Bereich: https://www.googleapis.com/auth/assistant-sdk-prototype
Unterstützte OAuth-Abläufe:
- (Empfohlen) Installierte Apps
- Webserveranwendungen
In den Best Practices zu Datenschutz und Sicherheit findest du Empfehlungen zur Sicherheit deines Geräts.
gRPC-Verbindung mit OAuth-Tokens authentifizieren
Führen Sie schließlich alle Teile zusammen. Lesen Sie dazu, wie Sie die tokenbasierte Authentifizierung mit Google verwenden, um die gRPC-Verbindung zur Assistant API zu authentifizieren.
Gerät registrieren
Registrieren Sie das Gerätemodell und die Instanz entweder manuell oder mit dem Registrierungstool (in Python verfügbar).
Einfachen Unterhaltungsdialog mit Assistant implementieren
- Implementieren Sie einen bidirektionalen gRPC-Streaming-Client für die Google Assistant Service API.
- Warten Sie, bis der Nutzer eine neue Anfrage auslöst (z.B. auf eine GPIO-Unterbrechung durch Drücken einer Schaltfläche).
Senden Sie eine
AssistRequest
-Nachricht, bei der das Feldconfig
festgelegt ist (sieheAssistConfig
). Achten Sie darauf, dass das Feldconfig
Folgendes enthält:- Das Feld
audio_in_config
, das angibt, wie dieaudio_in
-Daten verarbeitet werden, die in nachfolgenden Anfragen bereitgestellt werden (sieheAudioInConfig
). - Das Feld
audio_out_config
, das das gewünschte Format für den Server angibt, wenn eraudio_out
-Nachrichten zurückgibt (sieheAudioOutConfig
). - Das Feld
device_config
, das das registrierte Gerät für Assistant identifiziert (sieheDeviceConfig
). - Das Feld
dialog_state_in
, das den mit der Anfrage verknüpftenlanguage_code
enthält (sieheDialogStateIn
).
- Das Feld
Aufnahme starten.
Senden Sie mehrere ausgehende
AssistRequest
-Nachrichten mit Audiodaten aus der gesprochenen Abfrage im Feldaudio_in
.Eingehende
AssistResponse
-Nachrichten verarbeiten.Extrahieren Sie die Metadaten der Unterhaltung aus der
AssistResponse
-Nachricht. Rufen Sie beispielsweise ausdialog_state_out
conversation_state
undvolume_percentage
ab (sieheDialogStateOut
).Die Aufzeichnung wird beendet, wenn ein
AssistResponse
mit demevent_type
-WertEND_OF_UTTERANCE
empfangen wird.Geben Sie Audiodaten aus der Assistant-Antwort mit Audiodaten aus dem Feld
audio_out
wieder.Kopieren Sie die zuvor extrahierte
conversation_state
in die NachrichtDialogStateIn
inAssistConfig
für die nächsteAssistRequest
.
Jetzt sollten Sie die ersten Anfragen über Ihr Gerät an Google Assistant senden können.
Unterhaltungsdialogfeld mit Geräteaktionen erweitern
Erweitern Sie das obige Dialogfeld für die einfache Unterhaltung, um die speziellen Hardwarefunktionen Ihres Geräts auszulösen:
- Extrahieren Sie in den eingehenden
AssistResponse
-Nachrichten das Felddevice_action
(sieheDeviceAction
). - Parst die JSON-Nutzlast des Felds
device_request_json
. Eine Liste der unterstützten Eigenschaften finden Sie auf der Seite Geräte-Traits. Jede Seite mit dem Trait-Schema zeigt eine EXECUTE-Beispielanfrage mit den Gerätebefehlen und -parametern, die in der JSON-Nutzlast zurückgegeben werden.
Transkript der Nutzeranfrage abrufen
Wenn Sie ein Display an das Gerät angeschlossen haben, können Sie es verwenden, um die Nutzeranfrage anzuzeigen. Dieses Transkript erhalten Sie, wenn Sie das Feld speech_results
in den AssistResponse
-Nachrichten parsen. Nach Abschluss der Spracherkennung enthält diese Liste ein Element mit einem stability
-Wert von 1, 0.
Text und/oder visuelle Darstellung der Assistant-Antwort abrufen
Wenn Sie ein Display an das Gerät angeschlossen haben, können Sie es verwenden, um die Nur-Text-Antwort von Assistant auf die Anfrage des Nutzers anzuzeigen. Dieser Text befindet sich im Feld DialogStateOut.supplemental_display_text
.
Assistant unterstützt in HTML5 visuelle Antworten auf bestimmte Anfragen (Wie ist das Wetter in Mountain View? oder Wie spät ist es?). Legen Sie dazu in AssistConfig
das Feld screen_out_config
fest.
Die Nachricht ScreenOutConfig
enthält das Feld screen_mode
, das auf PLAYING
festgelegt werden sollte.
Für die AssistResponse
-Nachrichten ist dann das Feld screen_out
festgelegt. Sie können die HTML5-Daten (falls vorhanden) aus dem Feld data
extrahieren.
Abfragen per Texteingabe senden
Wenn Sie eine Textschnittstelle (z. B. eine Tastatur) an das Gerät angeschlossen haben, legen Sie das Feld text_query
im Feld config
fest (siehe AssistConfig
). Geben Sie nicht das Feld audio_in_config
an.
Fehlerbehebung
Falls Probleme auftreten, lesen Sie die Seite Fehlerbehebung.