LINE Dashboard
ภาพรวมระบบและสถิติการใช้งาน
กิจกรรมล่าสุด
โปรแกรมยอดนิยม
ตั้งค่าหน้าเรียกคิว
การตั้งค่าเสียงเรียกคิว
เสียงคำขึ้นต้น
(ขอเชิญหมายเลข)
ยังไม่ได้ตั้งค่า
เสียงคำสำหรับช่องบริการ
(ที่ช่องบริการ)
ยังไม่ได้ตั้งค่า
เสียงคำตามท้าย
(ค่ะ)
ยังไม่ได้ตั้งค่า
ตัวอักษร (A–Z)
ช่องบริการหมายเลข 1–12 และห้องผู้จัดการ
ตัวเลข (0–9)
กำหนดเวลาหน่วงหลังจากเรียกคิวเพื่อป้องกันเสียงเรียกซ้อน
กำหนดขนาดกระดาษสำหรับพิมพ์บัตรคิว (ค่าเริ่มต้น 50×70)
หากปิดการใช้งาน ผู้ใช้ต้องกดพิมพ์เอง
จัดการรางวัล
ประเภทรายชื่อ
บันทึกผลรางวัล
จัดการรายชื่อผู้มีสิทธิ์จับรางวัล
0
รายชื่อทั้งหมด
0
ลงทะเบียนแล้ว
0
มีสิทธิ์จับรางวัล
0
ถูกรางวัลแล้ว
| เลขสมาชิก | ชื่อ - สกุล | สังกัด | ประเภท | สถานะ | จัดการ |
|---|
แสดง 0 จาก 0 รายการ
ตั้งค่าการจับรางวัล
ยืนยัน
ข้อความ
Import รายชื่อจาก Excel
รายชื่อที่ Import จะถูกกำหนดเป็นประเภทที่เลือก
คลิกเพื่อเลือกไฟล์ หรือลากไฟล์มาวาง
รองรับ .xlsx, .xls, .csv
จำนวนข้อมูลที่จะนำเข้า: 0 รายการ
ผู้โชคดี
เพิ่มรางวัล
เพิ่มประเภท
เพิ่มบันทึกผลรางวัล
รายละเอียดผลรางวัล
เพิ่มรายชื่อ
เจ้าหน้าที่
| ผู้ใช้ | สถานะ | บทบาท | เข้าใช้ล่าสุด | จัดการ |
|---|
จัดการโปรแกรมและคอมพิวเตอร์
ตั้งค่าทั่วไป
การแจ้งเตือนอีเมล
รับการแจ้งเตือนเมื่อมีกิจกรรมสำคัญ
การอัปเดตอัตโนมัติ
อัปเดตโปรแกรมโดยอัตโนมัติ
อัปโหลด & ทำความสะอาดรูป
บีบอัดเป็น WebP
ลดขนาดไฟล์ ช่วยโหลดเร็ว
จำกัดความกว้างสูงสุด
แนะนำ 512 px
ลบไฟล์รูปเก่าอัตโนมัติ
ต้องกำหนด Endpoint สำหรับลบไฟล์ Cloudinary
Delete Endpoint (Server-side)
* ต้องเป็น API ฝั่งเซิร์ฟเวอร์ที่รับ { public_id } และลบไฟล์ให้
ความปลอดภัย
| ชื่อระบบและบริการ | วันเริ่มใช้งาน | วันหมดอายุ | วันต้องต่ออายุ | ไลเซนส์ | คงเหลือ | ราคา | ผู้จำหน่าย | สถานะ | จัดการ |
|---|
บันทึกการใช้งาน
ตั้งค่า LINE / LIFF
คำขอลางาน
ประเภทวันลา
วันหยุดสหกรณ์
เจ้าหน้าที่
การเงิน
ลากิจ
ลาป่วย
ลากิจ
ลาป่วย
บริหาร
ลากิจ
ลาป่วย
ลาพักร้อน
ลากิจ
ลาป่วย
ลากิจ
ลาป่วย
ผู้ติดตามทั้งหมด
-
ผู้ติดตาม LINE OA
ผูกบัญชีแล้ว
-
ผู้ใช้ที่ผูกบัญชีกับระบบ
ข้อความวันนี้
-
ข้อความที่ส่งออก
Auto Reply
-
กฎที่ใช้งานอยู่
กิจกรรมล่าสุด
ไม่มีกิจกรรมล่าสุด
Quick Actions
รายชื่อกลุ่มไลน์
| ชื่อกลุ่ม | Group ID (LINE) | สถานะ / โค้ด | สมาชิก | วันที่เข้ากลุ่ม | การจัดการ |
|---|---|---|---|---|---|
|
กำลังโหลดกลุ่มไลน์... |
|||||
เมื่อ add บอทเข้ากลุ่ม บอทจะสุ่มโค้ดยืนยันอัตโนมัติและส่งในกลุ่ม — ส่งโค้ดกลับภายใน 5 นาทีเพื่อยืนยัน ไม่ส่งบอทออกจากกลุ่มเอง
ส่งข้อความไปกลุ่ม
-
กำลังโหลด...
รายชื่อผู้ติดตาม
| ผู้ติดตาม | LINE User ID | ผูกบัญชี | กลุ่มไลน์ | วันที่ติดตาม | การจัดการ |
|---|---|---|---|---|---|
|
กำลังโหลดข้อมูล... |
|||||
Messaging API
ตั้งค่าสำหรับส่งข้อความและรับ Webhook
Webhook URL
คัดลอก URL นี้ไปตั้งค่าใน LINE Developers Console → Messaging API → Webhook URL
LINE Login
ตั้งค่าสำหรับระบบ Login ด้วย LINE และผูกบัญชี
ใส่ URL นี้ใน LINE Developers Console → LINE Login → Callback URL
ข้อความต้อนรับ
เปิดใช้ข้อความต้อนรับ
ส่งข้อความอัตโนมัติเมื่อมีผู้ติดตามใหม่
ใช้ {name} แทนชื่อผู้ใช้, {date} แทนวันที่, {time} แทนเวลา
วาง Flex Message JSON ที่นี่ หรือกด "เลือกจาก Template" เพื่อเลือก Template สำเร็จรูป
ข้อความโค้ดยืนยันกลุ่ม (Flex)
ส่งเมื่อบอทถูก add เข้ากลุ่ม ใช้ {code} แทนโค้ด, {groupName} แทนชื่อกลุ่ม, {minutes} แทนนาที
ข้อความยืนยันสำเร็จ (Flex)
ส่งหลังส่งโค้ดถูกต้อง ใช้ {groupName} แทนชื่อกลุ่ม
บอทสุ่มโค้ด 6 ตัวอักษรอัตโนมัติ แอดมินส่งโค้ดกลับภายใน 5 นาที ดูโค้ดได้ที่ตาราง รายชื่อกลุ่มไลน์
ทดสอบข้อความต้อนรับ
แจ้งเตือนการลา (LINE Flex)
ตั้งค่า Flex Message สำหรับแจ้งเตือนเมื่อมีคำขอลา/อนุมัติ/ไม่อนุมัติ
ตัวแปรที่ใช้ได้: {userName} ชื่อผู้ลา, {leaveType} ประเภท, {startDate} วันเริ่ม, {endDate} วันสิ้นสุด, {duration} จำนวนวัน, {partial} เต็มวัน/ครึ่งวัน, {reason} เหตุผล, {approverName} ผู้อนุมัติ, {status} สถานะ, {liffUrl} ลิงก์ LIFF
ส่งคำขอลาแล้ว (แจ้งผู้ลา)
แจ้งผู้อนุมัติ (คำขอใหม่)
อนุมัติแล้ว (แจ้งผู้ลา)
ไม่อนุมัติ (แจ้งผู้ลา)
ทดสอบส่งข้อความ
ส่งข้อความทดสอบไปยัง LINE User ID
ดู User ID ได้จากหน้า LINE Dashboard → ผู้ติดตาม
สถานะ Webhook Server
กฎตอบกลับอัตโนมัติ
ยังไม่มีกฎตอบกลับอัตโนมัติ
กดปุ่ม "เพิ่มกฎใหม่" เพื่อเริ่มต้น
Templates
กำลังโหลด...
Flex Messages
กำลังโหลด...
ตั้งค่า AI แชท (โมเน่)
ให้ AI ช่วยตอบ/แชท LINE มีความจำ บุคลิก (ชื่อ, เพศ, คำเรียกผู้ใช้) และไม่ตอบซ้อนกับกฎตอบกลับอัตโนมัติ — ตามสเปก docs/ai-chat-spec.md
บุคลิก
การอนุญาต
เลือกจากรายชื่อผู้ติดตามและกลุ่มไลน์ในระบบ (ดึงจาก LINE Dashboard) — เลือกได้หลายรายการ
โหลดรายชื่อ...
โหลดรายชื่อกลุ่ม...
โหมดกลุ่ม
สรุปกฎระบบ (ให้ AI รู้ว่าไม่ตอบซ้ำ — ระบบตอบอะไรอัตโนมัติบ้าง)
เพิ่มได้หลายข้อ ค้นหาจากข้อความด้านล่างได้
บุคคลที่ AI ใช้ตอบ (ตั้งค่าตรง)
ถ้ากำหนดไว้ AI จะตอบชื่อผู้จัดการ/ประธานตามคนที่เลือก ไม่ต้องพึ่งตำแหน่งในระบบ
แจ้งเตือนเข้า-ออกงานทาง LINE
ส่งข้อความหรือ Flex Message ไปยัง LINE เจ้าหน้าที่ หลังเลยกำหนดเวลาช่วงเข้างาน/ออกงาน (ตั้งหน่วงส่งได้)
อ้างอิงช่วงเวลา: การเข้างาน ช่วงเช้า (เช่น 09:30), ช่วงบ่าย (13:00), การออกงาน (17:30) — ตั้งที่หน้า Admin เข้า-ออกงาน
Template: แจ้งลืมสแกนเข้างาน
ส่งเมื่อเลยเวลาช่วงเช้า/บ่ายแล้วแต่ยังไม่มีรายการเข้า — ใช้ตัวแปร {name}, {callName}, {date}, {time} — {callName} = คำเรียกผู้ใช้ (สำหรับ AI แชท) ถ้าตั้งไว้ ไม่งั้นใช้ชื่อเหมือน {name}
Template: แจ้งลืมสแกนออกงาน
ส่งเมื่อเลยเวลาออกงานแล้วแต่ยังไม่มีรายการออก — ใช้ตัวแปร {name}, {callName}, {date}, {time} — {callName} = คำเรียกผู้ใช้ (สำหรับ AI แชท) ถ้าตั้งไว้
Template: สรุปเข้างานวันนี้
ส่งหลังช่วงออกงาน — ใช้ตัวแปร {name}, {callName}, {checkIn}, {checkOut}, {date} — {callName} = คำเรียกผู้ใช้ (สำหรับ AI แชท) ถ้าตั้งไว้
สรุปเข้างานวันนี้ (รวมทุกคน)
ส่งสรุปรวมของทุกคนไปยังผู้จัดการหรือรายชื่อที่เลือก — ใช้ตัวแปร {date}, {summaryList}. ข้อมูลสรุปดึงจาก Firebase (attendance_log) ล่าสุดก่อนส่ง
กำหนดเวลาส่งตรง (เวลาไทย) เช่น 17:40 — ว่างไว้จะส่ง = ช่วงออกงาน + หน่วง (นาที)
ใช้เมื่อไม่ได้กำหนด "ส่งตามเวลา" ด้านบน
แจ้งเมื่อสแกนเข้า/ออกแล้ว
ส่งไปยัง LINE ของเจ้าหน้าที่คนนั้นทันทีเมื่อมีการดึงและอัปเดตข้อมูลสแกนเข้า/ออก
Flex Message JSON
แก้ไข JSON แล้วกด "รีเฟรช Preview" เพื่อดูตัวอย่าง
บันทึก Template ใหม่
บันทึก Flex Message ไว้ใช้ซ้ำ
ตั้งชื่อที่จำง่ายเพื่อใช้งานภายหลัง
เพิ่ม Template
ตัวอย่างข้อความ
กฎตอบกลับอัตโนมัติ
เลือก Template
เลือก Flex Message สำหรับข้อความต้อนรับ
Flex Message Templates
กำลังโหลด...
ผูกบัญชี LINE กับผู้ใช้
เลือกผู้ใช้ที่ต้องการผูกกับบัญชี LINE นี้
พิมพ์เพื่อค้นหาผู้ใช้
Broadcast ข้อความ
ส่งข้อความถึงผู้ติดตามทุกคนหรือเลือกกลุ่มเป้าหมาย
สูงสุด 5,000 ตัวอักษร | ใช้ {name} แทนชื่อ
รองรับ JPEG, PNG ขนาดไม่เกิน 10MB
กลุ่มเป้าหมาย
ประวัติการส่ง Broadcast
ยังไม่มีประวัติการส่ง
Rich Menu Designer
คลิกที่ช่องเพื่อตั้งค่า Action
ตั้งค่าช่อง
เลือกช่องที่ต้องการตั้งค่า
Rich Menu ที่สร้างไว้
ยังไม่มี Rich Menu ที่สร้างไว้
จัดการ LIFF Links
สร้างและจัดการลิงก์ LIFF สำหรับใช้งานใน LINE
LIFF ทั้งหมด
0
เปิดใช้งาน
0
ปิดใช้งาน
0
หมวดหมู่
0
ยังไม่มี LIFF Links
กดปุ่ม "เพิ่ม LIFF Link" เพื่อสร้างใหม่
เพิ่ม LIFF Link
ภาพรวมโครงสร้างระบบ
แผนผังการเชื่อมต่อระบบทั้งหมดของสหกรณ์ออมทรัพย์สาธารณสุขหนองคาย
แผนผังสถาปัตยกรรม
┌─────────────────────────────────────────────────────────────────┐
│ 👥 Client Layer │
├─────────────┬─────────────┬─────────────┬─────────────┬─────────┤
│ 🖥️ Admin │ 📱 LINE │ 📅 Portal │ 📺 Queue │ 🎁 │
│ Panel │ Management │ ขอลา │ Display │ Lucky │
│ │ │(LINE Login)│ │ Draw │
└─────┬───────┴──────┬──────┴──────┬──────┴──────┬──────┴────┬────┘
│ │ │ │ │
└──────────────┴──────────┬──┴─────────────┴───────────┘
│
┌───────────▼───────────┐
│ 🗄️ NAS Synology │
│ ┌─────────────────┐ │
│ │ 📁 /volume1/web │ │
│ │ └─ /admin │ │
│ │ └─ /portal │ │
│ └─────────────────┘ │
│ ┌─────────────────┐ │
│ │ ⚙️ Node.js │ │
│ │ line-webhook │ │
│ └─────────────────┘ │
└───────────┬───────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
┌───────▼───────┐ ┌───────▼───────┐ ┌───────▼───────┐
│ 🔥 Firebase │ │ 💬 LINE API │ │ 📧 Email │
│ Firestore │ │ Messaging │ │ Service │
└───────────────┘ └───────────────┘ └───────────────┘
สิทธิ์การเข้าถึง
| ระบบ | Admin | เจ้าหน้าที่ | กรรมการ | สมาชิก | วิธีเข้า |
|---|---|---|---|---|---|
| Admin Panel | ✅ | ❌ | ❌ | ❌ | Email/Password |
| Portal ขอลา | ✅ | ✅ | ✅ | ❌ | LINE Login /portal |
| จับฉลาก | ✅ | ✅ | ✅ | ✅ | QR Code |
| คู่มือระบบ | ✅ | ❌ | ❌ | ❌ | ผ่าน Admin Panel |
ลิงก์ระบบทั้งหมด
Base URL: admin.nkbkcoop.com — จัดการลิงก์ที่ Admin
| ระบบ | Path / URL | หมายเหตุ |
|---|
Firebase & Collections
โครงสร้างฐานข้อมูล Firestore ทั้งหมด
Firebase Configuration
const firebaseConfig = {
apiKey: "AIzaSyBEUdu_TdTfRvpBpVzdVoHqfQAtrIXAAAw",
authDomain: "admin-panel-nkbkcoop-cbf10.firebaseapp.com",
projectId: "admin-panel-nkbkcoop-cbf10",
storageBucket: "admin-panel-nkbkcoop-cbf10.firebasestorage.app"
};
Collections ทั้งหมด
users
ข้อมูลผู้ใช้งาน
programs
โปรแกรมและคอมฯ
systems
ระบบและบริการ
config
ตั้งค่าระบบ
leaves
คำขอลางาน
leaveTypes
ประเภทการลา
holidays
วันหยุด
line_followers
ผู้ติดตาม LINE
line_autoreply
ตอบกลับอัตโนมัติ
luckyDraw_prizes
รางวัลจับฉลาก
luckyDraw_participants
ผู้เข้าร่วม
luckyDraw_winners
ผู้ถูกรางวัล
ระบบย่อย
คำอธิบายระบบย่อยทั้งหมดใน Admin Panel
Admin Panel
ระบบจัดการหลักสำหรับผู้ดูแลระบบ
- • จัดการผู้ใช้งาน
- • จัดการโปรแกรมและคอมพิวเตอร์
- • จัดการระบบและบริการ
- • ตั้งค่าระบบ
LINE Integration
ระบบจัดการ LINE Official Account
- • Dashboard สถิติ
- • ตอบกลับอัตโนมัติ
- • Broadcast ข้อความ
- • Rich Menu
ระบบลางาน
ระบบขอลาและอนุมัติลางาน
- • ลาป่วย (30 วัน/ปี)
- • ลากิจ (12 วัน/ปี)
- • ลาพักร้อน (ตามอายุงาน)
- • ประวัติการลา
ระบบจัดการคิว
ระบบจัดคิวบริการ
- • จอแสดงคิว
- • เรียกคิว
- • ตั้งค่าเสียงเรียก
ระบบจับฉลาก
จับฉลากประชุมใหญ่ประจำปี
- • จัดการรางวัล/หมวดหมู่
- • ลงทะเบียนผู้เข้าร่วม
- • หน้าจอจับฉลาก
- • Export รายงาน
Portal ขอลา
/portal — สำหรับเจ้าหน้าที่และกรรมการ
- • เข้าด้วย LINE Login
- • ส่งคำขอลางาน
- • ดูประวัติการลา
- • ปฏิทินวันหยุด
API & การเชื่อมต่อ
Webhook, LINE Login และการตั้งค่า NAS
LINE Webhook Server
Node.js server สำหรับรับ events จาก LINE
# เริ่มต้น Server
cd /volume1/web/line-webhook
/var/packages/Node.js_v20/target/usr/local/bin/node server.js
# Restart Server
pkill -f "node server.js"
cd /volume1/web/line-webhook && node server.js &
Webhook URL: https://api.nkbkcoop.com/line/webhook
LINE Login Setup
- 1สร้าง LINE Login Channel ที่ LINE Developers Console
- 2สร้าง LIFF App (Size: Full, Endpoint: https://admin.nkbkcoop.com/portal)
- 3คัดลอก LIFF ID ไปใส่ใน Portal (admin/portal/)
- 4ทดสอบที่ https://admin.nkbkcoop.com/portal
โครงสร้างไฟล์ NAS
/volume1/web/
├── admin/
│ ├── index.html # Admin Panel
│ ├── portal/
│ │ └── index.html # Portal ขอลา
│ └── queue/
│ └── index.html # จอแสดงคิว
│
└── line-webhook/
├── server.js # Webhook server
└── package.json
Hash Routing
Admin ใช้ hash (#dashboard, #docs_overview) — refresh ได้โดยไม่ต้องตั้งค่าเซิร์ฟเวอร์
เพิ่ม/แก้ไขกฎตอบกลับ
ใช้ {name} แทนชื่อ, {date} แทนวันที่, {time} แทนเวลา
วาง JSON ทั้งก้อน (รวม type, altText, contents) หรือกด "คัดลอกสำหรับ Simulator" เพื่อคัดลอกเฉพาะ contents ไปแก้ไขใน Flex Simulator