LINE User ID กับ Bot Basic ID ต่างกันยังไง — ใส่ผิดตัวเดียว ส่งข้อความไม่ออกทั้งระบบ
ตอนตั้งระบบให้ส่งแจ้งเตือนเข้า LINE ของตัวเอง ช่องที่ต้องกรอกช่องหนึ่งคือ "user ID ของผู้รับ" ปัญหาคือในหน้า LINE Developers มี ID หลายตัวที่หน้าตาคล้ายกัน คนที่กรอกผิดส่วนใหญ่ไม่ได้พิมพ์ผิด แต่หยิบ ID ผิดตัวมาตั้งแต่แรก แล้ว API ก็ตอบ error กลับมาโดยที่ไม่บอกตรงๆ ว่าใส่ผิดประเภท
ID ที่เจอบ่อยในหน้า LINE Developers
| ชื่อ | อยู่ที่ไหน | หน้าตา | ใช้ทำอะไร |
|---|---|---|---|
| Your user ID | แท็บ Basic settings ของ channel ล่างสุด | ขึ้นต้นด้วย U ตามด้วยตัวอักษร 32 ตัว รวม 33 ตัว | ใช้เป็นผู้รับของ push message ได้ |
| Bot basic ID | แท็บ Messaging API | ขึ้นต้นด้วย @ สั้นๆ ประมาณ 9 ตัว | ให้คนค้นหาแล้วเพิ่มเพื่อน ใช้ส่ง push ไม่ได้ |
| Channel ID | แท็บ Basic settings | ตัวเลขล้วน | ใช้ตอนขอ token / ยืนยันตัวตน channel |
เพิ่มการตรวจนี้ไว้ในโค้ดตอนอ่านค่าตั้งค่าได้เลย ระบบจะฟ้องตั้งแต่ตอนเริ่มทำงาน ไม่ต้องรอจนส่งไม่ออก
import re
def looks_like_line_user_id(v: str) -> bool:
return bool(re.fullmatch(r"U[0-9a-f]{32}", v or ""))
if LINE_USER_ID and not looks_like_line_user_id(LINE_USER_ID):
print("⚠️ LINE_USER_ID ดูไม่เหมือน User ID (ต้องเป็น U + 32 ตัว) — หยิบ Bot basic ID มาหรือเปล่า?")
User ID ของคนเดียวกัน เปลี่ยนตาม provider
เรื่องนี้ทำให้งงได้บ่อย User ID ใน Messaging API ไม่ได้เป็นของ "คน" ตายตัว แต่ผูกกับ คน × provider แปลว่า
- LINE OA หลายตัวที่อยู่ใต้ provider เดียวกัน เห็นคุณเป็น User ID เดียวกัน ใช้ค่าเดิมได้
- ถ้า OA อยู่คนละ provider User ID ของคุณจะเป็นคนละค่า ต้องเอาค่าจาก channel นั้นมาใช้
ถ้าทำช่องแจ้งเตือนสำรองด้วย LINE OA ตัวที่สอง และตั้งไว้คนละ provider ต้องกรอก User ID แยกให้แต่ละช่อง ไม่อย่างนั้นช่องสำรองจะส่งไม่ออกตอนที่ต้องใช้จริง
ผู้รับเป็นลูกค้า ไม่ใช่ตัวเรา
ถ้าจะ push หาลูกค้า (เช่น เตือนก่อนถึงคิว) User ID ของลูกค้าไม่ได้ดูจากหน้า Developers
แต่ได้จาก webhook ตอนลูกค้าทักมาหรือเพิ่มเพื่อน ในฟิลด์ source.userId
ให้บันทึกค่านี้ลงฐานข้อมูลคู่กับข้อมูลการจอง แล้วใช้ค่านั้นตอนส่งแจ้งเตือน
และลูกค้าต้องยังเป็นเพื่อนกับ OA อยู่ ถ้าบล็อกไปแล้วจะส่งไม่ได้
เช็คลิสต์เมื่อ push ไม่ออก
- User ID ยาว 33 ตัว ขึ้นต้นด้วย U หรือเปล่า
- User ID มาจาก channel ใน provider เดียวกับ token ที่ใช้ส่งหรือเปล่า
- ผู้รับยังเป็นเพื่อนกับ OA อยู่ไหม
- Channel access token ยังใช้ได้ไหม
- โควตาข้อความเดือนนี้เต็มหรือยัง — ดูรายละเอียดที่ โควตา LINE OA 300 ข้อความ