เมนชันในกลุ่มผ่าน UnifyPort: แก้แท็กที่กลายเป็นข้อความใน LINE และ WhatsApp
หากข้อความกลุ่มที่ส่งผ่าน UnifyPort แสดงตัวทำเครื่องหมายเมนชันเป็นข้อความธรรมดา ให้ตรวจคำขอทั้งสองส่วน: อาร์เรย์ mentions ระดับบนสุดระบุสมาชิกที่ต้องการเมนชัน ส่วน {{@<id>}} ใน message.text หรือ message.caption ระบุตำแหน่งที่จะแสดงแท็ก ตัวทำเครื่องหมายต้องตรงกับ ID เต็มในอาร์เรย์ หรือส่วนของ ID ก่อน @ หากไม่ตรง ระบบจะส่งเป็นข้อความตามตัวอักษร ซึ่งไม่ได้แปลว่าการส่งทั้งข้อความล้มเหลว
ประเด็นสำคัญ
- ชื่อที่แสดงอย่าง
@Alexเพียงอย่างเดียวใช้แทนโครงสร้างเมนชันตามเอกสารไม่ได้ - วาง
mentionsระดับเดียวกับmessageไม่ใช่ภายในprovider_data - สัญญานี้รองรับเมนชันข้อความสำหรับ LINE ส่วน WhatsApp รองรับทั้งข้อความและคำบรรยายสื่อ
- ผู้ให้บริการอื่นจะละเว้น
mentionsการส่งสำเร็จจึงไม่ได้พิสูจน์ว่าเมนชันทำงาน
จับคู่กลุ่ม สมาชิก และตำแหน่งแท็ก
เอกสารการส่งเมนชัน แยกข้อมูลออกเป็นสามส่วน:
| ข้อมูล | หน้าที่ | ข้อผิดพลาดที่พบบ่อย |
|---|---|---|
to.id พร้อม to.type: group | เลือกกลุ่มปลายทาง | ใช้สมาชิกที่ถูกเมนชันเป็นปลายทาง |
mentions[].id ระดับบนสุด | ระบุคนที่จะเมนชัน | ใส่เพียงชื่อที่แสดง |
| ตัวทำเครื่องหมายในข้อความหรือคำบรรยาย | ระบุตำแหน่งแท็ก | อ้าง ID ที่ไม่มีในอาร์เรย์ |
ตัวอย่างเชิงไวยากรณ์: หาก ID คือ 100000000000002@lid กฎการจับคู่รองรับทั้ง {{@100000000000002@lid}} และ {{@100000000000002}} นี่ไม่ใช่ข้อมูลผู้รับจริง สำหรับข้อความที่สร้างอัตโนมัติ แนะนำให้ใช้ ID เต็มเพื่อให้ความสัมพันธ์ชัดเจน อย่าเปลี่ยนส่วนท้ายของ ID หรือเดา ID จากชื่อ
ในช่องทางที่รองรับ ให้ใช้รายการสมาชิกการสนทนา เพื่อตรวจสมาชิกของกลุ่มที่เลือก รายการมี peer_id และ display_name และรองรับการแบ่งหน้า เก็บบริบทบัญชีรับส่งข้อความและกลุ่มไว้กับการเลือกสมาชิกเสมอ ชื่อที่แสดงไม่ใช่คีย์ระบุตัวตน
การเมนชันคนยังต่างจากการอ้างอิงข้อความ คู่มือการตอบแบบอ้างอิงของ WhatsApp ใช้โทเคนตอบกลับแบบทึบแสงเพื่อเลือกเนื้อหา เมนชันเลือกคน ส่วนการอ้างอิงเลือกข้อความ จึงไม่ควรสลับฟิลด์กัน
สร้างทั้งสองส่วนจากการเลือกเดียวกัน
JavaScript ต่อไปนี้เป็นฟังก์ชันในแอปสำหรับสร้าง คำขอข้อความ ไม่ใช่โปรแกรมส่งที่สมบูรณ์ อาร์กิวเมนต์ควรมาจากบัญชี กลุ่ม และ ID สมาชิกที่ตรวจสอบแล้วซึ่งผู้ปฏิบัติงานที่มีสิทธิ์เลือก ส่วนข้อความมาจากฉบับร่างที่ผ่านการตรวจ การตรวจในแอปนี้ตั้งใจเข้มงวดกว่า API โดยไม่อนุญาตให้ฉบับร่างเพิ่มตัวทำเครื่องหมายเมนชันเอง
function buildGroupMention({ provider, accountId, groupId, memberId, text }) {
if (!['whatsapp', 'line'].includes(provider)) {
throw new Error('Mention sending is not enabled for this provider');
}
if (![accountId, groupId, memberId, text].every(
value => typeof value === 'string' && value.trim().length > 0
)) {
throw new Error('Account, group, member, and text are required');
}
if (/[{}\s]/u.test(memberId) || text.includes('{{@')) {
throw new Error('Use the selected member to create the mention marker');
}
return {
account_id: accountId,
to: { id: groupId, type: 'group' },
message: { type: 'text', text: `{{@${memberId}}} ${text}` },
mentions: [{ id: memberId }]
};
}
ส่ง JSON ที่ได้ไปยัง POST /v1/messages โดยใช้ X-Api-Key ฝั่งเซิร์ฟเวอร์ ฟังก์ชันนี้ไม่ได้ตรวจสถานะสมาชิก สิทธิ์ผู้ปฏิบัติงาน หรือความพร้อมของบัญชี ต้องตรวจแยกก่อนส่ง การยืนยันตัวตนสำเร็จกับการเชื่อมต่อที่กำลังทำงานเป็นคนละเรื่องกัน
หากเมนชันหลายคน ให้สร้างรายการ ID และตัวทำเครื่องหมายทั้งหมดพร้อมกัน หลังประมวลผลเทมเพลตหรือให้ AI ร่างข้อความแล้ว ให้ตรวจ JSON สุดท้าย อย่าให้ขั้นตอนถัดไปลบสมาชิกจากอาร์เรย์แต่ทิ้งแท็กไว้
ตรวจสาเหตุก่อนส่งอีกครั้ง
| สิ่งที่พบ | จุดตรวจ | วิธีแก้ |
|---|---|---|
เห็น {{@...}} ตามตัวอักษร | ตัวทำเครื่องหมายตรงกับ ID หรือไม่ | สร้างทั้งสองส่วนจากสมาชิกที่เลือกคนเดียวกัน |
ใช้ provider_data.mentions | ตำแหน่งฟิลด์เก่า | ย้ายไป mentions ระดับบนสุด ฟิลด์เก่าไม่ถูกนำมาใช้แล้ว |
มีแค่ @Alex ในฉบับร่าง | ขาด ID และตัวทำเครื่องหมาย | เลือกสมาชิกแล้วสร้างข้อมูลทั้งสองส่วน |
| เมนชันในคำบรรยายสื่อของ LINE | ขอบเขตการรองรับ | หากจะส่งข้อความแยก ต้องตรวจและอนุมัติก่อน ไม่ส่งเพิ่มโดยเงียบ ๆ |
ใส่ mentions ให้ Telegram, X, Zalo หรือ TikTok | ข้อจำกัดผู้ให้บริการ | ปิดตัวควบคุมเมนชันนี้ อย่าถือว่าการรับคำขอเท่ากับแท็กสำเร็จ |
กฎเหล่านี้มาจากตารางรองรับข้อความปัจจุบัน ไม่ใช่การรับประกันว่าทุกบัญชีหรือระบบต้นทางจะทำงานเหมือนกัน whatsapp-protocol เป็นผู้ให้บริการแยกต่างหากและไม่ได้รับความสามารถเมนชันของ WhatsApp โดยอัตโนมัติ
คำบรรยายสื่อของ WhatsApp ยังต้องใช้คำขอสื่อที่ถูกต้อง ปัญหาการเข้าถึงไฟล์และการนำส่งให้ตรวจตามคู่มือแก้ปัญหาการส่งสื่อ การแก้รูปแบบเมนชันไม่ได้ทำให้ URL สื่อที่เสียกลับมาใช้งานได้
แยกจากไวยากรณ์ของ LINE โดยตรง
เอกสารประเภทข้อความของ LINE อธิบายข้อความแบบ v2 ซึ่งแทนสตริงในวงเล็บปีกกาด้วยเมนชันและอีโมจิได้ นั่นคือสัญญาของ Messaging API โดยตรง ไม่ได้แปลว่าออบเจ็กต์ LINE ใช้แทน message และ mentions ระดับบนสุดของ UnifyPort ได้ทันที
หากเชื่อมต่อ API ทางการโดยตรง ให้ทำตามเอกสารของ API นั้น UnifyPort เป็นอินเทอร์เฟซที่ไม่เป็นทางการ จุดส่งร่วมไม่ได้รองรับทุกความสามารถของแพลตฟอร์ม และไม่ได้รับประกันว่าผู้รับจะเห็นการแจ้งเตือน
การตรวจรับและคำถามที่พบบ่อย
ก่อนเปิดใช้ ให้ทดสอบในสภาพแวดล้อมที่ได้รับอนุญาต: ID เต็มที่ตรงกัน ตัวทำเครื่องหมายที่ตั้งใจให้ไม่ตรง ฟิลด์เก่า เมนชันข้อความ LINE และผู้ให้บริการที่ไม่รองรับ ตรวจทั้งผล HTTP และการแสดงผลฝั่งผู้รับ รายการนี้เป็นข้อเสนอการทดสอบ ไม่ใช่ผลทดสอบที่ทำแล้ว
accepted พิสูจน์ว่าเมนชันหรือแจ้งเตือนสำเร็จหรือไม่?
ไม่ ควรแยกการรับคำขอ การนำส่ง การแสดงเมนชัน และพฤติกรรมการแจ้งเตือนออกจากกัน การหมดเวลารอก็ไม่ได้พิสูจน์ว่าไม่ได้ส่ง ต้องตรวจสอบก่อนส่งซ้ำ
ใช้ data.message.mentions ขาเข้าเป็นคำขอขาออกได้เลยไหม?
ไม่ได้ใช้โดยไม่แปลง เอกสารอีเวนต์ ระบุฟิลด์ขาเข้าแบบไม่บังคับเป็น data.message.mentions ส่วนขาออกอยู่ระดับบนสุดและต้องตรงกับตัวทำเครื่องหมายที่สร้าง ตรวจปลายทางและคนที่ตั้งใจเมนชัน แทนการแท็กทุกคนจากข้อความขาเข้าโดยอัตโนมัติ
ใช้กับทุกช่องทางที่เชื่อมต่อได้ไหม?
สัญญานี้รองรับข้อความและคำบรรยายของ WhatsApp กับข้อความของ LINE เท่านั้น ผู้ให้บริการอื่นละเว้นฟิลด์นี้
ขั้นตอนถัดไปและแหล่งอ้างอิง
เริ่มจากข้อกำหนดคำขอเมนชันในกลุ่ม และสมาชิกหนึ่งคนที่เลือกอย่างชัดเจน ก่อนเปิดการตอบกลุ่มที่สร้างอัตโนมัติ
ตรวจเอกสารเมื่อ 2026-10-10:
เปลี่ยนการเชื่อมต่อข้อความให้เป็น pipeline ผลิตภัณฑ์ที่เสถียร
เริ่มจากการส่งผ่าน API เดียว แล้วส่งข้อความขาเข้าทั้งหมดกลับสู่ระบบธุรกิจของคุณด้วย event มาตรฐาน