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

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

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

การดําเนินการ smart home ของคุณสามารถส่งการแจ้งเตือนประเภทต่อไปนี้ไปยังผู้ใช้

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

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

Assistant จะแสดงการแจ้งเตือนเหล่านี้ให้แก่ผู้ใช้ เพื่อแจ้งเกี่ยวกับลําโพงอัจฉริยะและ Smart Display การแจ้งเตือนเชิงรุกจะ ปิดอยู่โดยค่าเริ่มต้น ผู้ใช้จะเปิดหรือปิดการแจ้งเตือนเชิงรุกทั้งหมดจาก 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"
OpenClose สถานะความสมบูรณ์และการเปลี่ยนแปลงหลังจากคําสั่งของอุปกรณ์ 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 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 Web Token (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. รับคําจํากัดความของบริการบัฟเฟอร์โปรโตคอลสําหรับ API ของ Home Graph
  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 ที่ถูกต้อง ซึ่งระบุไว้ระหว่างคําขอ 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 Web Token (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. รับคําจํากัดความของบริการบัฟเฟอร์โปรโตคอลสําหรับ API ของ Home Graph
  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)