Inbox Overview (กล่องข้อความ)←
หน้าหลักของ Agent — ดู conversations ของลูกค้าและตอบกลับ
ภาพรวม←

หมายเลขในรูป:
- Header — โลโก้ + ชื่อ MergeChat + status "ไม่มีข้อความใหม่"
- Tabs สถานะแชท: เปิด / รอ / ปิดแล้ว (พร้อมตัวเลขนับ)
- Filter chip ตาม OA — ทั้งหมด / Test1 / test2 (แสดงเฉพาะ OA ที่มีสิทธิ์)
- ช่องค้นหา — ค้นหาตามชื่อลูกค้า/ข้อความ
- รายการ conversations — เรียงตาม last_msg_at desc
- Main panel — แสดงเนื้อหาแชทเมื่อเลือก conversation จากซ้าย (ครั้งแรก = release notes)
หน้า Inbox (/) แบ่งเป็น 2 ส่วน:
Sidebar ซ้าย — Conversation List←
- Tab แบ่งตาม status:
- เปิด — สนทนาที่ยังไม่ปิด (ตอบลูกค้าได้)
- รอ — ลูกค้าใหม่ยังไม่มี agent assigned
- ปิดแล้ว — เคสปิดเรียบร้อย
- ทั้งหมด — รวมทุก status (เลขแสดงนับรวม)
- Filter ด้านล่างเป็น chip เลือก OA (ถ้ามีหลาย OA)
- Search box: ค้นหาตามชื่อลูกค้า/ข้อความ
Main Panel ขวา — Active Chat←
แสดงเมื่อเลือก conversation จาก sidebar:
- Header: ชื่อลูกค้า + OA + tags + ปุ่ม assign/close
- Timeline: messages เรียงตามเวลา (ลูกค้า + agent + bot suggestions)
- Input box: ช่องพิมพ์ตอบ + toggle Note/Reply + Quick Replies hint
Real-time WebSocket←
inbox connect ผ่าน wss://chat.<domain>/ws?token=... — ทุก message ใหม่ push เข้ามาทันที (ไม่ต้อง refresh)
ถ้าเห็น banner "[WS] Disconnected — retrying..." = ปกติ (เครือข่าย hiccup)
Status เริ่มต้น←
แชทที่ลูกค้าทักเข้ามาใหม่ จะอยู่ใน:
- ถ้าไม่มี agent assigned → tab รอ
- ถ้ามี agent assigned (กดรับ) → tab เปิด
ขั้นตอนงานประจำวัน←
- เปิด
/(หน้า Inbox) - ดู tab รอ → คลิกแชทแรก → กด รับเคส หรือเริ่มตอบ
- ตอบลูกค้า (ดู การตอบ)
- เคสจบ → กด ปิดเคส → ย้ายไป tab ปิดแล้ว
- กลับ tab รอ ทำเคสถัดไป
คำถามที่พบบ่อย←
Inbox ว่างเปล่า
- ตรวจว่าตัวเองมี OA permission ที่ admin ตั้งให้
- ตรวจ filter chip OA ว่าเลือกอยู่หรือไม่
- ถ้าเป็น "ทั้งหมด" และยังว่างเปล่า → ทีมนี้ยังไม่มีลูกค้าเลย (ปกติช่วงเริ่มต้น)
ลำดับ conversation เรียงยังไง
เรียงตาม last_msg_at desc (ล่าสุดบนสุด) — ทั้ง customer message และ agent reply นับ
Badge "ไม่มีข้อความใหม่" หมายถึงอะไร
Default state เมื่อไม่มี message ใหม่ — เปลี่ยนเป็น count + เสียง notify เมื่อมี new message ผ่าน WS
ที่อ้างอิง←
- Source:
mergchat:line-inbox-frontend/src/pages/Inbox.tsx - WebSocket:
useWebSocket.js - API: GET
/api/conversations(filter byallowedOaIds)