Asistan'ı Projenize Entegre Edin (Diğer Diller)

Google Asistan'ı projenize entegre etmek için aşağıdaki bölümlerde yer alan talimatları izleyin.

gRPC bağlamaları

Google Asistan Hizmeti, yüksek performanslı ve açık kaynaklı bir RPC çerçevesi olan gRPC'yi temel alır. Bu çerçeve, çift yönlü ses akışı için uygundur.

Python

Python kullanıyorsanız bu kılavuzu inceleyerek başlayın.

C++

GitHub'daki C++ örneğimize göz atın.

Node.js

GitHub'daki Node.js örneğimize göz atın.

Android Things

Yerleşik cihazlarla ilgileniyor musunuz? Android Things için Asistan SDK'sı örneğine göz atın.

Diğer diller

Asistan'la çalışmak için Google Hesabınızı yetkilendirin ve doğrulayın

Bir sonraki adım, Google Hesabınızı kullanarak Google Asistan'la konuşmak için cihazınızı yetkilendirmektir.

Asistan SDK kapsamıyla OAuth jetonları edinme

Asistan SDK'sı, cihazınızı Asistan'a bağlanacak şekilde yetkilendirmek için OAuth 2.0 erişim jetonlarını kullanır.

Prototip oluştururken, cihaz modelinizi kaydederken oluşturulan client_secret_<client-id>.json dosyasından OAuth2.0 kimlik bilgilerini kolayca oluşturmak için yetkilendirme aracını kullanabilirsiniz.

Kimlik bilgilerini oluşturmak için aşağıdakileri yapın:

  1. Yetkilendirme aracını ve bağımlılıklarını sistemdeki Python paketlerinden izole etmek için bir Python sanal ortamı kullanın.

    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. Yetkilendirme aracını yükleyin:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. Aracı çalıştırın. Bunu cihazdaki bir terminalden çalıştırıyorsanız --headless işaretini kaldırın (SSH oturumu değil):

    google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
    

Cihazınızın temel hazırlık mekanizmasının bir parçası olarak yetkilendirmeyi entegre etmeye hazır olduğunuzda, cihazınızın Assistant API ile iletişim kurmasını sağlamak amacıyla OAuth erişim jetonlarını nasıl edineceğinizi, devam ettireceğinizi ve kullanacağınızı anlamak için Google API'lerine Erişmek için OAuth 2.0'ı Kullanma kılavuzlarımızı okuyun.

Bu kılavuzlar üzerinde çalışırken aşağıdakileri kullanın:

Cihazınızın güvenliğini sağlamayla ilgili öneriler için gizlilik ve güvenlikle ilgili en iyi uygulamalara göz atın.

gRPC bağlantınızı OAuth jetonlarıyla doğrulayın

Son olarak, Assistant API'ye yönelik gRPC bağlantısının kimliğini doğrulamak için Google ile jeton tabanlı kimlik doğrulamayı nasıl kullanacağınızı okuyarak tüm parçaları bir araya getirin.

Cihazınızı kaydettirin

Cihaz modelinizi ve örneğinizi manuel olarak veya kayıt aracıyla (Python'da mevcuttur) kaydedin.

Asistan'la temel bir görüşme iletişim kutusu uygulama

  1. Google Assistant Service API için iki yönlü bir akış gRPC istemcisi uygulayın.
  2. Kullanıcının yeni bir isteği tetiklemesini bekleyin (ör. bir düğmeye basıldığında GPIO kesintisinin olmasını bekleyin).
  3. config alanı ayarlanmış bir AssistRequest iletisi gönderin (AssistConfig sayfasına bakın). config alanında şunların bulunduğundan emin olun:

    • Sonraki isteklerde sağlanacak audio_in verilerinin nasıl işleneceğini belirten audio_in_config alanı (bkz. AudioInConfig).
    • Sunucunun audio_out mesajlarını döndürdüğünde kullanması istenen biçimi belirten audio_out_config alanı (bkz. AudioOutConfig).
    • Kayıtlı cihazı Asistan'a tanımlayan device_config alanı (bkz. DeviceConfig).
    • İstekle ilişkili language_code öğesini içeren dialog_state_in alanı (bkz. DialogStateIn).
  4. Kaydı başlat.

  5. audio_in alanında sözlü sorgudan alınan ses verileriyle birden fazla giden AssistRequest mesajı gönderin.

  6. Gelen AssistResponse iletilerini işleyin.

  7. AssistResponse mesajından ileti dizisi meta verilerini çıkarın. Örneğin, dialog_state_out için conversation_state ve volume_percentage verilerini alın (bkz. DialogStateOut).

  8. END_OF_UTTERANCE değerinde event_type olan bir AssistResponse aldığınızda kaydı durdurun.

  9. audio_out alanından gelen ses verileriyle Asistan yanıtındaki sesi çalın.

  10. Daha önce ayıkladığınız conversation_state öğesini alın ve sonraki AssistRequest için AssistConfig içindeki DialogStateIn mesajına kopyalayın.

Böylece, cihazınız üzerinden Google Asistan'a ilk isteklerinizi yapmaya hazır olursunuz.

Cihaz İşlemleri ile görüşme iletişim kutusunu genişletme

Belirli cihazınızın benzersiz donanım özelliklerini tetiklemek için yukarıdaki temel görüşme iletişim kutusunu genişletin:

  1. Gelen AssistResponse mesajlarında device_action alanını çıkarın (DeviceAction bölümünü inceleyin).
  2. device_request_json alanının JSON yükünü ayrıştırın. Desteklenen özelliklerin listesi için Cihaz Özellikleri sayfasına bakın. Her özellik şeması sayfası, JSON yükünde döndürülen cihaz komutları ve parametreleriyle örnek bir EXECUTE isteğini gösterir.

Kullanıcı isteğinin transkriptini alın

Cihaza bağlı bir ekranınız varsa kullanıcı isteğini göstermek için bu ekranı kullanabilirsiniz. Bu transkripti almak için AssistResponse mesajlarındaki speech_results alanını ayrıştırın. Konuşma tanıma tamamlandığında bu liste, stability değeri 1,0 olarak ayarlanmış bir öğe içerir.

Asistan'ın yanıtının metnini ve/veya görselini alma

Cihaza bağlı bir ekranınız varsa Asistan'ın kullanıcının isteğine verdiği düz metin yanıtını göstermek için bu ekranı kullanabilirsiniz. Bu metin DialogStateOut.supplemental_display_text alanında bulunur.

Asistan, belirli sorgular için HTML5 üzerinden görsel yanıtları destekler (Mountain View'da hava nasıl? veya Saat kaç?). Bunu etkinleştirmek için AssistConfig bölümünde screen_out_config alanını ayarlayın. ScreenOutConfig mesajında PLAYING olarak ayarlanması gereken screen_mode alanı var.

Daha sonra AssistResponse mesajları için screen_out alanı ayarlanır. HTML5 verilerini (varsa) data alanından çıkarabilirsiniz.

Metin girişi üzerinden sorgu gönderme

Cihaza bağlı metin arayüzünüz (örneğin, klavye) varsa config alanında text_query alanını ayarlayın (bkz. AssistConfig). audio_in_config alanını ayarlamayın.

Sorun giderme

Sorunla karşılaşırsanız Sorun giderme sayfasına bakın.