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

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
💡 วิธีเช็คเร็วที่สุด: นับตัวอักษร User ID ต้องยาว 33 ตัว ขึ้นต้นด้วยตัว U พิมพ์ใหญ่ ถ้าขึ้นต้นด้วย @ หรือเป็นตัวเลขล้วน แปลว่าหยิบผิดตัว

เพิ่มการตรวจนี้ไว้ในโค้ดตอนอ่านค่าตั้งค่าได้เลย ระบบจะฟ้องตั้งแต่ตอนเริ่มทำงาน ไม่ต้องรอจนส่งไม่ออก

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 ไม่ออก

  1. User ID ยาว 33 ตัว ขึ้นต้นด้วย U หรือเปล่า
  2. User ID มาจาก channel ใน provider เดียวกับ token ที่ใช้ส่งหรือเปล่า
  3. ผู้รับยังเป็นเพื่อนกับ OA อยู่ไหม
  4. Channel access token ยังใช้ได้ไหม
  5. โควตาข้อความเดือนนี้เต็มหรือยัง — ดูรายละเอียดที่ โควตา LINE OA 300 ข้อความ
เกี่ยวกับผู้เขียน — Jark นักพัฒนา LINE Bot และระบบ AI อัตโนมัติ อยู่เชียงใหม่ ทำระบบตอบแชทและจองคิวให้ร้านค้าจริง บทความในเว็บนี้มาจากงานที่ลงมือทำเอง อ่านเพิ่ม