@warriorteam/redai-zalo-sdk
Version:
Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs
174 lines • 6.22 kB
TypeScript
import { ZaloClient } from "../clients/zalo-client";
/**
* Interface cho thông tin quota tin nhắn
*/
export interface MessageQuotaInfo {
quota: number;
used: number;
remaining: number;
reset_time: number;
}
/**
* Interface cho tin nhắn trong cuộc hội thoại
*/
export interface ConversationMessage {
message_id: string;
from_id: string;
to_id: string;
message: {
text?: string;
attachment?: {
type: string;
payload: any;
};
};
timestamp: number;
type: "incoming" | "outgoing";
}
/**
* Interface cho cuộc hội thoại
*/
export interface Conversation {
conversation_id: string;
user_id: string;
last_message: ConversationMessage;
unread_count: number;
updated_time: number;
}
/**
* Interface cho kết quả upload file - matches Zalo API docs exactly
*/
export interface UploadFileResult {
/** Token của file, sử dụng cho API gửi thông báo đính kèm file */
token: string;
}
/**
* Interface cho kết quả upload image - matches Zalo API docs exactly
*/
export interface UploadImageResult {
/** ID của ảnh được upload */
attachment_id: string;
}
/**
* Interface cho thông tin phân trang tin nhắn
*/
export interface MessagePagination {
offset: number;
count: number;
total: number;
}
/**
* Service xử lý các API quản lý tin nhắn của Zalo Official Account
*
* Bao gồm các chức năng:
* - Kiểm tra hạn mức gửi tin nhắn
* - Lấy danh sách tin nhắn trong cuộc hội thoại
* - Lấy danh sách cuộc hội thoại
* - Upload file và hình ảnh
* - Quản lý trạng thái tin nhắn
*
* ĐIỀU KIỆN SỬ DỤNG:
*
* 1. KIỂM TRA HẠN MỨC:
* - Cần quyền truy cập thông tin quota từ Zalo
* - Quota được reset hàng ngày vào 00:00 GMT+7
*
* 2. LẤY TIN NHẮN:
* - Chỉ có thể lấy tin nhắn trong vòng 7 ngày gần nhất
* - Tối đa 50 tin nhắn mỗi lần gọi API
*
* 3. UPLOAD FILE:
* - Kích thước tối đa 5MB
* - Hỗ trợ các định dạng: PDF, DOC, DOCX
* - Quota: 5000 request/tháng
*
* 4. UPLOAD HÌNH ẢNH:
* - Dung lượng tối đa 1MB
* - Hỗ trợ các định dạng: JPG và PNG
* - Ảnh sẽ được lưu trên server tối đa 7 ngày
* - Quota: 5000 request/tháng
*
* 5. UPLOAD ẢNH GIF:
* - Kích thước tối đa 5MB
* - Chỉ hỗ trợ định dạng GIF
* - Ảnh GIF được lưu trên server tối đa 7 ngày
* - Quota: 5000 request/tháng
*/
export declare class MessageManagementService {
private readonly client;
private readonly endpoints;
constructor(client: ZaloClient);
/**
* Kiểm tra hạn mức gửi tin nhắn đến user cụ thể
* @param accessToken Access token của Official Account
* @param userId ID của người dùng Zalo
* @returns Thông tin hạn mức gửi tin nhắn
*/
checkMessageQuota(accessToken: string, userId: string): Promise<MessageQuotaInfo>;
/**
* Lấy danh sách tin nhắn trong cuộc hội thoại với user
* @param accessToken Access token của Official Account
* @param userId ID của người dùng Zalo
* @param offset Vị trí bắt đầu lấy tin nhắn (mặc định: 0)
* @param count Số lượng tin nhắn cần lấy (mặc định: 20, tối đa: 50)
* @returns Danh sách tin nhắn và thông tin phân trang
*/
getConversationMessages(accessToken: string, userId: string, offset?: number, count?: number): Promise<{
messages: ConversationMessage[];
pagination: MessagePagination;
}>;
/**
* Lấy danh sách cuộc hội thoại gần đây
* @param accessToken Access token của Official Account
* @param offset Vị trí bắt đầu lấy cuộc hội thoại (mặc định: 0)
* @param count Số lượng cuộc hội thoại cần lấy (mặc định: 20, tối đa: 50)
* @returns Danh sách cuộc hội thoại và thông tin phân trang
*/
getRecentConversations(accessToken: string, offset?: number, count?: number): Promise<{
conversations: Conversation[];
pagination: MessagePagination;
}>;
/**
* Upload file để sử dụng trong tin nhắn
* @param accessToken Access token của Official Account
* @param fileData Dữ liệu file (base64 hoặc buffer)
* @param fileName Tên file
* @returns Token của file đã upload
*
* Lưu ý:
* - Chỉ hỗ trợ file PDF/DOC/DOCX
* - Dung lượng file không vượt quá 5MB
* - File sẽ được lưu trên server tối đa 7 ngày
* - Quota: 5000 request/tháng
*/
uploadFile(accessToken: string, fileData: string | Buffer, fileName: string): Promise<UploadFileResult>;
/**
* Upload hình ảnh để sử dụng trong tin nhắn
* @param accessToken Access token của Official Account
* @param imageData Dữ liệu hình ảnh (base64 hoặc buffer)
* @param fileName Tên file hình ảnh
* @returns ID của ảnh đã upload
*
* Lưu ý:
* - Hỗ trợ các định dạng: JPG và PNG
* - Dung lượng tối đa: 1MB
* - Ảnh sẽ được lưu trên server tối đa 7 ngày
* - Quota: 5000 request/tháng
*/
uploadImage(accessToken: string, imageData: string | Buffer, fileName: string): Promise<UploadImageResult>;
/**
* Upload ảnh GIF để sử dụng trong tin nhắn
* @param accessToken Access token của Official Account
* @param gifData Dữ liệu ảnh GIF (base64 hoặc buffer)
* @param fileName Tên file ảnh GIF
* @returns Thông tin ảnh GIF đã upload
*
* Lưu ý:
* - Dung lượng tối đa: 5MB
* - Ảnh GIF sẽ được lưu trên server tối đa 7 ngày
* - Quota: 5000 request/tháng
* - Định dạng hỗ trợ: GIF
*/
uploadGif(accessToken: string, gifData: string | Buffer, fileName: string): Promise<UploadImageResult>;
}
//# sourceMappingURL=message-management.service.d.ts.map