ยินดีต้อนรับสู่ Google Home Developer Center แหล่งใหม่เรียนรู้วิธีพัฒนาการดําเนินการในบ้านอัจฉริยะ หมายเหตุ: คุณจะสร้างการดําเนินการต่างๆ ต่อไปในคอนโซลการดําเนินการ

การแจ้งเตือนสําหรับการดําเนินการในบ้านอัจฉริยะ

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

การแจ้งเตือนช่วยให้การดําเนินการsmart homeใช้ Google Assistant เพื่อสื่อสารกับผู้ใช้เกี่ยวกับเหตุการณ์หรือการเปลี่ยนแปลงที่สําคัญเกี่ยวกับอุปกรณ์ได้ คุณสามารถใช้การแจ้งเตือนเพื่อแจ้งเตือนผู้ใช้ให้ทําสิ่งต่างๆ ในอุปกรณ์ในเวลาที่เหมาะสม เช่น เมื่อมีคนอยู่ที่ประตู หรือในการรายงานการเปลี่ยนแปลงสถานะอุปกรณ์ที่ขอ เช่น เมื่อมีการล็อกกลอนประตู หรือสําเร็จ

การดําเนินการsmart homeจะส่งการแจ้งเตือนประเภทต่อไปนี้ให้แก่ผู้ใช้ได้

  • การแจ้งเตือนเชิงรุก: แจ้งเตือนผู้ใช้เกี่ยวกับเหตุการณ์ในอุปกรณ์ smart home โดยไม่ต้องส่งคําขอของผู้ใช้ไปยังอุปกรณ์ของตนก่อน เช่น กริ่งประตู

  • การตอบกลับติดตามผล: การยืนยันว่าคําขอคําสั่งของอุปกรณ์ประสบความสําเร็จหรือล้มเหลว เช่น เมื่อล็อกประตู ใช้การแจ้งเตือนเหล่านี้กับคําสั่งของอุปกรณ์ที่ต้องใช้เวลาดําเนินการ

Assistant จะส่งการแจ้งเตือนเหล่านี้แก่ผู้ใช้เป็นประกาศ เกี่ยวกับลําโพงอัจฉริยะและจออัจฉริยะ การแจ้งเตือนเชิงรุกจะปิดไว้โดยค่าเริ่มต้น ผู้ใช้จะเปิดหรือปิดการแจ้งเตือนเชิงรุกทั้งหมดจาก Google Home app (GHA) ได้

เหตุการณ์ที่ทริกเกอร์การแจ้งเตือน

เมื่อเกิดเหตุการณ์ในอุปกรณ์ การดําเนินการที่คุณทําจะส่งคําขอการแจ้งเตือนไปยัง Google อุปกรณ์จะลักษณะเฉพาะที่การดําเนินการของ smart home รองรับจะกําหนดประเภทเหตุการณ์การแจ้งเตือนที่มีอยู่และข้อมูลที่คุณรวมไว้ในการแจ้งเตือนเหล่านั้นได้

ลักษณะเฉพาะต่อไปนี้รองรับการแจ้งเตือนเชิงรุก

ลักษณะเฉพาะ กิจกรรม
การตรวจหาวัตถุ วัตถุที่ตรวจพบโดยอุปกรณ์ เช่น เมื่อมีการตรวจพบใบหน้าที่รู้จักที่ประตู เช่น "อลิสาและสุเทพอยู่ที่ประตูหน้า"
RunCycle อุปกรณ์มีรอบครบแล้ว เช่น "วงจรเครื่องซักผ้า เสร็จสมบูรณ์"
เซ็นเซอร์เซ็นเซอร์ อุปกรณ์ตรวจพบสถานะเซ็นเซอร์ที่รองรับ ตัวอย่างเช่น "ตัวตรวจจับควัน" ตรวจพบควัน"
การควบคุมอุณหภูมิ อุปกรณ์ถึงอุณหภูมิที่กําหนด เช่น "อุ่นเตาอบที่ 350 องศาแล้ว"
คลังแสง ระบบจะเข้าสู่สถานะก่อนการตั้งปลุกโดยมีการนับถอยหลังที่ทริกเกอร์โดยประตูที่เปิด
สตรีมกล้อง ลิงก์ไปยังสตรีมแบบสดของกล้องหลังจากที่อุปกรณ์ตรวจพบวัตถุหรือการเคลื่อนไหว
การตรวจจับการเคลื่อนไหว "ตรวจพบการเคลื่อนไหวเวลา 12:00 น. วันที่ 1 กรกฎาคม 2020"

ลักษณะเฉพาะต่อไปนี้รองรับการตอบกลับติดตามผล

ลักษณะเฉพาะ กิจกรรม
คลังแสง สถานะความสมบูรณ์และการเปลี่ยนแปลงสถานะหลังจากเรียกใช้คําสั่ง ของอุปกรณ์ action.devices.commands.ArmDisarm ตัวอย่างเช่น "ระบบรักษาความปลอดภัยเปิดอยู่"
LockLock สถานะความสมบูรณ์และการเปลี่ยนแปลงสถานะหลังจากเรียกใช้คําสั่ง ของอุปกรณ์ action.devices.commands.LockUnlock เช่น "ประตูหน้าล็อกอยู่" หรือ "ประตูหน้ารถติด"
การควบคุมเครือข่าย สถานะความสมบูรณ์และการเปลี่ยนแปลงสถานะหลังจากเรียกใช้คําสั่ง ของอุปกรณ์ action.devices.commands.TestNetworkSpeed ตัวอย่างเช่น "ทดสอบความเร็วเครือข่ายเสร็จแล้ว ในขณะนี้ ความเร็วในการดาวน์โหลดของเราเตอร์ออฟฟิศอยู่ที่ 80.2 Kbps และความเร็วในการอัปโหลดคือ 9.3 Kbps"
OpenClosed สถานะความสมบูรณ์และการเปลี่ยนแปลงสถานะหลังจากเรียกใช้คําสั่ง ของอุปกรณ์ action.devices.commands.OpenClose เช่น "ประตูหน้าเปิดอยู่" หรือ "เปิดประตูหน้าไม่ได้"
เริ่ม/หยุด สถานะความสมบูรณ์และการเปลี่ยนแปลงสถานะหลังจากเรียกใช้คําสั่ง ของอุปกรณ์ action.devices.commands.StartStop เช่น "เครื่องดูดฝุ่นเริ่มทํางาน"

อุปกรณ์ทุกประเภทรองรับการแจ้งเตือนสําหรับลักษณะเฉพาะ

สร้างการแจ้งเตือนสําหรับการดําเนินการในบ้านอัจฉริยะ

เพิ่มการแจ้งเตือนไปยังการดําเนินการ smart home ในขั้นตอนต่อไปนี้

  1. บอก Google ว่ามีการเปิดใช้การแจ้งเตือนจากแอปของอุปกรณ์ smart home หรือไม่ หากผู้ใช้เปิดหรือปิดการแจ้งเตือนในแอป ให้ส่งคําขอ SYNC เพื่อแจ้ง Google ให้ทราบเกี่ยวกับการเปลี่ยนแปลงอุปกรณ์
  2. เมื่อมีเหตุการณ์ในอุปกรณ์หรือการเปลี่ยนแปลงสถานะที่เกี่ยวข้องที่ทําให้มีการแจ้งเตือน ให้ส่งคําขอการแจ้งเตือนโดยเรียก Report State reportStateAndNotification API หากสถานะอุปกรณ์มีการเปลี่ยนแปลง คุณจะส่งทั้งสถานะและเพย์โหลดการแจ้งเตือนร่วมกันได้ใน Report State และการเรียกใช้การแจ้งเตือน

ส่วนต่อไปนี้จะอธิบายขั้นตอนเหล่านี้อย่างละเอียด

ระบุว่ามีการเปิดใช้การแจ้งเตือนในแอปหรือไม่

ผู้ใช้เลือกได้ว่าจะรับการแจ้งเตือนเชิงรุกหรือไม่โดยเปิดใช้ฟีเจอร์นี้ใน GHA ในแอปสําหรับอุปกรณ์ smart home คุณยังสามารถเพิ่มความสามารถสําหรับผู้ใช้เพื่อสลับการแจ้งเตือนจากอุปกรณ์อย่างชัดแจ้ง เช่น จากการตั้งค่าแอป

บอก Google ว่าอุปกรณ์เปิดใช้การแจ้งเตือนโดยการเรียกใช้ขอให้ซิงค์เพื่ออัปเดตข้อมูลอุปกรณ์ คุณควรส่งคําขอ SYNC แบบนี้ทุกครั้งที่ผู้ใช้เปลี่ยนการตั้งค่านี้ในแอป

โปรดส่งการตอบกลับรายการใดรายการหนึ่งต่อไปนี้ในการตอบกลับSYNC

  • หากผู้ใช้สลับการแจ้งเตือนอย่างชัดเจนในแอปของอุปกรณ์ หรือหากคุณไม่มีตัวเลือกสลับ ให้ตั้งค่าพร็อพเพอร์ตี้ devices.notificationSupportedByAgent เป็น true
  • หากผู้ใช้สลับการแจ้งเตือนอย่างชัดเจนในแอปของอุปกรณ์ ให้ตั้งค่าพร็อพเพอร์ตี้ devices.notificationSupportedByAgent เป็น false

ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างวิธีตั้งค่าการตอบกลับ SYNC

devices: [{
   id: 'device123',
   ...
   notificationSupportedByAgent: true,
}]

ส่งคําขอการแจ้งเตือนไปยัง Google

หากต้องการทริกเกอร์การแจ้งเตือนใน Assistant การดําเนินการตามคําสั่งซื้อจะส่งเพย์โหลดการแจ้งเตือนไปยัง Google Home Graph ผ่านการเรียก Report State และ API การแจ้งเตือน

เปิดใช้ Google HomeGraph API

  1. ใน Google Cloud Platform Console ให้ไปที่หน้า HomeGraph API

    ไปที่หน้า HomeGraph API
  2. เลือกโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home
  3. คลิกเปิดใช้

สร้างคีย์บัญชีบริการ

ทําตามวิธีการต่อไปนี้เพื่อสร้างคีย์บัญชีบริการจาก GCP Console

หมายเหตุ: ตรวจสอบว่าคุณใช้โปรเจ็กต์ GCP ที่ถูกต้องขณะทําตามขั้นตอนเหล่านี้ นี่คือโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home ของคุณ
  1. ในGCP Console ให้ไปที่หน้าสร้างคีย์บัญชีบริการ

    ไปที่หน้าสร้างคีย์บัญชีบริการ
  2. จากรายการบัญชีบริการ ให้เลือกบัญชีบริการใหม่
  3. ป้อนชื่อในช่องชื่อบัญชีบริการ
  4. ป้อนรหัสในช่องรหัสบัญชีบริการ
  5. จากรายการบทบาท ให้เลือกบัญชีบริการ > ผู้สร้างโทเค็นบัญชีบริการ

  6. สําหรับประเภทคีย์ ให้เลือกตัวเลือก JSON

  7. คลิกสร้าง ไฟล์ JSON ที่มีการดาวน์โหลดคีย์ลงในคอมพิวเตอร์

ส่งการแจ้งเตือน

เรียกคําขอการแจ้งเตือนโดยใช้ devices.reportStateAndNotification API คําขอ JSON ต้องมี eventId ซึ่งเป็นรหัสที่ไม่ซ้ํากันที่แพลตฟอร์มสร้างขึ้นสําหรับเหตุการณ์ที่ทริกเกอร์การแจ้งเตือน eventId ควรเป็นรหัสแบบสุ่มที่แตกต่างกันทุกครั้งที่คุณส่งคําขอการแจ้งเตือน

ในออบเจ็กต์ notifications ที่คุณส่งในการเรียก API ให้ใส่ค่า priority ที่กําหนดวิธีแสดงการแจ้งเตือน ออบเจ็กต์ notifications อาจมีช่องที่ต่างกันโดยขึ้นอยู่กับลักษณะเฉพาะของอุปกรณ์

ทําตามขั้นตอนใดขั้นตอนหนึ่งต่อไปนี้เพื่อตั้งค่าเพย์โหลดและเรียก API

ส่งเพย์โหลดการแจ้งเตือนเชิงรุก

หากต้องการเรียก API ให้เลือกตัวเลือกจากแท็บใดแท็บหนึ่งต่อไปนี้

HTTP

Home Graph API มีปลายทาง HTTP

  1. ใช้ไฟล์ JSON ของบัญชีบริการที่ดาวน์โหลดเพื่อสร้างโทเค็นเว็บ JSON (JWT) หากต้องการข้อมูลเพิ่มเติม โปรดดูการตรวจสอบสิทธิ์โดยใช้บัญชีบริการ
  2. รับโทเค็นเพื่อการเข้าถึง OAuth 2.0 ที่มีขอบเขต https://www.googleapis.com/auth/homegraph โดยใช้ oauth2l ดังนี้
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. สร้างคําขอ JSON ด้วย agentUserId ต่อไปนี้คือตัวอย่างคําขอ JSON สําหรับ Report State และการแจ้งเตือน
  5. {
      "agentUserId": "PLACEHOLDER-USER-ID",
      "eventId": "PLACEHOLDER-EVENT-ID",
      "requestId": "PLACEHOLDER-REQUEST-ID",
      "payload": {
        "devices": {
          "notifications": {
            "PLACEHOLDER-DEVICE-ID": {
              "ObjectDetection": {
                "priority": 0,
                "detectionTimestamp": 1534875126750,
                "objects": {
                  "named": [
                    "Alice"
                  ],
                  "unclassified": 2
                }
              }
            }
          }
        }
      }
    }
    
  6. รวม Report State และ JSON การแจ้งเตือนและโทเค็นในคําขอ HTTP POST ไปยังปลายทาง Google Home Graph ตัวอย่างวิธีสร้างคําขอในบรรทัดคําสั่งโดยใช้ curl เป็นการทดสอบ
  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 API มีปลายทาง gRPC

  1. ดูคําจํากัดความของบริการบัฟเฟอร์โปรโตคอลสําหรับ Home Graph API
  2. ทําตามเอกสารสําหรับนักพัฒนาซอฟต์แวร์ gRPC เพื่อสร้างสตอรี่ไคลเอ็นต์สําหรับภาษาที่รองรับ
  3. เรียกเมธอด ReportStateAndNotification

Node.js

ไคลเอ็นต์ Google API Node.js มีการเชื่อมโยงสําหรับ Home Graph API

  1. เริ่มต้นบริการ google.homegraph โดยใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  2. เรียกเมธอด reportStateAndNotification ด้วย ReportStateAndNotificationRequest โดยจะแสดง Promise ที่มี ReportStateAndNotificationResponse
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',
    eventId: 'PLACEHOLDER-EVENT-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        notifications: {
          'PLACEHOLDER-DEVICE-ID': {
            ObjectDetection: {
              priority: 0,
              detectionTimestamp: 1534875126750,
              objects: {
                named: ['Alice'],
                unclassified: 2
              }
            }
          }
        }
      }
    }
  }
});
    

Java

ไลบรารีของไคลเอ็นต์ HomeGraph API สําหรับ Java มีการเชื่อมโยงสําหรับ Home Graph API

  1. เริ่มต้น HomeGraphApiService โดยใช้ ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  2. เรียกเมธอด reportStateAndNotification ด้วย ReportStateAndNotificationRequest โดยจะแสดงผล ReportStateAndNotificationResponse
// 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 notification payload.
Map<?, ?> notifications =
    Map.of(
        "ObjectDetection",
        Map.of(
            "priority", 0,
            "detectionTimestamp", 1534875126,
            "objects", Map.of("named", List.of("Alice"), "unclassifed", 2)));

// Send notification.
ReportStateAndNotificationRequest request =
    new ReportStateAndNotificationRequest()
        .setRequestId("PLACEHOLDER-REQUEST-ID")
        .setAgentUserId("PLACEHOLDER-USER-ID")
        .setEventId("PLACEHOLDER-EVENT-ID")
        .setPayload(
            new StateAndNotificationPayload()
                .setDevices(
                    new ReportStateAndNotificationDevice()
                        .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", notifications))));
homegraphService.devices().reportStateAndNotification(request);
    
ส่งเพย์โหลดการตอบสนองติดตามผล

เพย์โหลดสําหรับการตอบกลับติดตามผลจะมีสถานะของคําขอ รหัสข้อผิดพลาดสําหรับเหตุการณ์ที่ไม่สําเร็จ (หากมี) และ followUpToken ที่ถูกต้อง ซึ่งระบุระหว่างคําขอ EXECUTE ต้องใช้ followUpToken ภายใน 5 นาทีเพื่อให้ถูกต้องและเชื่อมโยงคําตอบกับคําขอเดิมอย่างเหมาะสม

ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างเพย์โหลด EXECUTE คําขอที่มีช่อง followUpToken

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123",
        }],
        "execution": [{
          "command": "action.devices.commands.TestNetworkSpeed",
          "params": {
            "testDownloadSpeed": true,
            "testUploadSpeed": false,
            "followUpToken": "PLACEHOLDER"
          }
        }]
      }]
    }
  }]
};

Google ใช้ followUpToken เพื่อเอาต์พุตการแจ้งเตือนเฉพาะในอุปกรณ์ที่ผู้ใช้โต้ตอบด้วยในตอนแรก และไม่ได้ออกอากาศในอุปกรณ์ทั้งหมดของผู้ใช้

หากต้องการเรียก API ให้เลือกตัวเลือกจากแท็บใดแท็บหนึ่งต่อไปนี้

HTTP

Home Graph API มีปลายทาง HTTP

  1. ใช้ไฟล์ JSON ของบัญชีบริการที่ดาวน์โหลดเพื่อสร้างโทเค็นเว็บ JSON (JWT) หากต้องการข้อมูลเพิ่มเติม โปรดดูการตรวจสอบสิทธิ์โดยใช้บัญชีบริการ
  2. รับโทเค็นเพื่อการเข้าถึง OAuth 2.0 ที่มีขอบเขต https://www.googleapis.com/auth/homegraph โดยใช้ oauth2l ดังนี้
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. สร้างคําขอ JSON ด้วย agentUserId ต่อไปนี้คือตัวอย่างคําขอ JSON สําหรับ Report State และการแจ้งเตือน
  5. {
      "agentUserId": "PLACEHOLDER-USER-ID",
      "eventId": "PLACEHOLDER-EVENT-ID",
      "requestId": "PLACEHOLDER-REQUEST-ID",
      "payload": {
        "devices": {
          "notifications": {
            "PLACEHOLDER-DEVICE-ID": {
              "NetworkControl": {
                "priority": 0,
                "followUpResponse": {
                  "status": "SUCCESS",
                  "followUpToken": "PLACEHOLDER",
                  "networkDownloadSpeedMbps": 23.3,
                  "networkUploadSpeedMbps": 10.2
                }
              }
            }
          }
        }
      }
    }
    
  6. รวม Report State และ JSON การแจ้งเตือนและโทเค็นในคําขอ HTTP POST ไปยังปลายทาง Google Home Graph ตัวอย่างวิธีสร้างคําขอในบรรทัดคําสั่งโดยใช้ curl เป็นการทดสอบ
  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 API มีปลายทาง gRPC

  1. ดูคําจํากัดความของบริการบัฟเฟอร์โปรโตคอลสําหรับ Home Graph API
  2. ทําตามเอกสารสําหรับนักพัฒนาซอฟต์แวร์ gRPC เพื่อสร้างสตอรี่ไคลเอ็นต์สําหรับภาษาที่รองรับ
  3. เรียกเมธอด ReportStateAndNotification

Node.js

ไคลเอ็นต์ Google API Node.js มีการเชื่อมโยงสําหรับ Home Graph API

  1. เริ่มต้นบริการ google.homegraph โดยใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  2. เรียกเมธอด reportStateAndNotification ด้วย ReportStateAndNotificationRequest โดยจะแสดง Promise ที่มี ReportStateAndNotificationResponse
const followUpToken = executionRequest.inputs[0].payload.commands[0].execution[0].params.followUpToken;

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',
    eventId: 'PLACEHOLDER-EVENT-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        notifications: {
          'PLACEHOLDER-DEVICE-ID': {
            NetworkControl: {
              priority: 0,
              followUpResponse: {
                status: 'SUCCESS',
                followUpToken,
                networkDownloadSpeedMbps: 23.3,
                networkUploadSpeedMbps: 10.2,
              }
            }
          }
        }
      }
    }
  }
});
    

Java

ไลบรารีของไคลเอ็นต์ HomeGraph API สําหรับ Java มีการเชื่อมโยงสําหรับ Home Graph API

  1. เริ่มต้น HomeGraphApiService โดยใช้ ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  2. เรียกเมธอด reportStateAndNotification ด้วย ReportStateAndNotificationRequest โดยจะแสดง ReportStateAndNotificationResponse
// 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();

// Extract follow-up token.
ExecuteRequest.Inputs executeInputs = (Inputs) executeRequest.getInputs()[0];
String followUpToken =
    (String)
        executeInputs
            .getPayload()
            .getCommands()[0]
            .getExecution()[0]
            .getParams()
            .get("followUpToken");

// Build device follow-up response payload.
Map<?, ?> followUpResponse =
    Map.of(
        "NetworkControl",
        Map.of(
            "priority",
            0,
            "followUpResponse",
            Map.of(
                "status",
                "SUCCESS",
                "followUpToken",
                followUpToken,
                "networkDownloadSpeedMbps",
                23.3,
                "networkUploadSpeedMbps",
                10.2)));

// Send follow-up response.
ReportStateAndNotificationRequest request =
    new ReportStateAndNotificationRequest()
        .setRequestId("PLACEHOLDER-REQUEST-ID")
        .setAgentUserId("PLACEHOLDER-USER-ID")
        .setEventId("PLACEHOLDER-EVENT-ID")
        .setPayload(
            new StateAndNotificationPayload()
                .setDevices(
                    new ReportStateAndNotificationDevice()
                        .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", followUpResponse))));
homegraphService.devices().reportStateAndNotification(request);
    

Logging

การแจ้งเตือนรองรับการบันทึกเหตุการณ์ตามที่อธิบายไว้ในการเข้าถึงบันทึกเหตุการณ์ด้วย Cloud Logging บันทึกเหล่านี้เหมาะสําหรับการทดสอบและดูแลรักษาคุณภาพของการแจ้งเตือนภายในการดําเนินการ

ต่อไปนี้คือสคีมาของรายการ notificationLog

พร็อพเพอร์ตี้ คำอธิบาย
requestId รหัสคําขอการแจ้งเตือน
structName ชื่อของโครงสร้างการแจ้งเตือน เช่น "ObjectDetection"
status ระบุสถานะของการแจ้งเตือน

ช่อง status มีสถานะต่างๆ ที่อาจแสดงข้อผิดพลาดในเพย์โหลดการแจ้งเตือน การดําเนินการบางอย่างนี้อาจทําได้เฉพาะในการดําเนินการที่ยังไม่ได้เปิดตัวเป็นเวอร์ชันที่ใช้งานจริงเท่านั้น

สถานะตัวอย่างมีดังนี้

สถานะ คำอธิบาย
EVENT_ID_MISSING บ่งบอกว่าไม่มีข้อมูลในช่อง eventId ที่จําเป็น
PRIORITY_MISSING บ่งบอกว่าไม่มีช่อง priority
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE ระบุว่าพร็อพเพอร์ตี้ notificationSupportedByAgent ของอุปกรณ์ที่แจ้งอยู่ใน SYNC เป็นเท็จ
NOTIFICATION_ENABLED_BY_USER_FALSE บ่งบอกว่าผู้ใช้ไม่ได้เปิดใช้การแจ้งเตือนในอุปกรณ์ที่แจ้งเตือนใน GHA สถานะนี้ใช้ได้กับการดําเนินการที่ไม่ได้เปิดใช้เป็นเวอร์ชันที่ใช้งานจริงเท่านั้น
NOTIFYING_DEVICE_NOT_IN_STRUCTURE ระบุว่าผู้ใช้ยังไม่ได้มอบหมายอุปกรณ์การแจ้งเตือนไปยังบ้าน/โครงสร้าง สถานะนี้ใช้ได้กับการดําเนินการที่ไม่ได้เปิดใช้เป็นเวอร์ชันที่ใช้งานจริงเท่านั้น

นอกเหนือจากสถานะทั่วไปเหล่านี้ซึ่งสามารถใช้กับการแจ้งเตือนทั้งหมดแล้ว ช่อง status อาจมีสถานะที่เฉพาะเจาะจงตามลักษณะเฉพาะ (เช่น OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING)