ไม่สามารถทำได้โดยตรงผ่าน LINE LIFF ครับ
เนื่องจาก LINE LIFF (LINE Front-end Framework) ถูกออกแบบมาให้ทำงานบนฝั่งผู้ใช้งาน (Client-side) เป็นหลัก โดยฟังก์ชันการส่งข้อความของ LIFF เช่น liff.sendMessages() หรือ liff.shareTargetPicker() จะมีข้อจำกัดด้านความเป็นส่วนตัวและความปลอดภัยสูงมาก คือ ผู้ใช้จะต้องเป็นคนกดเลือกห้องแชทด้วยตัวเอง และส่งได้จำกัดจำนวนห้องต่อครั้ง ไม่สามารถสั่งให้ระบบส่งกระจาย (Broadcast) หาทางสมาชิกทุกคนหรือทุกห้องแชทพร้อมกันโดยอัตโนมัติได้ครับ
💡 แนวทางการแก้ไขปัญหา (Workarounds)
หากต้องการทำระบบ “สร้าง Note แล้วให้กระจายข่าวหาทุกคน/ทุกห้อง” คุณจำเป็นต้องใช้ LINE Messaging API เข้ามาทำงานร่วมกับ LIFF โดยแบ่งหน้าที่กันดังนี้:
- ใช้ LIFF เป็นหน้าตาโปรแกรม (Frontend): ให้ผู้ใช้เปิด LIFF ขึ้นมาเพื่อพิมพ์ข้อความ พิมพ์โน้ต หรืออัปโหลดรูปภาพได้อย่างสวยงาม
- ใช้ LINE Messaging API (Backend): เมื่อผู้ใช้กดปุ่ม “บันทึกโน้ต” บน LIFF ให้ส่งข้อมูลโน้ตนั้นกลับไปยัง Server ของคุณ จากนั้นให้ Server สั่งคำสั่งของ Messaging API เพื่อส่งข้อความออกไป
โดยการส่งผ่าน Messaging API มี 2 รูปแบบหลักๆ ตามวัตถุประสงค์ของคุณครับ:
- กรณีส่งหา “สมาชิกทุกคนที่เป็นเพื่อนกับ LINE OA”:
- ใช้คำสั่ง Broadcast API (
/v2/bot/message/broadcast) - ข้อดี: ส่งหาผู้ติดตามทุกคนได้ในคลิกเดียวจากระบบหลังบ้าน
- ใช้คำสั่ง Broadcast API (
- กรณีส่งหา “ห้องแชทกลุ่ม (Group) หรือห้องแชทหลายคน (Room)”:
- ใช้คำสั่ง Multicast API (
/v2/bot/message/multicast) - ข้อดี: ส่งหาหลายๆ กลุ่มพร้อมกันได้ (สูงสุด 500 target IDs ต่อ 1 การเรียก API)
- เงื่อนไข: ระบบหลังบ้านของคุณต้องมีการเก็บตารางรายชื่อ
groupIdหรือroomIdของทุกห้องที่ LINE OA นั้นแฝงตัวอยู่ไว้ใน Database ก่อน จึงจะสามารถระบุเป้าหมายเพื่อส่งพร้อมกันได้
- ใช้คำสั่ง Multicast API (