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

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

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

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

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

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

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

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

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

ลักษณะเฉพาะ กิจกรรม
ObjectDetection วัตถุที่อุปกรณ์ตรวจพบ เช่น เมื่อระบบตรวจพบใบหน้าที่รู้จักที่ประตู เช่น "Alice and Bob อยู่ที่ประตูหน้า"
RunCycle อุปกรณ์สิ้นสุดรอบ เช่น "โหมดเครื่องซักผ้าเสร็จสมบูรณ์แล้ว"
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 และ Notification 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 ที่มีคีย์ที่ดาวน์โหลดลงในคอมพิวเตอร์

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

ทำการเรียกคำขอการแจ้งเตือนโดยใช้ API ของ devices.reportStateAndNotification คำขอ 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 APIs 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 ที่ถูกต้อง ซึ่งระบุไว้ในระหว่างคำขอ 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

ไคลเอ็นต์ Google APIs 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) ด้วย (เช่น OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING)