UNPKG

@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
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