Rapor Durumu

.

Report State önemli bir özelliktir ve Home İşlem, iletişimin son durumunu proaktif olarak bir istek beklemek yerine, kullanıcının cihazını Google Home Graph QUERY intent.

Report State, kullanıcı cihazlarının durumunu Google'a bildirir belirtilen agentUserId ile birlikte (orijinal SYNC isteği) için geçerlidir. Google Assistant işlem yapmak istediğinde anlamak için bir cihazın mevcut durumunu anlamamız bunun yerine eyalet bilgilerini Home Graph çeşitli üçüncü taraf bulutlarına bir QUERY intent'inin EXECUTE intent.

Report State olmadan, şuradaki birden fazla sağlayıcıdan ışık verildi: bir oturma odası varsa Ok Google, salonumun parlaklığını artır komutu için birden fazla buluta gönderilen birden fazla QUERY niyetini çözümlemek parlaklık değerlerine bakarken daha önce bildirilmişti. En iyi kullanıcı deneyimi için Assistant bir cihazın mevcut durumuna sahip olmalıdır. hem de gidişata göre optimize edebilirsiniz.

Platform, bir cihazın ilk SYNC sonrasında QUERY intent gönderir Home Graph değerini doldurmak için cihazın durumunu toplayan bir uygulamadır. Bu noktadan sonra Home Graph, yalnızca Report State ile gönderildi.

Report State numaralı telefonu ararken, eksiksiz erişim sağladığınızdan emin olun. durum verileri toplanıyor. Home Graph güncellemeleri özellik bazında oluşturur ve bir özellik toplandığında ilgili özelliğe ait tüm verilerin Report State araması yapıldı. Örneğin, bir müşteriyle StartStop özelliği için durumu temsil eden yük hem isRunning hem de isPaused için değerler içermelidir.

Başlayın

Report State özelliğini uygulamak için aşağıdaki adımları izleyin:

Google HomeGraph API'yi etkinleştirme

  1. Google Cloud Console uygulamasında HomeGraph API sayfasına gidin.

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

Hizmet Hesabı Anahtarı Oluşturma

Google Cloud Console öğesinden bir hizmet hesabı anahtarı oluşturmak için şu talimatları uygulayın:

Not: Gerçekleştirme sırasında doğru GCP projesini kullandığınızdan emin olun bu adımları uygulayın. Bu, smart home proje kimliğinizle eşleşen projedir.
  1. Google Cloud Console sayfasında Hizmet hesabı anahtarı oluştur sayfasına gidin.

    Hizmet Hesabı Anahtarı Oluşturma sayfasına git
  2. Hizmet hesabı listesinden Yeni hizmet hesabı.
  3. Hizmet hesabı adı alanına bir ad girin.
  4. Hizmet hesabı kimliği alanına bir kimlik girin.
  5. Role (Rol) listesinden Service Accounts (Hizmet Hesapları) > Hizmet Hesabı Jetonu Oluşturucu.

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

  7. Oluştur'u tıklayın. Anahtarınızı içeren bir JSON dosyası bilgisayarınıza indirilir.

API'yi çağırma

Aşağıdaki sekmelerden bir seçenek belirleyin:

HTTP

Home Graph, bir HTTP uç noktası sağlar

  1. JSON Web oluşturmak için indirilen hizmet hesabı JSON dosyasını kullanın Jeton (JWT). Daha fazla bilgi için bkz. Hizmet Hesabı Kullanarak Kimlik Doğrulama.
  2. Mevcut bir OAuth 2.0 erişim jetonu almak için https://www.googleapis.com/auth/homegraph kapsamı kullanılıyor oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId ile JSON isteğini oluşturun. Rapor Durumu ve Bildirim için örnek bir JSON isteği aşağıda verilmiştir:
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
    
  6. HTTP POST'unuzda Rapor Durumu ile Bildirim JSON verilerini ve jetonu birleştirme isteği gönderir. Medya etkinliği ölçüm araçlarının komut satırında isteği curl kullanarak yapmak için test:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph, bir gRPC uç noktası sağlar

  1. Home Graph API'nin protokol arabellekleri hizmeti tanımını öğrenin.
  2. Desteklenen dillerden biri için istemci saplaması oluşturmak üzere gRPC geliştirici belgelerini izleyin.
  3. ReportStateAndNotification yöntemini çağırın.

Node.js

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

  1. Application Default Credentials'ı (Uygulama Varsayılan Kimlik Bilgileri) kullanarak google.homegraph hizmetini başlatın.
  2. ReportStateAndNotificationRequest ile reportStateAndNotification yöntemini çağırın. ReportStateAndNotificationResponse ile 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.reportStateAndNotification({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        states: {
          "PLACEHOLDER-DEVICE-ID": {
            on: true
          }
        }
      }
    }
  }
});
    

Java

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

  1. Application Default Credentials'ı (Uygulama Varsayılan Kimlik Bilgileri) kullanarak HomeGraphApiService'ı başlatın.
  2. ReportStateAndNotificationRequest ile reportStateAndNotification yöntemini çağırın. 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();

  // Build device state payload.
  Map<?, ?> states = Map.of("on", true);

  // Report device state.
  ReportStateAndNotificationRequest request =
      new ReportStateAndNotificationRequest()
          .setRequestId("PLACEHOLDER-REQUEST-ID")
          .setAgentUserId("PLACEHOLDER-USER-ID")
          .setPayload(
              new StateAndNotificationPayload()
                  .setDevices(
                      new ReportStateAndNotificationDevice()
                          .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states))));
  homegraphService.devices().reportStateAndNotification(request);
}
    

Test Raporu Durumu

Bu görev için önerilen araçlar

İşleminizi sertifikasyona hazır hale getirmek için öncelikle Report State

Bunun için Home Graph Görüntüleyici aracını kullanmanızı öneririz. İndirme veya dağıtım gerektirmeyen bağımsız bir web uygulamasıdır.

Report State Kontrol Paneli hâlâ kullanılabilir ancak desteği sonlandırıldı ve artık desteklenmiyor.

Rapor Durumu Kontrol Paneli

Ön koşullar

İşleminizi test edebilmeniz için Hizmet Hesabınıza ihtiyacınız vardır Anahtar ve agentUserId bilginiz. Hizmet Hesabı Anahtarınız zaten varsa ve agentUserId bkz. Report State Kontrol Paneli.

Rapor Durumu kontrol panelini dağıtma

Projeniz için Hizmet Hesabı Anahtarı ve Aracı Kullanıcı Kimliği’ni aldıktan sonra, şuradan en son sürümü indirip dağıtın: Report State Kontrol Paneli. En son sürümü indirdikten sonra README.MD dosya dahil edildi.

Report State kontrol panelini dağıttıktan sonra erişim kontrol paneline aşağıdaki URL'den ekleyin (your_project_id ifadesini proje kimliği):

http://<your-project-id>.appspot.com

Kontrol panelinde şunları yapın:

  • Hesap anahtar dosyanızı seçin
  • AracıKullanıcıKimliğinizi ekleyin

Ardından Listele'yi tıklayın.

Tüm cihazlarınız listelenir. Liste doldurulduktan sonra, Yenile düğmesine dokunarak cihaz durumunu güncelleyin. Cihaz durumunda bir değişiklik varsa satır yeşil renkle vurgulanır.

Hata Yanıtları

Sesli arama yaptığınızda aşağıdaki hata yanıtlarından birini alabilirsiniz Report State Bu yanıtlar, HTTP durumu biçiminde gelir ekleyebilirsiniz.

  • 400 Bad Request - Sunucu işleyemedi istek geçersiz söz dizimi nedeniyle istemci tarafından gönderilen istek. Yaygın nedenler bozuk JSON içerme veya "" yerine null kullanma değerini girin.
  • 404 Not Found - İstenen kaynak yapılamadı bulunur, ancak gelecekte kullanıma sunulabilir. Genellikle bu, proje yöneticisinin istenen cihazı bulamıyor. Bu, kullanıcı hesabının , Google'a bağlı değil veya geçersiz bir agentUserId aldık. Emin olun agentUserId değerinin SYNC yanıtı ve gerektiği gibi DISCONNECT amaçlarını işleme.