Akıllı ev işlemlerinin nasıl geliştirileceğini öğrenmek için yeni adres olan Google Home Geliştirici Merkezi'ne hoş geldiniz. Not: Actions Console'da işlem oluşturmaya devam edersiniz.

Senkronizasyon İste

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Senkronizasyon İsteğinde Bulunma, ilişkilendirilmiş agentUserId öğesine sahip (ilk SYNC isteğinde gönderdiğiniz) cihazlara sahip tüm Google kullanıcıları için karşılamanıza bir SYNC isteği tetikler. Bu, kullanıcıların hesaplarını kaldırmadan ve yeniden bağlamadan cihazlarını güncellemenize olanak tanır. Bu tanımlayıcıya bağlı tüm kullanıcılar SYNC isteği alır.

Bir SYNC isteğini tetiklemeniz gerekir:

  • Kullanıcı yeni bir cihaz eklerse.
  • Kullanıcı mevcut bir cihazı kaldırırsa.
  • Kullanıcı mevcut bir cihazı yeniden adlandırdıysa.
  • Yeni bir cihaz türü uyguluyorsanız özelliği girin veya yeni bir cihaz özelliği ekleyin.

Başlarken

Senkronizasyon İsteği'ni uygulamak için aşağıdaki adımları izleyin:

Google HomeGraph API'yi etkinleştirme

  1. Google Cloud Platform Console'da HomeGraph API sayfasına gidin.

    HomeGraph API sayfasına gidin
  2. Akıllı ev proje kimliğinizle eşleşen projeyi seçin.
  3. ETKİNLEŞTİR'i tıklayın.

Hizmet Hesabı Anahtarı Oluşturma

GCP Console'dan hizmet hesabı anahtarı oluşturmak için aşağıdaki talimatları uygulayın:

Not: Bu adımları gerçekleştirirken doğru GCP projesini kullandığınızdan emin olun. Bu, akıllı ev proje kimliğinizle eşleşen projedir.
  1. GCP Console'da Hizmet hesabı anahtarı oluşturma sayfasına gidin.

    Hizmet Hesabı Anahtarı Oluşturma sayfasına git
  2. Service account (Hizmet hesabı) listesinden New service account'u (Yeni hizmet hesabı) seçin.
  3. Hizmet hesabı adı alanına bir ad girin.
  4. Service account ID (Hizmet hesabı kimliği) alanına bir kimlik girin.
  5. Rol listesinden Hizmet Hesapları > Hizmet Hesabı Jeton Oluşturucu'yu seçin.

  6. Anahtar türü olarak JSON seçeneğini belirleyin.

  7. Oluştur'u tıklayın. Bilgisayarınıza indirilen anahtarlarınızı içeren bir JSON dosyası.

API'ye çağrıda bulunun

HTTP

Home Graph API'si bir HTTP uç noktası sağlar

  1. İndirilen hizmet hesabı JSON dosyasını kullanarak bir JSON Web Token (JWT) oluşturun. Daha fazla bilgi için Hizmet Hesabı Kullanarak Kimlik Doğrulama bölümüne bakın.
  2. oauth2l kullanarak https://www.googleapis.com/auth/homegraph kapsamıyla bir OAuth 2.0 erişim jetonu alın:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId ile JSON isteği oluşturun. Senkronizasyon Senkronizasyonu için örnek bir JSON isteği şöyledir:
  5. {
      "agentUserId": "user-123"
    }
    
  6. Sync Sync JSON dosyasını ve HTTP POST isteğinizdeki jetonu Google Home Graph uç noktasıyla birleştirin. Test olarak curl kullanarak komut satırında nasıl istekte bulunulacağına dair bir örneği aşağıda bulabilirsiniz:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:requestSync"
    

gRPC

Home Graph API'si bir gTB uç noktası sağlar

  1. Home Graph API için protokol arabellekleri hizmet tanımını alın.
  2. Desteklenen dillerden biri için istemci taslakları oluşturmak üzere gTB geliştirici belgelerini uygulayın.
  3. RequestSync yöntemini çağırın.

Node.js

Google API'leri Node.js İstemcisi, Home Graph API için bağlamalar sağlar.

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak google.homegraph hizmetini başlatın.
  2. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. Boş bir RequestSyncDevicesResponse içeren bir Promise döndürür.
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.requestSync({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    async: false
  }
});
    

Java

Java için HomeGraph API İstemci Kitaplığı, Home Graph API için bağlamalar sağlar.

  1. Uygulama Varsayılan Kimlik Bilgilerini kullanarak HomeGraphApiService'i başlatın.
  2. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. Boş bir ReportStateAndNotificationResponse döndürür.
// Get Application Default credentials.
GoogleCredentials credentials =
    GoogleCredentials.getApplicationDefault()
        .createScoped(List.of("https://www.googleapis.com/auth/homegraph"));

// Create Home Graph service client.
HomeGraphService homegraphService =
    new HomeGraphService.Builder(
            GoogleNetHttpTransport.newTrustedTransport(),
            GsonFactory.getDefaultInstance(),
            new HttpCredentialsAdapter(credentials))
        .setApplicationName("HomeGraphExample/1.0")
        .build();

// Request sync.
RequestSyncDevicesRequest request =
    new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false);
homegraphService.devices().requestSync(request);
    

Hata yanıtları

Senkronizasyon İsteğinde bulunurken aşağıdaki hata yanıtlarından birini alabilirsiniz. Bu yanıtlar HTTP durum kodları biçimindedir.

  • 400 Bad Request - Sunucu, geçersiz söz dizimi nedeniyle istemci tarafından gönderilen isteği işleyemedi. Yaygın nedenler arasında bozuk JSON veya bir dize değeri için "" yerine null kullanılmasıdır.
  • 403 Forbidden: Sunucu, jeton yenilenirken bir hata oluştuğu için belirtilen agentUserId isteğini işleme koyamadı. OAuth uç noktanızın jeton isteklerini yenilemek ve kullanıcının hesap bağlama durumunu kontrol etmek için doğru şekilde yanıt verdiğinden emin olun.
  • 404 Not Found: İstenen kaynak bulunamadı, ancak ileride kullanıma sunulabilir. Genellikle bu, kullanıcı hesabının Google'a bağlı olmadığı veya geçersiz bir agentUserId aldığı anlamına gelir. agentUserId ile SYNC yanıtınızda sağlanan değerin eşleştiğinden ve DISBA intent'lerini doğru şekilde işlediğinizden emin olun.
  • 429 Too Many Requests - Belirtilen agentUserId için maksimum eşzamanlı senkronizasyon isteği sayısı aşıldı. async işareti doğru değerine ayarlanmadığı sürece arayan, aynı anda yalnızca bir senkronizasyon işlemi gerçekleştirebilir.