BotKit
บทความ › แชทบอท LINE / Facebook

LINE OA ฟรีส่งได้ 300 ข้อความ/เดือน: ข้อความแบบไหนนับโควตา และทำไมบอทแจ้งเตือนถึงเงียบ

วันหนึ่งระบบดักงานที่ผมทำไว้ ซึ่งคอยส่ง LINE มาบอกว่ามีงานใหม่เข้า เงียบไปเฉยๆ ทั้งวัน เปิดหน้าตั้งค่าดู token ยังถูก บอทยังออนไลน์ หน้าสถานะยังเขียวทุกอย่าง แต่ไม่มีข้อความเข้าสักข้อความ สาเหตุคือ โควตาข้อความของ LINE OA แพ็กเกจฟรีเต็มแล้ว

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

ในบทความนี้
  1. โควตาของแพ็กเกจฟรีเท่าไหร่
  2. reply กับ push ต่างกันยังไง
  3. อาการเมื่อโควตาเต็ม
  4. วิธีออกแบบไม่ให้เงียบ

1. แพ็กเกจฟรีของ LINE OA ส่งได้เท่าไหร่

LINE for Business ประเทศไทยประกาศปรับแพ็กเกจตั้งแต่ 1 ส.ค. 2024 แพ็กเกจฟรีส่งข้อความได้ 300 ข้อความต่อเดือน (เดิม 500) ส่วนแพ็กเกจ Pro ได้ 35,000 ข้อความต่อเดือน และข้อความส่วนเกินคิดข้อความละ 0.06 บาท

⚠️ ราคาและโควตาเป็นสิ่งที่ LINE ปรับได้เรื่อยๆ ก่อนตัดสินใจเลือกแพ็กเกจ ให้ตรวจที่หน้าประกาศของ LINE for Business ประเทศไทยอีกครั้ง ตัวเลขข้างบนอ้างอิงประกาศเดือนมิถุนายน 2024

สิ่งที่ต้องเข้าใจคือ "300 ข้อความ" ไม่ได้หมายถึงข้อความทุกแบบที่บอทส่ง

2. Reply message กับ Push message ต่างกันยังไง

ใน Messaging API การส่งข้อความหลักๆ มีสองแบบ

แบบใช้เมื่อนับโควตาไหม
Replyตอบกลับทันทีหลังผู้ใช้ส่งข้อความมา โดยใช้ replyToken ที่มากับ webhookไม่นับ (ฟรี)
Push / Multicast / Broadcastบอทเป็นฝ่ายส่งไปหาเอง เช่น แจ้งเตือนคิว ส่งโปรโมชั่น แจ้งเจ้าของร้านว่ามีออเดอร์นับ

แปลว่าบอทที่ตอบแชทลูกค้าอย่างเดียวแทบไม่กินโควตาเลย แต่ทันทีที่มีฟีเจอร์แบบ "มีจองใหม่เด้งเข้า LINE เจ้าของร้าน" หรือ "เตือนลูกค้าก่อนถึงคิว 1 วัน" ทุกข้อความนั้นคือ push ที่นับโควตา

กับดักของ replyToken

replyToken ใช้ได้ครั้งเดียวและมีอายุสั้น ถ้าระบบเรียก AI แล้วรอคำตอบนาน หรือคิวงานค้างจนตอบช้า token อาจหมดอายุ หลายคนแก้ด้วยการเปลี่ยนไปใช้ push แทน ซึ่งทำงานได้ แต่ทุกคำตอบจะกลายเป็นข้อความที่นับโควตาโดยไม่รู้ตัว ถ้าจำเป็นต้องใช้ AI ที่ตอบช้า ให้ตั้งเวลาตัด (timeout) ไว้ และเตรียมคำตอบสำรองที่ตอบผ่าน reply ได้ทันที

3. อาการเมื่อโควตาเต็ม

  • คำสั่ง push ได้ error จาก API กลับมา แต่ถ้าโค้ดไม่ได้เช็คผลลัพธ์ จะไม่มีอะไรฟ้องเลย
  • บอทยังตอบแชทได้ปกติ (เพราะ reply ไม่นับ) ทำให้คิดว่าระบบปกติ
  • หน้าตั้งค่าที่เช็คแค่ "ตั้ง token ไว้หรือยัง" ยังขึ้นเขียว เพราะ token ไม่ได้ผิด

อาการผสมแบบนี้ทำให้หาสาเหตุยากมาก เพราะทุกอย่างดูเหมือนทำงานอยู่

4. ออกแบบยังไงไม่ให้ระบบแจ้งเตือนเงียบ

เช็คผลการส่งทุกครั้ง

อย่าเรียก API แล้วทิ้ง ให้เช็ค HTTP status ที่ได้กลับมา ถ้าไม่ใช่ 200 ให้บันทึก log พร้อมข้อความ error และนับไว้ว่าวันนี้ส่งไม่สำเร็จกี่ครั้ง

r = requests.post("https://api.line.me/v2/bot/message/push",
                  headers={"Authorization": f"Bearer {token}"},
                  json={"to": user_id, "messages": [{"type": "text", "text": msg}]},
                  timeout=10)
if r.status_code != 200:
    log_error("line_push", r.status_code, r.text[:300])   # อย่าเงียบ
    return False
return True

มีช่องแจ้งเตือนสำรอง

โควตาผูกกับ LINE OA แต่ละบัญชีแยกกัน ถ้ามี OA ตัวที่สองไว้ใช้ภายใน ให้ระบบลองช่องหลักก่อน ถ้าส่งไม่สำเร็จค่อยลองช่องสำรอง เพดานรวมจะเพิ่มเป็นสองเท่าทันที หรือจะใช้ช่องทางอื่นเป็นสำรองก็ได้ เช่น อีเมล หรือ Telegram

รวมแจ้งเตือนเป็นข้อความเดียว

ถ้ามีงานเข้า 5 งานในรอบเดียว ส่งสรุป 1 ข้อความดีกว่าส่ง 5 ข้อความ LINE นับโควตาตามจำนวนผู้รับต่อการส่งหนึ่งครั้ง การ push หนึ่งครั้งใส่ข้อความ (message object) ได้สูงสุด 5 ก้อน และยังนับเป็นการส่งครั้งเดียว ถ้าต้องส่งหลายเรื่องพร้อมกัน รวมไว้ในการเรียกครั้งเดียวจะประหยัดกว่า (วิธีนับอาจเปลี่ยน ให้ตรวจหน้า pricing ของ LINE Developers อีกครั้ง)

ทำหน้าสถานะที่ทดสอบจริง

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

สรุป

  • แพ็กเกจฟรีมีโควตา 300 ข้อความ/เดือน แต่นับเฉพาะข้อความที่บอทส่งเอง (push/multicast/broadcast)
  • การตอบกลับด้วย replyToken ไม่นับโควตา ระวังอย่าเปลี่ยนไปใช้ push โดยไม่จำเป็น
  • เช็คผลการส่งทุกครั้ง มีช่องสำรอง และรวมแจ้งเตือนเป็นก้อน

ถ้าใส่ ID ผิดตัวก็ส่งไม่ออกเหมือนกัน และอาการคล้ายกันมาก อ่านต่อได้ที่ LINE User ID กับ Bot Basic ID ต่างกันยังไง

เกี่ยวกับผู้เขียน — Jark นักพัฒนา LINE Bot และระบบ AI อัตโนมัติ อยู่เชียงใหม่ ทำระบบตอบแชทและจองคิวให้ร้านค้าจริง บทความในเว็บนี้มาจากงานที่ลงมือทำเอง อ่านเพิ่ม