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

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

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

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

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

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

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

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

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

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

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

ลักษณะเฉพาะ กิจกรรม
ArmDisarm การเปลี่ยนแปลงสถานะเสร็จสมบูรณ์และสถานะหลังจากการดำเนินการตามคำสั่งของอุปกรณ์ action.devices.commands.ArmDisarm เช่น "เปิดระบบรักษาความปลอดภัยแล้ว"
LockUnlock การเปลี่ยนแปลงสถานะเสร็จสมบูรณ์และสถานะหลังจากการดำเนินการตามคำสั่งของอุปกรณ์ action.devices.commands.LockUnlock เช่น "ประตูหน้าล็อกอยู่" หรือ "ประตูหน้าติดอยู่"
NetworkControl การเปลี่ยนแปลงสถานะเสร็จสมบูรณ์และสถานะหลังจากการดำเนินการตามคำสั่งของอุปกรณ์ action.devices.commands.TestNetworkSpeed เช่น "การทดสอบความเร็วเครือข่ายเสร็จแล้ว ความเร็วการดาวน์โหลดในเราเตอร์ออฟฟิศตอนนี้อยู่ที่ 80.2 Kbps และความเร็วการอัปโหลดอยู่ที่ 9.3 Kbps"
OpenClose การเปลี่ยนแปลงสถานะเสร็จสมบูรณ์และสถานะหลังจากการดำเนินการตามคำสั่งของอุปกรณ์ action.devices.commands.OpenClose เช่น "ประตูหน้าเปิดอยู่" หรือ "ประตูหน้าเปิดไม่ได้"
StartStop การเปลี่ยนแปลงสถานะเสร็จสมบูรณ์และสถานะหลังจากการดำเนินการตามคำสั่งของอุปกรณ์ 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

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

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

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

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

เปิดใช้ Google HomeGraph API

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

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

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

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

หมายเหตุ: โปรดตรวจสอบว่าคุณกำลังใช้โปรเจ็กต์ GCP ที่ถูกต้องเมื่อดำเนินการตามขั้นตอนเหล่านี้ คือโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home ของคุณ
  1. ใน Google Cloud 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

ไคลเอ็นต์ Node.js ของ Google APIs ให้การเชื่อมโยงสำหรับ 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 ที่ถูกต้องซึ่งระบุในระหว่างคำขอ Intent 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

ไคลเอ็นต์ Node.js ของ Google APIs ให้การเชื่อมโยงสำหรับ 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)