4. Chat & Tin Nhắn
4.1 Lấy Số Lượng Cuộc Trò Chuyện
GET /api/v1/conversations/counts
Lấy số lượng cuộc trò chuyện chưa đọc và chưa trả lời.
Phản hồi:
{
"total": 150,
"unread": 25,
"unreplied": 12,
"archived": 8
}
4.2 Liệt Kê Cuộc Trò Chuyện
GET /api/v1/conversations
Liệt kê các cuộc trò chuyện/luồng với phân trang.
Tham Số Truy Vấn:
page- Số trang (mặc định: 1)limit- Mục trên mỗi trang (mặc định: 50, tối đa: 100)status- Lọc:active,archived,closedtype- Lọc:user,groupsearch- Tìm kiếm theo tên liên hệsortBy- Trường sắp xếp:lastMessage,createdAt(mặc định:lastMessage)direction- Hướng sắp xếp:asc,desc
Phản hồi:
{
"data": [
{
"id": "conv-001",
"contactId": "contact-123",
"contactName": "Nguyễn Văn A",
"contactAvatar": "https://...",
"type": "user",
"zaloAccountId": "acc-001",
"messageCount": 45,
"unreadCount": 3,
"lastMessage": {
"id": "msg-999",
"content": "Xin chào!",
"contentType": "text",
"senderName": "Nguyễn Văn A",
"sentAt": "2026-06-05T17:20:00Z"
},
"status": "active",
"createdAt": "2026-03-10T08:00:00Z",
"lastActivityAt": "2026-06-05T17:20:00Z"
}
],
"pagination": {
"total": 150,
"page": 1,
"limit": 50,
"pages": 3
}
}
4.3 Lấy Chi Tiết Cuộc Trò Chuyện
GET /api/v1/conversations/:id
Lấy cuộc trò chuyện đầy đủ với các tin nhắn.
Tham Số Truy Vấn:
page- Trang tin nhắn (mặc định: 1)limit- Tin nhắn mỗi trang (mặc định: 30)
Phản hồi:
{
"conversation": {
"id": "conv-001",
"contactId": "contact-123",
"contactName": "Nguyễn Văn A",
"type": "user",
"zaloAccountId": "acc-001",
"status": "active",
"createdAt": "2026-03-10T08:00:00Z"
},
"messages": [
{
"id": "msg-001",
"conversationId": "conv-001",
"content": "Bạn khỏe không?",
"contentType": "text",
"senderUid": "1234567890",
"senderName": "Nguyễn Văn A",
"isFromZalo": true,
"isRead": true,
"isReplied": true,
"sentAt": "2026-06-05T10:00:00Z"
}
],
"pagination": {
"total": 45,
"page": 1,
"limit": 30
}
}
4.4 Gửi Tin Nhắn
POST /api/v1/conversations/:id/messages
Gửi tin nhắn đến cuộc trò chuyện.
Thân Yêu Cầu:
{
"content": "Cảm ơn vì đã liên hệ!",
"contentType": "text",
"attachments": []
}
Phản hồi: 201
{
"id": "msg-1000",
"conversationId": "conv-001",
"content": "Cảm ơn vì đã liên hệ!",
"contentType": "text",
"senderName": "Nguyễn Văn B",
"sentAt": "2026-06-05T17:35:00Z",
"status": "sent"
}
4.5 Lưu Trữ Cuộc Trò Chuyện
POST /api/v1/conversations/:id/archive
Lưu trữ cuộc trò chuyện.
Phản hồi:
{
"message": "Cuộc trò chuyện đã được lưu trữ"
}
4.6 Tạo Thư Mục Chat
POST /api/v1/chat/folders
Tạo thư mục để tổ chức các cuộc trò chuyện.
Thân Yêu Cầu:
{
"name": "Lead Nóng",
"color": "#FF5722"
}
Phản hồi: 201
{
"id": "folder-001",
"name": "Lead Nóng",
"color": "#FF5722",
"conversationCount": 0,
"createdAt": "2026-06-05T17:35:00Z"
}
4.7 Liệt Kê Cài Đặt Chat
GET /api/v1/chat/presets
Liệt kê các mẫu tin nhắn được lưu.
Phản hồi:
[
{
"id": "preset-001",
"name": "Lời Chào",
"content": "Xin chào! Cảm ơn vì đã liên hệ với chúng tôi 👋",
"category": "greetings",
"createdAt": "2026-05-01T10:00:00Z"
}
]
4.8 Tải Lên Tệp Đính Kèm
POST /api/v1/chat/attachments
Tải lên tệp/hình ảnh/video để gửi.
Yêu Cầu: Form-data với trường file
Phản hồi: 201
{
"id": "attach-001",
"filename": "document.pdf",
"size": 1024000,
"contentType": "application/pdf",
"url": "https://api.domaincrm.com/attachments/attach-001",
"uploadedAt": "2026-06-05T17:35:00Z"
}