← บทความทั้งหมด
บทช่วยสอน

เปลี่ยนแอดมินกลุ่ม WhatsApp ผ่าน API: แต่งตั้งหรือถอดสิทธิ์

หากต้องการเปลี่ยนแอดมินกลุ่ม WhatsApp ผ่าน UnifyPort ให้เรียก POST /v1/accounts/{account_id}/groups/members พร้อม group_id, LID ของสมาชิกใน member_id และ action: "promote" หรือ "demote" แต่ละครั้งจัดการสมาชิกหนึ่งคนด้วยหนึ่งคำสั่ง การถอดสิทธิ์แอดมินไม่ใช่คำสั่ง remove ที่นำสมาชิกออกจากกลุ่ม อ่านสถานะสมาชิกปัจจุบันก่อน และอย่านำผู้สร้างกลุ่มเข้าสู่ขั้นตอนถอดสิทธิ์ทั่วไป

ประเด็นสำคัญ

  • เลือกบัญชีรับส่งข้อความ กลุ่ม และสมาชิกเป็นชุดเดียวกัน ชื่อที่แสดงไม่ใช่ตัวระบุ
  • ใช้ LID ที่รายการสมาชิกคืนมาใน peer_id อย่าสร้างจากหมายเลขโทรศัพท์
  • แยก member, admin และ superadmin ก่อนเปิดใช้ปุ่มเปลี่ยนบทบาท
  • อ่านสถานะอีกครั้งหลังส่งคำขอ อย่าส่งคำสั่งตรงข้ามอัตโนมัติเมื่อหมดเวลารอ

กำหนดการเปลี่ยนบทบาทให้ชัดเจน

คู่มือแอดมินกลุ่มอย่างเป็นทางการของ WhatsApp อธิบายการถอดแอดมิน และระบุว่าผู้สร้างกลุ่มไม่สามารถถูกนำออกได้และจะยังเป็นแอดมินจนกว่าจะออกจากกลุ่มเอง การเชื่อมต่อ API ไม่ได้เปลี่ยนกติกานี้

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

บทบาทที่อ่านได้ความตั้งใจของผู้ปฏิบัติงานสิ่งที่แอปควรทำ
memberแต่งตั้งเป็นแอดมินเสนอ promote หลังตรวจสอบสิทธิ์
adminให้อยู่ในกลุ่มต่อ แต่ถอดสิทธิ์แอดมินเสนอ demote หลังยืนยัน
superadminถอดสิทธิ์ผู้สร้างหยุดขั้นตอนและอธิบายข้อจำกัด
เป็นบทบาทที่ต้องการอยู่แล้วทำคำสั่งเดิมซ้ำอัปเดตหน้าจอแทนการส่งซ้ำ
ข้อมูลสมาชิกหาย ไม่ทราบ หรือไม่ครบเปลี่ยนบทบาทต่อไปอ่านใหม่หรือให้คนตรวจสอบ

นี่ไม่ใช่ขั้นตอนอนุมัติเข้ากลุ่ม หากต้องตัดสินว่าใครเข้าร่วมได้ ให้ใช้คิวอนุมัติคำขอเข้ากลุ่ม WhatsApp หากต้องแจกคำเชิญ ให้ใช้ขั้นตอนลิงก์เชิญกลุ่ม แยกต่างหาก ทั้งสองอย่างไม่ได้แต่งตั้งแอดมิน

เก็บข้อมูลสมาชิกที่เลือกจากรายการปัจจุบัน

เรียกรายการสมาชิกการสนทนา ภายใต้บัญชีที่เลือก ส่ง conversation_id ของกลุ่ม อ่านหน้าถัดไปด้วย cursor และเก็บ peer_id กับ role ของรายการที่เลือก บทบาทที่ระบุในเอกสารคือ member, admin และ superadmin ซึ่งค่าหลังหมายถึงเจ้าของหรือผู้สร้างกลุ่ม

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

curl --get \
  "https://api.unifyport.ai/v1/accounts/${UNIFYPORT_ACCOUNT_ID}/conversations/members" \
  -H "X-Api-Key: ${UNIFYPORT_API_KEY}" \
  --data-urlencode "conversation_id=${WHATSAPP_GROUP_ID}" \
  --data-urlencode "type=group" \
  --data-urlencode "limit=50"

หาก data.has_more เป็นจริง ให้ใช้ data.next_cursor ที่คืนมาเพื่ออ่านต่อ การไม่พบคนในหน้าแรกไม่ได้พิสูจน์ว่าเขาออกจากกลุ่ม เก็บ LID ตามที่ได้รับ อย่าประกอบจากเบอร์โทร ชื่อที่แสดง หรือตัวระบุผู้เข้าร่วมในอีเวนต์ที่ใช้รูปแบบต่างกัน

ก่อนส่ง ตรวจสอบว่าผู้ปฏิบัติงานมีสิทธิ์จัดการบัญชีและกลุ่มนี้ และบัญชี WhatsApp ที่เชื่อมต่อมีอำนาจจัดการกลุ่มตามที่ต้องใช้ สิทธิ์เรียก API ของเวิร์กสเปซไม่เท่ากับสิทธิ์แอดมินกลุ่ม เก็บ API Key ไว้ฝั่งเซิร์ฟเวอร์

ส่งการเปลี่ยนแปลงที่ชัดเจนทีละรายการ

เอกสารจัดการสมาชิกกลุ่ม ระบุคำสั่ง add, remove, promote และ demote การเปลี่ยนบทบาทใช้เฉพาะสองคำสั่งหลัง พร้อม member_id แบบเอกพจน์ ไม่ใช่อาร์เรย์ member_ids ของการอนุมัติเข้ากลุ่ม

JavaScript นี้เป็นตัวอย่างสร้างเนื้อหาคำขอจากสมาชิกที่เลือกไว้เท่านั้น ไม่ได้ตรวจสอบการอนุญาตหรือส่งคำขอเครือข่าย:

function roleChangeBody(groupId, selectedMember, action) {
  const expectedRole = { promote: 'member', demote: 'admin' };
  if (!Object.hasOwn(expectedRole, action) ||
      selectedMember?.role !== expectedRole[action]) {
    throw new Error('Refresh membership before changing this role');
  }
  if (!groupId || !selectedMember?.peer_id?.endsWith('@lid')) {
    throw new Error('Select a group and a returned WhatsApp member LID');
  }
  return {
    group_id: groupId,
    member_id: selectedMember.peer_id,
    action
  };
}

ส่ง JSON จากแบ็กเอนด์ไปยังเอนด์พอยต์ที่ระบุพร้อม X-Api-Key การตรวจส่วนท้ายเป็นเพียงตัวป้องกันข้อผิดพลาดในแอป ไม่ใช่หลักฐานยืนยันตัวตนหรือสิทธิ์ หน้ายืนยันควรระบุกลุ่ม สมาชิก และคำสั่งให้ชัด อย่าเลือกเป้าหมายจากแถวแรกของรายการที่กำลังเปลี่ยนแปลง

UnifyPort เป็น อินเทอร์เฟซที่ไม่เป็นทางการ สำหรับบัญชีที่เชื่อมต่อ ตารางรองรับคำสั่งตามช่องทาง ปัจจุบันระบุการเขียนนี้สำหรับ whatsapp เท่านั้น ไม่รวม LINE, Telegram หรือผู้ให้บริการแยกอย่าง whatsapp-protocol การอ่านสมาชิกหรือรับอีเวนต์กลุ่มของ LINE ได้ ไม่ได้หมายความว่าจะเปลี่ยนบทบาทผ่านคำสั่งนี้ได้

ตรวจสอบผลโดยไม่สมมติว่าเป็นธุรกรรมเดียว

เอกสารระบุผลสำเร็จเป็น 200 OK พร้อม data.ok: true เก็บผล HTTP และ request_id จากนั้นอ่านสมาชิกใหม่ เพื่อแสดงบทบาทที่สังเกตได้แยกจากความตั้งใจของผู้ปฏิบัติงาน

มาตรการที่แนะนำ:

  1. จัดลำดับการเปลี่ยนแปลงภายในแอปสำหรับบัญชี กลุ่ม และสมาชิกเดียวกัน
  2. ตรวจบทบาทอีกครั้งก่อนส่ง แอดมินคนอื่นอาจแก้ไขไปแล้วหลังเปิดกล่องยืนยัน
  3. เมื่อหมดเวลารอ ให้ระบุว่าผลยังไม่แน่ชัดแล้วตรวจสมาชิกปัจจุบัน อย่าส่งซ้ำหรือส่งคำสั่งตรงข้ามเพื่อชดเชยโดยอัตโนมัติ
  4. อย่ามองการส่งต่องานหลายคนเป็นธุรกรรมแบบอะตอม หากย้ายหน้าที่ ให้ตรวจว่าคนใหม่มีบทบาทแอดมินแล้ว ก่อนพิจารณาถอดสิทธิ์คนเดิมเป็นอีกขั้นตอนหนึ่ง

อีเวนต์มาตรฐาน group.updated อาจมีรายการใน data.changes[] ที่ใช้ kind: "promoted" หรือ "demoted" พร้อม members[] ใช้เพื่อเริ่มตรวจสอบสถานะใหม่ได้ แต่ไม่ใช่ใบยืนยันที่รับประกันว่าจะมีสำหรับทุกคำขอ ตัวระบุผู้เข้าร่วมในอีเวนต์ก็ไม่ได้เป็น LID ที่ใช้เขียนครั้งถัดไปได้เสมอ หากรับ webhook ให้ทำตามเอกสารลายเซ็นและการส่งอีเวนต์ ตรวจสอบก่อนเชื่อถือเนื้อหา และรองรับอีเวนต์ซ้ำหรือมาถึงผิดลำดับ

คำถามที่พบบ่อย

demote นำสมาชิกออกจากกลุ่มหรือไม่?

ไม่ การถอดสิทธิ์แอดมินกับการนำสมาชิกออกเป็นคนละคำสั่ง อย่าผูกปุ่มถอดแอดมินกับ remove

เปลี่ยนบทบาทของผู้สร้างกลุ่มได้หรือไม่?

อย่าเสนอการกระทำนี้ในขั้นตอนดังกล่าว WhatsApp ระบุว่าผู้สร้างยังเป็นแอดมินจนกว่าจะออกเอง และรายการสมาชิกของ UnifyPort แสดงบทบาทนี้เป็น superadmin

เปลี่ยนแอดมินหลายคนในคำขอเดียวได้หรือไม่?

เอนด์พอยต์นี้ทำไม่ได้ รับหนึ่ง member_id และหนึ่งคำสั่งต่อครั้ง หากแอปทำงานเป็นชุด ต้องบันทึกผลแยกแต่ละรายการ

ขั้นตอนถัดไปและแหล่งข้อมูล

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

ตรวจสอบข้อมูลวันที่ 2026-10-17:

UnifyPort API

เปลี่ยนการเชื่อมต่อข้อความให้เป็น pipeline ผลิตภัณฑ์ที่เสถียร

เริ่มจากการส่งผ่าน API เดียว แล้วส่งข้อความขาเข้าทั้งหมดกลับสู่ระบบธุรกิจของคุณด้วย event มาตรฐาน