Folgen Sie der Anleitung im jeweiligen Abschnitt unten, um Google Assistant zu integrieren in Ihr Projekt integrieren.
gRPC-Bindungen
Der Google Assistant-Dienst basiert auf gRPC, einer hohen Open-Source-RPC-Framework basiert. 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 an. auf GitHub.
Node.js
Sehen Sie sich unser Node.js-Beispiel an. auf GitHub.
Android Things
Interessiert an eingebetteten Geräten? Assistant SDK ausprobieren sample für Android Things
Andere Sprachen
- googleapis-Repository klonen um die Schnittstellendefinitionen für den Protokollzwischenspeicher für die Google Assistant Service API abzurufen.
- Folgen Sie der gRPC-Dokumentation, um gRPC zu generieren. Bindungen für die Sprache Ihrer Wahl
- Führen Sie die Schritte in den folgenden Abschnitten aus.
Google-Konto autorisieren und authentifizieren, um mit Assistant zu arbeiten
Im nächsten Schritt autorisieren Sie Ihr Gerät, mit Google Assistant zu sprechen über Ihr Google-Konto.
OAuth-Tokens mit dem Assistant SDK-Bereich abrufen
Das Assistant SDK verwendet OAuth 2.0-Zugriffstokens, um dein Gerät für Folgendes zu autorisieren: sich mit Assistant verbinden zu können.
Beim Prototyping können Sie OAuth 2.0 ganz einfach mit dem Autorisierungstool generieren.
Anmeldedaten aus der Datei client_secret_<client-id>.json
, die generiert wird, wenn
wenn du dein Gerätemodell registrierst.
So generieren Sie die Anmeldedaten:
Eine virtuelle Python-Umgebung verwenden 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 diesen Befehl über ein Terminal auf dem Gerät ausführen (keine SSH-Sitzung):google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
Wenn Sie bereit sind, die Autorisierung als Teil der Bereitstellung zu integrieren lesen Sie unsere Anleitungen unter OAuth 2.0 für den Zugriff auf Google APIs verwenden. um zu erfahren, wie Sie OAuth-Zugriffstokens um mit der Assistant API zu kommunizieren.
Beim Durcharbeiten dieser Leitfäden sollten Sie Folgendes beachten:
- OAuth-Bereich: https://www.googleapis.com/auth/assistant-sdk-prototype
Unterstützte OAuth-Abläufe:
- (Empfohlen) Installierte Apps
- Webserveranwendungen
Best Practices zu Datenschutz und Sicherheit finden Sie Empfehlungen zur Sicherung Ihres Geräts.
gRPC-Verbindung mit OAuth-Tokens authentifizieren
Kombinieren Sie nun alle Teile, indem Sie lesen, wie Sie tokenbasierte Authentifizierung bei Google authentifizieren Sie die gRPC-Verbindung zur Assistant API.
Gerät registrieren
Gerätemodell und Instanz entweder manuell registrieren oder mit dem Registrierungstool (verfügbar in Python).
Einfachen Dialog mit Assistant implementieren
- Bidirektionalen gRPC-Streaming-Client implementieren für die Google Assistant Service API.
- Warten Sie, bis der Nutzer eine neue Anfrage auslöst, z. B. auf eine GPIO-Unterbrechung. per Tastendruck).
AssistRequest
senden Nachricht mit festgelegtem Feldconfig
(sieheAssistConfig
). Das Feldconfig
muss Folgendes enthalten:- Das Feld
audio_in_config
, mit dem angegeben wird, wie deraudio_in
-Daten, die in nachfolgenden Anfragen angegeben werden (sieheAudioInConfig
). - Das Feld
audio_out_config
, das das gewünschte Format für den Server, der verwendet wird, wennaudio_out
-Nachrichten zurückgegeben werden (sieheAudioOutConfig
). - Das Feld
device_config
, das die registriertes Gerät an Assistant senden (sieheDeviceConfig
). - Das Feld
dialog_state_in
, das dielanguage_code
enthält die mit der Anfrage verknüpft sind (sieheDialogStateIn
).
- Das Feld
Aufnahme starten.
Mehrere ausgehende
AssistRequest
senden Nachrichten mit Audiodaten aus der gesprochenen Suchanfrage im Feldaudio_in
Eingehende
AssistResponse
verarbeiten Nachrichten.Konversationsmetadaten aus
AssistResponse
extrahieren angezeigt. Beispiel:conversation_state
vondialog_state_out
abrufen undvolume_percentage
(sieheDialogStateOut
).Aufzeichnung beim Empfang eines
AssistResponse
beenden mitevent_type
vonEND_OF_UTTERANCE
.Audio der Antwort von Assistant mit Audiodaten vom
audio_out
wiedergeben ein.Kopiere den zuvor extrahierten
conversation_state
. in dieDialogStateIn
Nachricht in derAssistConfig
für die nächstenAssistRequest
.
Damit sind Sie in der Lage, Ihre ersten Anfragen an das Assistant über dein Gerät nutzen.
Unterhaltungsdialogfeld mit Geräteaktionen erweitern
Maximieren Sie das einfache Unterhaltungsfenster oben, um die individuelle Hardware auszulösen. Funktionen Ihres Geräts:
- In der eingehenden
AssistResponse
Nachrichten haben, extrahieren Sie das Felddevice_action
(sieheDeviceAction
) - Parsen Sie die JSON-Nutzlast des Felds
device_request_json
. Weitere Informationen finden Sie im Geräteeigenschaften für die Liste der unterstützten Merkmale. Jede Trait-Schemaseite enthält ein Beispiel AUSFÜHREN -Anfrage mit den Gerätebefehlen und -parametern, die im JSON-Nutzlast.
Transkript der Nutzeranfrage abrufen
Wenn ein Display an das Gerät angeschlossen ist, möchten Sie es vielleicht dazu verwenden,
um die Nutzeranfrage anzuzeigen. Parsen Sie das Feld speech_results
, um dieses Transkript abzurufen
in der AssistResponse
Nachrichten. Nach Abschluss der Spracherkennung enthält diese Liste ein item.
wobei stability
auf 1,0 gesetzt ist.
Text und/oder visuelle Darstellung der Assistant-Antwort abrufen
Wenn ein Display an das Gerät angeschlossen ist, möchten Sie es vielleicht dazu verwenden,
zeigt die reine Textantwort von Assistant auf die Anfrage des Nutzers an. Dieser Text befindet sich
in der DialogStateOut.supplemental_display_text
ein.
Assistant unterstützt visuelle Antworten über HTML5 auf bestimmte Anfragen (Welche
ist das Wetter in Mountain View? oder Wie spät ist es?). Um dies zu aktivieren, legen Sie
das Feld screen_out_config
in AssistConfig
Die ScreenOutConfig
Die Nachricht enthält das Feld screen_mode
, das auf PLAYING
gesetzt werden sollte.
Die AssistResponse
Für Nachrichten ist das Feld screen_out
festgelegt. Sie können die HTML5-Daten (falls vorhanden) aus dem
data
-Feld.
Abfragen über Texteingabe senden
Wenn eine Textoberfläche (z. B. eine Tastatur) an das Gerät angeschlossen ist,
Legen Sie das Feld text_query
im Feld config
fest (siehe AssistConfig
).
Legen Sie nicht das Feld audio_in_config
fest.
Fehlerbehebung
Weitere Informationen zur Fehlerbehebung falls Probleme auftreten.