โน้ตผู้ติดต่อ WhatsApp: ตั้งหรือล้างชื่อที่แสดงแบบส่วนตัว
หากต้องการตั้งชื่อที่แสดงแบบส่วนตัวให้ผู้ติดต่อ WhatsApp ผ่าน UnifyPort ให้เรียก POST /v1/accounts/{account_id}/contacts/note พร้อม contact_id และ note ที่เป็นสตริง หากต้องการล้างค่า ให้ส่ง note: "" อย่างชัดเจน การเรียกนี้เปลี่ยนโน้ตผู้ติดต่อฝั่งบัญชี ไม่ใช่โปรไฟล์สาธารณะของลูกค้า ข้อความในแชต หรือชื่อเรียกใน CRM ที่มองเห็นได้เฉพาะเจ้าหน้าที่คนเดียว
ประเด็นสำคัญ
- เอกสารระบุการรองรับสำหรับ
whatsappไม่ใช่ทุกผู้ให้บริการหรือwhatsapp-protocol - ต้องส่ง
noteเสมอ สตริงว่างหมายถึงล้างค่า ส่วนฟอร์มที่ไม่ได้แก้ไขไม่ควรส่งคำขอ - “มองเห็นเฉพาะบัญชี” ไม่ได้รับประกันการแยกสิทธิ์ระหว่างเจ้าหน้าที่ในกล่องข้อความร่วม
- แยกการเขียนโน้ต การซิงก์ชื่อจากสมุดรายชื่อ และการส่งข้อความออกจากกัน
เลือกก่อนว่าจะเปลี่ยนชื่อประเภทใด
ประกาศการจัดการผู้ติดต่อของ WhatsApp อธิบายการจัดการผู้ติดต่อผ่านอุปกรณ์ที่เชื่อมโยงกัน นี่เป็นข้อมูลพื้นฐานของข้อมูลฝั่งบัญชี ไม่ใช่ข้อกำหนดของ API โน้ตใน UnifyPort
| สิ่งที่ต้องการเปลี่ยน | ชั้นการทำงานที่เหมาะสม |
|---|---|
| ชื่อผู้ติดต่อที่กำหนดเองสำหรับบัญชีที่เชื่อมต่อ | โน้ตผู้ติดต่อของ UnifyPort |
| ชื่อเรียกที่เจ้าหน้าที่เพียงคนเดียวเห็น | ที่เก็บข้อมูลและสิทธิ์ของแอปเอง |
| ชื่อในสมุดรายชื่อที่เปลี่ยนจากฝั่งผู้ให้บริการ | มุมมองข้อมูลสำหรับซิงก์ชื่อแยกต่างหาก |
| แชร์ข้อมูลผู้ติดต่อในแชต | ข้อความนามบัตรผู้ติดต่อ |
สำหรับการรับการเปลี่ยนชื่อในสมุดรายชื่อ ให้ใช้คู่มือซิงก์ชื่อด้วย contact.updated อีเวนต์นี้ไม่เขียนทับชื่อเรียก และเอกสารไม่ได้รับประกันว่าจะเป็นสัญญาณยืนยันการบันทึกโน้ต หากต้องการเพิ่มหรือแชร์ผู้ติดต่อ ให้ดูความต่างระหว่างเพิ่มผู้ติดต่อกับส่ง vCard
หน้าจอควรแยก “โน้ตของบัญชี” กับ “ชื่อเรียกของฉัน” ไม่ควรตั้งชื่อทั้งสองช่องว่า “ชื่อส่วนตัว” แล้วเลือกที่บันทึกต่างกันโดยผู้ใช้ไม่รู้
ตั้งและล้างโน้ตผู้ติดต่อ WhatsApp
เอกสาร Set contact note กำหนดเมธอด คำขอ และผลตอบกลับเมื่อสำเร็จ ก่อนเปิดปุ่มบันทึกให้แต่ละช่องทาง ให้ตรวจสอบตารางการรองรับคำสั่ง แม้ LINE กับ WhatsApp จะอยู่ในหน้าจอเดียวกัน ก็ไม่ควรเปิดคำสั่งนี้ให้ LINE โดยอัตโนมัติ
เตรียม API key ของเวิร์กสเปซไว้ฝั่งเซิร์ฟเวอร์ และเลือกบัญชีรับส่งข้อความที่ต้องการ ตรวจสอบผู้ติดต่อภายใต้บัญชีเดียวกันตามเอกสารผู้ติดต่อ เก็บตัวระบุเป็นสตริงที่ไม่ตีความโครงสร้างเอง อย่าสร้างจากชื่อที่แสดงหรือสมมติว่าทุกคำสั่งรับตัวระบุรูปแบบเดียวกัน
| ฟิลด์ | ความหมาย |
|---|---|
contact_id | ผู้ติดต่อเป้าหมายของคำสั่ง |
note | ชื่อที่แสดงแบบกำหนดเอง ใช้ "" เพื่อล้างโน้ตเดิม |
ฟังก์ชัน JavaScript ต่อไปนี้แสดงการเรียกตามเอกสาร ให้ส่งตัวระบุบัญชีและผู้ติดต่อจริงที่แบ็กเอนด์เลือก และอ่านคีย์จากการตั้งค่าที่ปลอดภัย ตัวอย่างนี้ไม่มีการลองซ้ำอัตโนมัติและไม่ใช่แอปกล่องข้อความฉบับสมบูรณ์
async function setContactNote({ apiKey, accountId, contactId, note }) {
if (typeof note !== 'string') throw new TypeError('note must be a string');
if (!accountId || !contactId) throw new Error('Select account and contact');
const response = await fetch(
`https://api.unifyport.ai/v1/accounts/${encodeURIComponent(accountId)}/contacts/note`,
{
method: 'POST',
headers: {
'X-Api-Key': apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify({ contact_id: contactId, note })
}
);
const result = await response.json();
return { httpStatus: response.status, result };
}
เมื่อต้องการบันทึก ให้ส่งข้อความที่ผู้ใช้ยืนยัน เมื่อต้องการล้าง ให้เรียกฟังก์ชันเดิมด้วยสตริงว่าง อย่าแทนค่าฟอร์มที่หายไปด้วยสตริงว่าง เพราะจะทำให้ “ไม่ได้แก้ไข” กลายเป็นการล้างค่า ปฏิเสธ null ในแอป แทนการสร้างวิธีล้างค่าอีกแบบขึ้นเอง
ผลสำเร็จตามเอกสารคือ 200 OK พร้อม data.ok: true ตรวจสอบผลก่อนแสดงว่าบันทึกแล้ว การที่ fetch ทำงานจบไม่ได้หมายถึงคำสั่งสำเร็จเสมอไป
ป้องกันคำขอเก่าเขียนทับการแก้ไขใหม่
รายการต่อไปนี้เป็นแนวทางออกแบบแอป ไม่ใช่ฟิลด์ API เพิ่มเติมหรือการรับประกันการควบคุมงานพร้อมกันจากเซิร์ฟเวอร์:
- กำหนดขอบเขตหน้าจอแก้ไขและงานในคิวด้วยเวิร์กสเปซ บัญชีรับส่งข้อความ และผู้ติดต่อ ชื่อที่เหมือนกันไม่ใช่หลักฐานว่าเป็นคนเดียวกัน
- แยกสถานะไม่เปลี่ยนแปลง แก้ไขแล้ว และล้างค่าโดยชัดเจน ขอคำยืนยันการล้างเมื่อเหมาะสม
- เรียงคำสั่งเขียนสำหรับเป้าหมายเดียวกันภายในแอป ป้องกันการกดซ้ำและปฏิเสธงานเก่าก่อนส่ง
- บันทึกค่าที่ร้องขอ ผลลัพธ์ และ
request_idตามนโยบายเก็บข้อมูล ห้ามบันทึก API key ลงล็อก - เมื่อหมดเวลา ให้แสดงว่าผลลัพธ์ยังไม่ทราบ อย่าแจ้งว่าล้มเหลวหรือส่งค่าเก่าซ้ำอัตโนมัติ เพราะคนอื่นอาจบันทึกค่าใหม่แล้ว
การเรียงงานภายในแอปไม่สามารถประสานทุกไคลเอนต์ที่เชื่อมโยงได้ เอกสารสาธารณะไม่ได้กำหนดเงื่อนไขเวอร์ชัน ฟิลด์อ่านโน้ตกลับโดยเฉพาะ หรือ webhook การเปลี่ยนโน้ตที่รับประกันว่าจะส่งถึง อย่าสร้างวงจรยืนยันด้วยฟิลด์ที่สมมติขึ้น ให้ทดสอบพฤติกรรมฝั่งบัญชีอย่างควบคุม และคงสถานะไม่แน่นอนไว้เมื่อสังเกตผลไม่ได้
เอกสารข้อผิดพลาด ใช้ set_contact_note_failed สำหรับความล้มเหลวฝั่งเซิร์ฟเวอร์หรือผู้ให้บริการต้นทาง และ unsupported_by_provider สำหรับคำสั่งที่ไม่รองรับ ความไม่รองรับไม่ใช่เหตุผลให้ลองคำขอเดิมซ้ำไม่สิ้นสุด
รายการทดสอบและคำถามที่พบบ่อย
ควรทดสอบการตั้งค่า แทนที่ ล้างโดยชัดเจน ฟอร์มที่ไม่แก้ไข อินพุตที่ไม่ใช่สตริง การแก้ไขชนกันสองรายการ ผู้ให้บริการที่ไม่รองรับ และการหมดเวลา นี่เป็นรายการทดสอบที่แนะนำ ไม่ใช่ผลจากระบบจริง
นี่คือบันทึกลับของเคสบริการลูกค้าหรือไม่?
ไม่ใช่ เอกสารอธิบายว่าเป็นชื่อที่แสดงแบบกำหนดเองของผู้ติดต่อ ประวัติเคสยาว ๆ หรือความเห็นอ่อนไหวของเจ้าหน้าที่ควรอยู่ใน CRM ที่ควบคุมสิทธิ์ ไม่ใช่ช่องชื่อ
ล้างโน้ตแล้วผู้ติดต่อจะถูกลบหรือไม่?
ไม่ คำสั่งที่ระบุไว้ล้างเฉพาะโน้ต ไม่ใช่การลบผู้ติดต่อหรือข้อความ
ใช้กับ LINE, Zalo หรือ WhatsApp Protocol ได้หรือไม่?
ตารางปัจจุบันระบุการเขียนนี้สำหรับ whatsapp เท่านั้น อินเทอร์เฟซที่ไม่เป็นทางการของ UnifyPort ใช้รูปแบบ API ร่วมกัน แต่ไม่ได้ทำให้ทุกช่องทางมีความสามารถเท่ากัน
ใช้ contact.updated ยืนยันการบันทึกได้หรือไม่?
ไม่ได้ อีเวนต์นี้หมายถึงชื่อในสมุดรายชื่อเปลี่ยน ไม่ใช่ใบยืนยันที่รับประกันสำหรับการเขียนโน้ต
ขั้นตอนถัดไปและแหล่งข้อมูล
อ่านการตั้งโน้ตผู้ติดต่อ และทดสอบกับผู้ติดต่อที่ควบคุมได้ก่อนเปิดการแก้ไขฝั่งบัญชีในกล่องข้อความร่วม
ตรวจสอบเมื่อ 2026-10-13:
เปลี่ยนการเชื่อมต่อข้อความให้เป็น pipeline ผลิตภัณฑ์ที่เสถียร
เริ่มจากการส่งผ่าน API เดียว แล้วส่งข้อความขาเข้าทั้งหมดกลับสู่ระบบธุรกิจของคุณด้วย event มาตรฐาน