Hataları ve istisnaları işleme

Cihazlar veya istekler beklendiği gibi çalışmadığında iyi bir hata giderme ve iletişim özellikleri sunmanın yanı sıra kullanıcılarınıza, ve mümkün olduğunda nasıl düzeltileceği hakkında sorular sormak. Projenin gidişatına dair olası hata senaryoları ve cihazınızın nasıl yanıt vereceği: Kullanıcı, devam eden bir görevi kesintiye uğratır mı? Kullanıcı bir cihazdan işlem isteğinde bulunursa ne olur? çevrimdışıyken de oynatılsın mı? Bu sorunlar için planlama ve kullanıcınızın kurtarma yapmasına yardımcı olma Böylece, kullanıcıların hayal kırıklığına uğramasını önler ve daha kaliteli bir deneyim sunar .

Bu kılavuzda, hataları işleyen amaç yanıtlarının bazı örnekleri sunulmaktadır. Görüntüleyin Hatalar ve istisnalar hata ve istisnalar için geçerli errorCode değerlerini inceleyin.

Örnek 1: EXECUTE niyeti için hata yanıtı

Bir son kullanıcının oturma odasında iki akıllı ışığı var. Kullanıcı "oturma odasının ışıklarını aç" komutu veriyor ve Google bir EXECUTE gönderdi niyetinizi göstermelisiniz. Kullanıcının cihazlarının çevrimdışı olduğunu tespit ettiniz ve kontrol edilemez olduğundan, sipariş karşılama işleminiz aşağıdaki gibi bir EXECUTE yanıtı döndürüyor: status ERROR ve errorCode deviceOffline.

Bu örnekte, bir EXECUTE yanıtının Daha önce açıklandığı gibi hafif bir cihazdan errorCode:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "light-device-id-1"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      },
      {
        "ids": [
          "light-device-id-2"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      }
    ]
  }
}

Google Assistant, kullanıcıya "cihaz" istemini gönderir şu anda kullanılamıyor" yanıt alabilirsiniz. Yine de aklınızdan çıkarmayın gönderildikten sonra rapor durumundaki cihazların çevrimdışı durumunu göndermesi gerekiyor errorCode EXECUTE yanıtta deviceOffline.

2. Örnek: EXECUTE amacı için engellemeyen istisna

Bir kullanıcı, şuradaki cihazı kullanarak akıllı kilidini ön kapıda kilitlemeye çalışıyor: Assistant Kilidini başarılı bir şekilde kontrol edebilirsiniz ancak Cihazın pilinin düşük olduğunu fark ediyorsunuz. Bu durumda, sipariş karşılama işleminiz bir EXECUTE döndürüyor status SUCCESS ve exceptionCode lowBattery ile yanıt.

Bu örnekte, bir EXECUTE yanıtının Daha önce açıklandığı gibi kilit cihazından exceptionCode:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["lock-device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isLocked": true,
        "isJammed": false,
        "exceptionCode": "lowBattery"
      }
    }]
  }
}

Assistant, "cihazın güvenlik seviyesi düşük olan kullanıcıya bildirim gönderir. pil" yanıt alabilirsiniz.

3. Örnek: Proaktif hata bildirimleri

Bazı durumlarda, özellikle hata konusunda kullanıcıları uyarmak kullanıcıların otomatik olarak tamamlanmasını beklediği işlevler. Kariyerine proaktif bildirimleri desteklediğinde, bir işlem başlatırken kullanıcıyı proaktif olarak smart home uygulandığında hata oluşur proaktif bildirimlere izin verebilirsiniz.

Akıllı kurutma makinesi çalışıyor ve program bitmeden kapıyı açıyor. Google Home Graph API'yi çağırabilirsiniz Proaktif bildirim göndermenin reportStateAndNotifications yöntemi errorCode:

Bu örnekte, Daha önce açıklandığı gibi kurutma makinesinden errorCode:

POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id",
  "eventId": "unique-event-id",
  "payload": {
    "devices": {
      "notifications": {
        "dryer-device-id": {
          "RunCycle": {
            "priority": 0,
            "status": "FAILURE",
            "errorCode": "deviceDoorOpen"
          }
        }
      },
      "states": {
        "dryer-device-id": {
          "isRunning": false,
          "isPaused": true
        }
      }
    }
  }
}

Assistant, "cihaz kapısının şu açıldı" bildirimi alabilirsiniz. İlgili e-posta adresini aynı yükteki bildirimlerin yanında cihaz durumlarını gösterir.

4. Örnek: Takip bildirimi

Takip bildirimlerini destekleyen özellik komutları için bir hata veya istisna oluştuğunda kullanıcıya gösterilen takip bildirimi smart home uyguladınız takip bildirimleri.

Kullanıcı, garaj kapısını kapatma komutu veriyor, ancak kapı sıkışmış bahsedeceğim. errorCode ile takip bildirimi gönderebilirsiniz:

POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id",
  "eventId": "unique-event-id",
  "payload": {
    "devices": {
      "notifications": {
        "door-device-id": {
          "LockUnlock": {
            "priority": 0,
            "followUpResponse": {
              "status": "FAILURE",
              "errorCode": "deviceJammingDetected",
              "followUpToken": "follow-up-token-1"
            }
          }
        }
      },
      "states": {
        "door-device-id": {
          "openPercent": 70
        }
      }
    }
  }
}

Assistant, "cihaz:" seçeneğine sahip kullanıcıya istem gösterir sıkıştı" bildirimi alabilirsiniz. İlgili e-posta adresini bildirimleri içeren cihaz durumlarını gösterir.

Daha fazla bilgi ve ayrıntılı errorCodes için Hatalar ve istisnalar referans belgeler.