รายชื่อแชต WhatsApp ไม่ครบ? ตรวจตัวกรองป้ายกำกับก่อน
หากรายการสนทนา WhatsApp ที่อ่านผ่าน UnifyPort มีแชตน้อยกว่าที่คาด ให้ตรวจคำขอก่อนเชื่อมต่อบัญชีใหม่ เอกสารระบุว่าเมื่อไม่ส่ง label_id จะคืนเฉพาะการสนทนาที่ติดดาว / “特别关注” ของ WhatsApp การอ่านจนหมดหน้าไม่ได้เปลี่ยนผลลัพธ์ที่ผ่านตัวกรองให้เป็นรายการแชตทั้งหมด การค้นหาการสนทนา การอ่านสมุดรายชื่อ และการขอข้อความย้อนหลังเป็นคนละงานกัน
ประเด็นสำคัญ
- การละ
label_idไม่ได้หมายถึง “แชต WhatsApp ทั้งหมด” - รายการป้ายกำกับคืนคำนิยามของป้าย ไม่ใช่รายการแชตใต้ป้ายนั้น
- ระหว่างอ่านแต่ละหน้า ต้องใช้บัญชีรับส่งข้อความและตัวกรองเดิม
- อย่าลบการสนทนาในฐานข้อมูลของคุณเพียงเพราะไม่พบในผลลัพธ์ที่กรองแล้ว
เริ่มจากแยกให้ออกว่ากำลังอ่านรายการใด
ศูนย์ช่วยเหลือ WhatsApp อธิบายว่าลิสต์เป็นตัวกรองแชตที่ปรับแต่งได้ ข้อมูลนี้ช่วยอธิบายแนวคิดของมุมมองที่มีตัวกรอง แต่ไม่ได้กำหนดพฤติกรรม API ของ UnifyPort และไม่ได้ยืนยันว่าทุกลิสต์ในแอปมี API ที่ตรงกัน
สำหรับการพัฒนา ให้ยึดเอกสาร List conversations ซึ่งระบุว่าเป็นการอ่านข้อมูลจากผู้ให้บริการแบบเรียลไทม์ ไม่ใช่การอ่านคลังแชตจากฐานข้อมูลภายใน UnifyPort
| การอ่าน | สิ่งที่ได้รับ | สิ่งที่ยังสรุปไม่ได้ |
|---|---|---|
รายการสนทนา WhatsApp โดยไม่ส่ง label_id | แชตที่ติดดาวหรือให้ความสำคัญ | แชตทั้งหมดในบัญชี |
รายการสนทนาที่ระบุ label_id | มุมมองของป้ายที่เลือก | รายการสนทนาทั้งบัญชี |
| รายการป้ายกำกับการสนทนา | ออบเจ็กต์ป้ายที่มี id และ name | แชตที่อยู่ในแต่ละป้าย |
| รายชื่อผู้ติดต่อ | รายการในสมุดรายชื่อของผู้ให้บริการ | การสนทนาหรือข้อความทั้งหมด |
| รายชื่อกลุ่ม | กลุ่มที่เข้าร่วม รวมกลุ่มที่ยังไม่เคยส่งข้อความ | แชตส่วนตัวหรือประวัติข้อความกลุ่ม |
อ่าน ID จากรายการป้ายกำกับของบัญชีที่ถูกต้อง อย่าใช้ชื่อที่แสดงแทน ID บทความอัปเดต API เดือนมิถุนายนแนะนำการสร้างป้ายและจัดการแชตในป้าย ส่วนบทความนี้มุ่งแก้ปัญหาขอบเขตการอ่าน เพื่อไม่ให้มองรายการเฉพาะกลุ่มเป็นข้อมูลทั้งหมด
ตรวจแชต WhatsApp ที่หายไปตามลำดับ
1. ยืนยันบัญชีและขอบเขตคำขอ
ตรวจข้อมูลรับรองของเวิร์กสเปซและ account_id ในคำขอ ID ของป้ายที่ได้จากอีกบัญชีหนึ่งไม่ใช่ตัวกรองที่เชื่อถือได้สำหรับบัญชีนี้ เก็บ API key ไว้ที่แบ็กเอนด์ และอย่าบันทึกข้อมูลรับรองลงในบันทึกวิเคราะห์ปัญหา
ระบุให้ชัดว่าไม่ได้ส่ง label_id หรือส่ง ID จริง อย่าสันนิษฐานว่าสตริงว่าง ไวลด์การ์ด หรือค่า “all” ที่ตั้งเองหมายถึงการอ่านทุกแชต เอกสารนี้ไม่ได้ระบุตัวเลือกสำหรับเลือกทุกการสนทนาแบบนั้น
ตัวกรอง type ที่ไม่บังคับรองรับค่าตรงตัวคือ user, group และ channel โดยคั่นด้วยจุลภาคและไม่ตัดช่องว่างให้ เช่น user,group ตรงตามไวยากรณ์ แต่ไม่ควรสร้าง user, group หากขอเฉพาะกลุ่ม การไม่เห็นแชตส่วนตัวไม่ได้แปลว่าการเชื่อมต่อเสีย
2. แบ่งหน้าภายในขอบเขตเดิม
limit รองรับ 1–100 และมีค่าเริ่มต้น 20 ใช้ data.next_cursor ต่อไปเมื่อ data.has_more ระบุว่ายังมีผลลัพธ์ โดยคงบัญชี ป้าย และชนิดการสนทนาไว้เหมือนเดิม ปฏิบัติต่อเคอร์เซอร์เป็นค่าทึบแสง ไม่ถอดรหัส แก้ไข หรือใช้ร่วมกันระหว่างคำขอต่างขอบเขต
เคอร์เซอร์ที่ไม่ถูกต้องหรือหมดอายุอาจถูกปฏิเสธ หรือทำให้เริ่มอ่านใหม่ ขึ้นอยู่กับผู้ให้บริการ แนะนำให้ไคลเอนต์ตรวจเคอร์เซอร์ซ้ำ รวมระเบียนซ้ำด้วย conversation_id ภายในขอบเขตบัญชี และหยุดพร้อมแสดงข้อมูลวิเคราะห์แทนการวนซ้ำไม่จบ หากต้องเริ่มใหม่จริง ให้เริ่มรอบใหม่ด้วยตัวกรองเดิมและกำจัดข้อมูลซ้ำอีกครั้ง
has_more: false หมายถึงจบการแบ่งหน้าของคำขอนั้น ไม่ได้พิสูจน์ว่ารวมป้ายอื่น แชตที่ไม่ได้เลือก หรือข้อความย้อนหลังแล้ว และเพราะเป็นการอ่านสด จึงไม่ควรถือว่าข้อมูลหลายหน้าเป็นสแนปช็อตที่รับประกันว่าจะไม่เปลี่ยน
3. อ่านแชตที่ทราบ ID อยู่แล้วโดยตรง
หากแอปมี ID การสนทนาจากเหตุการณ์ที่เชื่อถือได้หรือคำตอบ API ก่อนหน้า ให้ใช้Get conversationโดยส่ง conversation_id เป็นพารามิเตอร์คำค้น สร้างพารามิเตอร์ด้วยตัวเข้ารหัส URL แทนการใส่ ID ของผู้ให้บริการไว้ในส่วนพาธ
หากอ่านโดยตรงได้แต่ไม่พบในรายการ ให้ตรวจขอบเขตรายการก่อนสรุปว่าบัญชีหลุด แม้ได้ผลว่าไม่พบ ก็ยังต้องตรวจบัญชีและ ID ไม่ใช่นำไปเป็นเหตุผลลบประวัติในระบบ อย่าสร้าง ID การสนทนาจากชื่อที่แสดงหรือหมายเลขโทรศัพท์
4. เลือกการอ่านให้ตรงคำถาม
หากต้องการตรวจสมุดรายชื่อ ให้ใช้List contacts ซึ่งครอบคลุมผู้ติดต่อโดยไม่ขึ้นกับว่ามีประวัติข้อความหรือไม่ ใช้การจับคู่ conversation_id ที่คืนมาเมื่อทำงานกับแชต อย่าสันนิษฐานว่า id ของผู้ติดต่อใช้แทนกันได้ คู่มือซิงก์ชื่อผู้ติดต่ออธิบายขอบเขตของตัวระบุนี้เพิ่มเติม
List groupsช่วยอ่านกลุ่มที่เข้าร่วม แม้ยังไม่เคยใช้ส่งข้อความ การอ่านทั้งสองแบบไม่ใช่คลังข้อความ และการรวมผลลัพธ์ก็ไม่ได้ยืนยันว่าพบแชตส่วนตัวทั้งหมด
แสดงขอบเขตกล่องข้อความอย่างตรงไปตรงมา
แยกแนวคิดสามอย่างในแอป: การสนทนาที่เคยสังเกตพบ ผลตัวกรองปัจจุบันจากผู้ให้บริการ และข้อความที่จัดเก็บไว้ นี่คือขอบเขตข้อมูลที่แนะนำสำหรับแอป ไม่ใช่ฟิลด์ API เพิ่มเติม
หากแสดงเฉพาะป้ายหรือแชตที่ให้ความสำคัญ ให้ใช้ชื่อมุมมองตามจริง ไม่ใช้ “ทุกการสนทนา” เมื่อรายการหายจากตัวกรอง ให้เอาออกจากมุมมองนั้น ไม่ใช่ลบการสนทนาและข้อความในฐานข้อมูลโดยอัตโนมัติ แยกการอ่านล้มเหลวออกจากการอ่านสำเร็จแต่ไม่มีผลลัพธ์ด้วย หากกล่องข้อความรวม LINE อยู่ด้วย อย่านำค่าเริ่มต้นเฉพาะ WhatsApp นี้ไปใช้กับทุกช่องทาง
สำหรับข้อความใหม่ UnifyPort มีอินเทอร์เฟซที่ไม่เป็นทางการซึ่งส่งเหตุการณ์มาตรฐาน เช่น message.received ทำตามข้อกำหนดการส่ง webhook: ตั้ง signing_secret ตรวจ HMAC-SHA256 ของ X-Device-Timestamp ตามด้วยจุดและเนื้อหาคำขอดิบ ตรวจความใหม่ของเวลา และตอบ 2xx หลังจัดเก็บอย่างถาวรแล้ว เก็บ ID บัญชีและการสนทนาที่สังเกตพบไว้ค้นหาภายหลัง
วิธีนี้ไม่ได้รับประกันว่าจะค้นพบแชตที่ไม่มีทราฟฟิกที่คุณเคยรับ UnifyPort ไม่มี REST API สำหรับอ่านประวัติข้อความ และไม่รับประกันการส่งเหตุการณ์ที่พลาดซ้ำ ขั้นตอนขอประวัติ WhatsApp ตามต้องการเป็นการขอข้อความเก่าที่มีอยู่แบบอะซิงโครนัสสำหรับแชตส่วนตัวที่ทราบและเข้าเงื่อนไข ไม่ใช่การไล่รายชื่อทุกแชต
คำถามที่พบบ่อย
เพิ่ม limit แล้วจะเห็นทุกแชตหรือไม่?
ไม่ ค่าเปลี่ยนเพียงจำนวนรายการต่อหน้าภายในคำขอเดิม ไม่ยกเลิกขอบเขตเริ่มต้นของแชตที่ให้ความสำคัญ
ใช้ ID ป้ายแทน ID การสนทนาได้หรือไม่?
ไม่ได้ ป้ายระบุหมวดหมู่ ส่วนการสนทนาระบุแชต เป็นคนละทรัพยากร
รายการว่างแปลว่าต้องยืนยันตัวตนใหม่หรือไม่?
ไม่ ให้ตรวจบัญชี ตัวกรอง การแบ่งหน้า และข้อผิดพลาดก่อน อย่าเริ่มการยืนยันตัวตนใหม่เพียงเพราะมุมมองที่กรองแล้วว่าง
ขั้นตอนถัดไปและแหล่งอ้างอิง
ใช้บัญชีทดสอบที่ควบคุมได้ ตรวจคำขอกับเอกสารรายการสนทนา แล้วเปรียบเทียบแชตที่ทราบ ID ระหว่างการอ่านตรงกับการปรากฏในตัวกรอง ทดสอบการเปลี่ยนป้าย เคอร์เซอร์ซ้ำ และผลลัพธ์ว่าง ก่อนใช้รายการนี้กระทบยอดกล่องข้อความร่วม ทั้งหมดเป็นข้อเสนอการทดสอบ ไม่ใช่ผลการใช้งานจริง
ตรวจสอบแหล่งข้อมูลเมื่อ 2026-10-03:
เปลี่ยนการเชื่อมต่อข้อความให้เป็น pipeline ผลิตภัณฑ์ที่เสถียร
เริ่มจากการส่งผ่าน API เดียว แล้วส่งข้อความขาเข้าทั้งหมดกลับสู่ระบบธุรกิจของคุณด้วย event มาตรฐาน