สถานะรายงาน

วันที่ ประเด็นสำคัญ:

Report State เป็นฟีเจอร์สำคัญที่ช่วยให้ Home การดำเนินการรายงานสถานะล่าสุดของ อุปกรณ์ของผู้ใช้กลับไปที่ Google Home Graph แทนที่จะรอ QUERY Intent

Report State รายงานให้ Google ทราบสถานะของอุปกรณ์ของผู้ใช้ พร้อมด้วย agentUserId ที่ระบุไว้ซึ่งเชื่อมโยงกับบุคคลเหล่านี้ (ส่งในต้นฉบับ SYNC) เมื่อ Google Assistant ต้องการดำเนินการ ซึ่งจำเป็นต้องเข้าใจสถานะปัจจุบันของอุปกรณ์ ก็สามารถดู เพิ่มข้อมูลรัฐในHome Graphแทน ของการออกเจตนา QUERY ให้แก่ระบบคลาวด์ต่างๆ ของบุคคลที่สามก่อนที่จะออก EXECUTE Intent

ไม่มี Report State ได้รับหลอดไฟจากผู้ให้บริการหลายรายใน ห้องนั่งเล่น คำสั่ง Ok Google เพิ่มความสว่างห้องนั่งเล่น ต้องใช้ การแก้ไขความตั้งใจ QUERY หลายรายการที่ส่งไปยังระบบคลาวด์หลายแห่ง เพียงค้นหาค่าความสว่างปัจจุบันตามค่า ที่รายงานก่อนหน้านี้ เพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด Assistant ต้องมีสถานะปัจจุบันของอุปกรณ์ โดยไม่ต้องไป-กลับอุปกรณ์

หลังจาก SYNC เริ่มต้นสำหรับอุปกรณ์ แพลตฟอร์มจะส่ง Intent QUERY ที่รวบรวมสถานะของอุปกรณ์เพื่อป้อนข้อมูลHome Graph หลังจากนั้น Home Graph จะจัดเก็บเฉพาะรัฐที่ ส่งด้วย Report State

เมื่อโทรหา Report State โปรดตรวจสอบว่าได้ให้ข้อมูล สถานะสำหรับลักษณะหนึ่งๆ Home Graph อัปเดตสถานะใน แบบต่อลักษณะเฉพาะตัว และเขียนทับข้อมูลทั้งหมดสำหรับลักษณะนั้นๆ เมื่อ มีการโทร Report State สาย เช่น หากคุณกำลังรายงาน สถานะสำหรับลักษณะ StartStop หรือเพย์โหลด ต้องระบุค่าสำหรับทั้ง isRunning และ isPaused

เริ่มต้นใช้งาน

ทำตามขั้นตอนต่อไปนี้เพื่อใช้งาน Report State

เปิดใช้ 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

เลือกตัวเลือกจากแท็บด้านล่าง

HTTP

Home Graph มีปลายทาง 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 สำหรับสถานะรายงานและการแจ้งเตือนมีดังนี้
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
    
  6. รวมสถานะของรายงานและ 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 มีปลายทาง 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',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        states: {
          "PLACEHOLDER-DEVICE-ID": {
            on: true
          }
        }
      }
    }
  }
});
    

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 state payload.
  Map<?, ?> states = Map.of("on", true);

  // Report device state.
  ReportStateAndNotificationRequest request =
      new ReportStateAndNotificationRequest()
          .setRequestId("PLACEHOLDER-REQUEST-ID")
          .setAgentUserId("PLACEHOLDER-USER-ID")
          .setPayload(
              new StateAndNotificationPayload()
                  .setDevices(
                      new ReportStateAndNotificationDevice()
                          .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states))));
  homegraphService.devices().reportStateAndNotification(request);
}
    

สถานะรายงานการทดสอบ

เครื่องมือที่แนะนำสำหรับงานนี้

เพื่อให้การดำเนินการของคุณพร้อมสำหรับการรับการรับรอง คุณจำเป็นต้องทดสอบ Report State

ในการดำเนินการ เราขอแนะนำให้ใช้เครื่องมือดู Home Graph ซึ่งเป็นเว็บแอปแบบสแตนด์อโลนที่ไม่ต้องมีการดาวน์โหลดหรือใช้งาน

แดชบอร์ด Report State ยังใช้งานได้ แต่ เลิกใช้งานแล้วและไม่รองรับอีกต่อไป

แดชบอร์ดสถานะรายงาน

ข้อกำหนดเบื้องต้น

คุณต้องมีบัญชีบริการก่อนจึงจะทดสอบการดำเนินการได้ คีย์และagentUserIdของคุณ หากคุณมีคีย์บัญชีบริการและ agentUserIdโปรดดูทำให้ Report State ใช้งานได้ แดชบอร์ด

ใช้งานหน้าแดชบอร์ดสถานะของรายงาน

เมื่อคุณมีคีย์บัญชีบริการและรหัสผู้ใช้ตัวแทนสำหรับโปรเจ็กต์แล้ว ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดได้จาก Report State แดชบอร์ด เมื่อดาวน์โหลดเวอร์ชันล่าสุดแล้ว ให้ทำตามวิธีการจาก รวม README.MD ไฟล์

หลังจากที่คุณทำให้แดชบอร์ด Report State ใช้งานได้แล้ว คุณจะเข้าถึง แดชบอร์ดจาก URL ต่อไปนี้ (แทนที่ your_project_id ด้วย รหัสโปรเจ็กต์):

http://<your-project-id>.appspot.com

ในแดชบอร์ด ให้ทำตามขั้นตอนต่อไปนี้

  • เลือกไฟล์คีย์บัญชี
  • เพิ่ม agentUserId

จากนั้นคลิกรายการ

อุปกรณ์ทั้งหมดของคุณจะแสดงอยู่ในรายการ เมื่อรายการสร้างแล้ว คุณสามารถใช้ ปุ่มรีเฟรชเพื่ออัปเดตสถานะอุปกรณ์ ถ้าสถานะของอุปกรณ์เปลี่ยนแปลง แถวจะไฮไลต์เป็นสีเขียว

การตอบกลับข้อผิดพลาด

คุณอาจได้รับการตอบกลับเกี่ยวกับข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้เมื่อโทรติดต่อ Report State การตอบกลับเหล่านี้จะมาในรูปแบบของสถานะ HTTP

  • 400 Bad Request - เซิร์ฟเวอร์ประมวลผลไม่ได้ คำขอที่ลูกค้าส่งมาเนื่องจากไวยากรณ์ไม่ถูกต้อง สาเหตุที่พบบ่อย มี JSON รูปแบบที่ไม่ถูกต้องหรือใช้ null แทน "" สำหรับค่าสตริง
  • 404 Not Found - ไม่สามารถทรัพยากรที่ขอ พบ แต่อาจมีให้ใช้งานในอนาคต โดยทั่วไปหมายความว่า ไม่พบอุปกรณ์ที่ขอ หรืออาจเป็นเพราะบัญชีผู้ใช้ ไม่ได้ลิงก์กับ Google หรือเราได้รับ agentUserId ที่ไม่ถูกต้อง ตรวจสอบ ว่า agentUserId ตรงกับค่าที่ระบุไว้ใน การตอบสนอง SYNC และคุณ การจัดการ Intent ของ ยกเลิกการเชื่อมต่อ