Assistant in Ihr Projekt einbinden (andere Sprachen)

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:

  1. 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
    
  2. Installieren Sie das Autorisierungstool:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. 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:

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

  1. Implementieren Sie einen bidirektionalen gRPC-Streaming-Client für die Google Assistant Service API.
  2. Warten Sie, bis der Nutzer eine neue Anfrage auslöst (z.B. auf eine GPIO-Unterbrechung durch Drücken einer Schaltfläche).
  3. Senden Sie eine AssistRequest-Nachricht, bei der das Feld config festgelegt ist (siehe AssistConfig). Achten Sie darauf, dass das Feld config Folgendes enthält:

    • Das Feld audio_in_config, das angibt, wie die audio_in-Daten verarbeitet werden, die in nachfolgenden Anfragen bereitgestellt werden (siehe AudioInConfig).
    • Das Feld audio_out_config, das das gewünschte Format für den Server angibt, wenn er audio_out-Nachrichten zurückgibt (siehe AudioOutConfig).
    • Das Feld device_config, das das registrierte Gerät für Assistant identifiziert (siehe DeviceConfig).
    • Das Feld dialog_state_in, das den mit der Anfrage verknüpften language_code enthält (siehe DialogStateIn).
  4. Aufnahme starten.

  5. Senden Sie mehrere ausgehende AssistRequest-Nachrichten mit Audiodaten aus der gesprochenen Abfrage im Feld audio_in.

  6. Eingehende AssistResponse-Nachrichten verarbeiten.

  7. Extrahieren Sie die Metadaten der Unterhaltung aus der AssistResponse-Nachricht. Rufen Sie beispielsweise aus dialog_state_out conversation_state und volume_percentage ab (siehe DialogStateOut).

  8. Die Aufzeichnung wird beendet, wenn ein AssistResponse mit dem event_type-Wert END_OF_UTTERANCE empfangen wird.

  9. Geben Sie Audiodaten aus der Assistant-Antwort mit Audiodaten aus dem Feld audio_out wieder.

  10. Kopieren Sie die zuvor extrahierte conversation_state in die Nachricht DialogStateIn in AssistConfig für die nächste AssistRequest.

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:

  1. Extrahieren Sie in den eingehenden AssistResponse-Nachrichten das Feld device_action (siehe DeviceAction).
  2. 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.