การแก้ปัญหาข้อผิดพลาดในการผสานรวมกรณี

วันที่รีเฟรช: 06-01-2023

Google Cloud มีเครื่องมือที่ช่วยให้คุณตรวจสอบความน่าเชื่อถือของโปรเจ็กต์ด้วย Google Cloud Monitoring และแก้ไขข้อบกพร่องของบันทึกข้อผิดพลาด Google Cloud Logging เมื่อใดก็ตามที่ความล้มเหลวเกิดขึ้นเมื่อตอบสนองความต้องการของผู้ใช้ ไปป์ไลน์ของ Google Home Analytics จะบันทึกเมตริกที่ล้มเหลวนั้น แล้วเผยแพร่บันทึกข้อผิดพลาดในบันทึกของโปรเจ็กต์

การแก้ปัญหาข้อผิดพลาดมี 2 ขั้นตอน ดังนี้

  1. ตรวจสอบสถานะของโปรเจ็กต์ด้วยเมตริกสมาร์ทโฮม
  2. ตรวจสอบปัญหาโดยดูคำอธิบายข้อผิดพลาดโดยละเอียดในบันทึกข้อผิดพลาด

การตรวจสอบข้อผิดพลาด

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

  • แผนภูมิอัตราความสำเร็จเป็นแผนภูมิแรกที่จะเริ่มต้นเมื่อคุณตรวจสอบความน่าเชื่อถือของโปรเจ็กต์ การลดลงในแผนภูมินี้อาจบ่งบอกถึงการหยุดทำงานของฐานผู้ใช้บางส่วนหรือทั้งหมด เราขอแนะนำให้ตรวจสอบแผนภูมินี้อย่างใกล้ชิดเพื่อหาความผิดปกติหลังจากการเปลี่ยนแปลงหรืออัปเดตโปรเจ็กต์แต่ละครั้ง
  • แผนภูมิรายละเอียดของข้อผิดพลาดจะมีประโยชน์มากที่สุดเมื่อช่วยแก้ปัญหาในการผสานรวม สำหรับข้อผิดพลาดแต่ละรายการที่ไฮไลต์ในแผนภูมิเปอร์เซ็นต์ความสำเร็จ รหัสข้อผิดพลาดจะแสดงในรายละเอียดข้อผิดพลาด ดูข้อผิดพลาดที่ Google Home platform แจ้งไว้และวิธีแก้ปัญหาในตารางด้านล่าง

รหัสข้อผิดพลาดของแพลตฟอร์ม

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

รหัสข้อผิดพลาด คำอธิบาย
BACKEND_FAILURE_URL_ERROR Google ได้รับรหัสข้อผิดพลาด HTTP 4xx ที่ไม่ใช่ 401 จากบริการของคุณ

ใช้ requestId ในการบันทึก GCP เพื่อตรวจสอบบันทึกบริการสมาร์ทโฮม
BACKEND_FAILURE_URL_TIMEOUT คำขอของ Google หมดเวลาขณะพยายามเข้าถึงบริการของคุณ

ตรวจสอบว่าบริการของคุณออนไลน์อยู่ รับการเชื่อมต่อได้ และมีการใช้งานไม่เกินขีดจำกัด นอกจากนี้ ให้ตรวจสอบว่าอุปกรณ์เป้าหมายเปิดอยู่ ออนไลน์ และซิงค์แล้ว
BACKEND_FAILURE_URL_UNREACHABLE Google ได้รับรหัสข้อผิดพลาด HTTP 5xx จากบริการของคุณ

ใช้ requestId ในการบันทึก GCP เพื่อตรวจสอบบันทึกบริการสมาร์ทโฮม
DEVICE_NOT_FOUND ไม่มีอุปกรณ์นี้ในฝั่งบริการของพาร์ทเนอร์

ซึ่งปกติแล้วจะบ่งชี้ถึงความล้มเหลวในการซิงค์ข้อมูลหรือเงื่อนไขการแข่งขัน
GAL_BAD_3P_RESPONSE Google แยกวิเคราะห์การตอบกลับจากบริการลิงก์บัญชีไม่ได้เนื่องจากรูปแบบหรือค่าในเพย์โหลดไม่ถูกต้อง

ใช้ requestId ในการบันทึก GCP เพื่อตรวจสอบบันทึกข้อผิดพลาดในบริการลิงก์บัญชี
GAL_INTERNAL เกิดข้อผิดพลาดภายใน Google เมื่อ Google พยายามเรียกข้อมูลโทเค็นเพื่อการเข้าถึง

หากคุณเห็นอัตราข้อผิดพลาดนี้เพิ่มขึ้นใน GCP Logging โปรดติดต่อเราเพื่อขอข้อมูลเพิ่มเติม
GAL_INVALID_ARGUMENT เกิดข้อผิดพลาดภายใน Google เมื่อ Google พยายามเรียกข้อมูลโทเค็นเพื่อการเข้าถึง

หากคุณเห็นอัตราข้อผิดพลาดนี้เพิ่มขึ้นใน GCP Logging โปรดติดต่อเราเพื่อขอข้อมูลเพิ่มเติม
GAL_NOT_FOUND โทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรชของผู้ใช้ที่เก็บไว้ใน Google จะใช้ไม่ได้และรีเฟรชไม่ได้อีก ผู้ใช้ต้องลิงก์บัญชีอีกครั้งเพื่อใช้บริการของคุณต่อไป

หากคุณเห็นอัตราข้อผิดพลาดนี้เพิ่มขึ้นใน GCP Logging โปรดติดต่อเราเพื่อขอข้อมูลเพิ่มเติม
GAL_PERMISSION_DENIED เกิดข้อผิดพลาดภายในของ Google เมื่อไม่ได้รับอนุญาตให้แชร์โทเค็น

หากคุณเห็นอัตราข้อผิดพลาดนี้เพิ่มขึ้นใน GCP Logging โปรดติดต่อเราเพื่อขอข้อมูลเพิ่มเติม
GAL_REFRESH_IN_PROGRESS โทเค็นเพื่อการเข้าถึงของผู้ใช้หมดอายุและพยายามรีเฟรชพร้อมกันอีกครั้งแล้ว

นี่ไม่ใช่ปัญหา และคุณไม่จำเป็นต้องดำเนินการใดๆ
INVALID_AUTH_TOKEN Google ได้รับรหัสข้อผิดพลาด HTTP 401 จากบริการของคุณ

โทเค็นเพื่อการเข้าถึงยังไม่หมดอายุ แต่บริการของคุณทำให้โทเค็นดังกล่าวใช้งานไม่ได้ ใช้ requestId ในการบันทึก GCP เพื่อตรวจสอบบันทึกบริการสมาร์ทโฮม
INVALID_JSON ไม่สามารถแยกวิเคราะห์หรือเข้าใจการตอบกลับ JSON ได้

ตรวจสอบโครงสร้างการตอบกลับ JSON เพื่อหาไวยากรณ์ที่ไม่ถูกต้อง เช่น วงเล็บไม่ตรงกัน ไม่มีคอมมา หรืออักขระที่ไม่ถูกต้อง
OPEN_AUTH_FAILURE โทเค็นเพื่อการเข้าถึงของผู้ใช้หมดอายุและ Google รีเฟรชไม่ได้ หรือ Google ได้รับรหัสข้อผิดพลาด HTTP 401 จากบริการของคุณ

หากคุณเห็นอัตราที่เพิ่มขึ้นของโค้ดนี้ ให้ตรวจสอบว่าคุณเห็นอัตราข้อผิดพลาดที่เพิ่มขึ้นเกี่ยวกับ Intent ของสมาร์ทโฮมหรือคำขอโทเค็นการรีเฟรชเพิ่มขึ้นด้วยหรือไม่
PARTNER_RESPONSE_INVALID_ERROR_CODE การตอบสนองระบุรหัสข้อผิดพลาดที่ไม่รู้จัก

หากการตอบกลับคำขอระบุข้อผิดพลาด โปรดใช้ข้อผิดพลาดที่มาจาก รหัสข้อผิดพลาดที่รองรับ
PARTNER_RESPONSE_INVALID_PAYLOAD แยกวิเคราะห์ช่องการตอบกลับ payload เป็นออบเจ็กต์ JSON ไม่ได้

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

การตอบสนองต่อคำขอการดำเนินการตาม Intent ควรระบุสถานะด้วย SUCCESS, OFFLINE, ERROR, EXCEPTIONS ดูข้อมูลเพิ่มเติมเกี่ยวกับ การจัดการข้อผิดพลาดและข้อยกเว้น
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES Intent อย่างน้อย 1 รายการที่แสดงในคำขอไม่มีการตอบกลับ

ตรวจสอบว่า การตอบกลับการดำเนินการมีโครงสร้างอย่างถูกต้อง และผลลัพธ์ของ Intent ทั้งหมดจากคำขอนั้นแสดงอยู่ในการตอบกลับของคุณ
PARTNER_RESPONSE_MISSING_DEVICE อุปกรณ์อย่างน้อย 1 เครื่องที่อยู่ในคำขอไม่มีการตอบกลับ

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

ตรวจสอบว่าได้ใส่ช่องเพย์โหลดในคำตอบคำขอแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้าง การตอบกลับการดำเนินการอย่างถูกต้อง
PARTNER_RESPONSE_NOT_OBJECT แยกวิเคราะห์การตอบกลับเป็นออบเจ็กต์ JSON ไม่ได้

ตรวจสอบทุกช่องในการตอบสนองคำขอเพื่อหาอักขระที่ไม่ต้องการ วงเล็บปีกกาที่ไม่ตรงกัน หรือข้อผิดพลาดในการจัดรูปแบบ ระบบอาจไม่รองรับอักขระ Unicode บางตัว นอกจากนี้ โปรดตรวจสอบว่าคำตอบมีโครงสร้างที่ถูกต้องเป็นออบเจ็กต์ JSON
PROTOCOL_ERROR ประมวลผลคำขอไม่สำเร็จ

ใช้ requestId ใน Google Cloud Logging เพื่อตรวจสอบบันทึกบริการสมาร์ทโฮม
RESPONSE_TIMEOUT คำขอหมดเวลาขณะรอการตอบกลับ

ระยะหมดเวลาสำหรับการส่งคำตอบคือ 9 วินาทีนับจากเวลาที่ส่งคำขอ โปรดตรวจสอบว่าคุณได้ส่งคำตอบภายในระยะเวลานี้
RESPONSE_UNAVAILABLE ไม่ได้รับการตอบกลับ หรือการตอบกลับไม่ได้ระบุสถานะ

การตอบสนองต่อคำขอดำเนินการตาม Intent ควรมีโครงสร้างตาม เอกสารสมาร์ทโฮมและระบุสถานะ
TRANSIENT_ERROR ข้อผิดพลาดชั่วคราวคือข้อผิดพลาดที่จะแก้ไขได้เอง

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

ข้อมูลบันทึกการค้นหา

เมื่อคุ้นเคยกับการตรวจสอบการผสานรวมโดยใช้เมตริกแล้ว ขั้นตอนต่อไปคือการแก้ปัญหาข้อผิดพลาดที่เฉพาะเจาะจงโดยใช้ Cloud Logging บันทึกข้อผิดพลาดเป็นรายการที่คล้ายกับ JSON ซึ่งมีช่องที่มีข้อมูลที่เป็นประโยชน์ เช่น เวลา รหัสข้อผิดพลาด และรายละเอียดเกี่ยวกับ Intent ของสมาร์ทโฮมต้นทาง

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

ค้นหาบันทึกในระบบคลาวด์

คุณใช้ปุ่มค้นหาเพื่อช่วยในการสร้างตัวกรองที่กำหนดเองได้

สร้างการค้นหา Cloud Log

หากต้องการระบุช่วงเวลา ให้คลิกปุ่มการเลือกช่วงเวลา และเลือกตัวเลือกใดตัวเลือกหนึ่งที่มีให้ ซึ่งจะกรองบันทึกและแสดงบันทึกที่มีต้นทางในช่วงเวลาที่เลือก

หากต้องการระบุทรัพยากร ให้คลิกเมนูแบบเลื่อนลงทรัพยากร แล้วเลือกโปรเจ็กต์การดำเนินการของ Google Assistant ซึ่งจะเพิ่มตัวกรองในการค้นหาเพื่อแสดงบันทึกที่มีต้นทางมาจากโปรเจ็กต์

ใช้ปุ่มความรุนแรงเพื่อกรองตามเหตุฉุกเฉิน ข้อมูล แก้ไขข้อบกพร่อง และระดับบันทึกความรุนแรงอื่นๆ

หรือจะใช้ช่องคำค้นหาใน Logs Explorer เพื่อป้อนรายการที่กำหนดเองก็ได้ เครื่องมือการค้นหาที่ช่องนี้รองรับทั้งคำค้นหาพื้นฐาน เช่น การจับคู่สตริง และประเภทคำค้นหาขั้นสูงขึ้น ซึ่งรวมถึงตัวเปรียบเทียบ (<, >=, !=) และโอเปอเรเตอร์บูลีน (AND, OR, NOT)

เช่น รายการที่กำหนดเองด้านล่างจะแสดงข้อผิดพลาดที่เกิดจากอุปกรณ์ประเภท LIGHT ดังนี้

resource.type = "assistant_action_project" AND severity = ERROR AND jsonPayload.executionLog.executionResults.actionResults.device.deviceType = "LIGHT"

ไปที่ไลบรารีการค้นหา เพื่อดูตัวอย่างเพิ่มเติมของการค้นหาบันทึกอย่างมีประสิทธิภาพ

การแก้ไขการทดสอบ

เมื่อคุณระบุข้อผิดพลาดและใช้การอัปเดตเพื่อแก้ไขแล้ว เราขอแนะนำให้ทดสอบการแก้ไขอย่างละเอียดด้วย Google Home Test Suite เรามีคู่มือผู้ใช้เกี่ยวกับวิธีใช้ Test Suite ซึ่งจะแนะนำคุณตลอดขั้นตอนการทดสอบการเปลี่ยนแปลงอย่างมีประสิทธิภาพ

แหล่งข้อมูลการเรียนรู้

เอกสารนี้อธิบายขั้นตอนการแก้ปัญหาข้อผิดพลาดในการดำเนินการของสมาร์ทโฮม นอกจากนี้ คุณยังดู Codelab เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขข้อบกพร่องได้โดยทำดังนี้