UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS with Full Type Safety, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0 with Multip

227 lines 9.26 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 - matches Zalo API docs exactly */ export interface ConversationMessage { /** ID của tin nhắn */ message_id: string; /** Thuộc tính cho biết tin nhắn được gửi từ OA hoặc người dùng. 0: tin nhắn từ OA đến user, 1: tin nhắn từ user đến OA */ src: number; /** Thời gian tin nhắn được gửi (định dạng timestamp) */ time: number; /** Loại tin nhắn: text, voice, photo, GIF, link, links, sticker, location */ type: string; /** Nội dung tin nhắn */ message: string; /** Thuộc tính trả về 1 danh sách các đường dẫn được đính kèm trong tin nhắn (chỉ có khi type là link hoặc links) */ links?: string[]; /** URL của ảnh hoặc GIF (chỉ có khi type là GIF hoặc photo) */ thumb?: string; /** Đường dẫn đến audio/ảnh/GIF/nhãn dán */ url?: string; /** Mô tả của ảnh (chỉ có khi type là photo) */ description?: string; /** ID của đối tượng gửi tin nhắn (có thể là user_id hoặc oa_id) */ from_id: string; /** ID của đối tượng nhận tin nhắn (có thể là user_id hoặc oa_id) */ to_id: string; /** Tên hiển thị của đối tượng gửi tin nhắn */ from_display_name: string; /** Đường dẫn đến ảnh đại diện của đối tượng gửi tin nhắn */ from_avatar: string; /** Tên hiển thị của đối tượng nhận tin nhắn */ to_display_name: string; /** Đường dẫn đến ảnh đại diện của đối tượng nhận tin nhắn */ to_avatar: string; /** Thuộc tính trả về giá trị longitude và latitude của người dùng (chỉ có khi type là location) */ location?: string; } /** * 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; } /** * 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 với user cụ thể * - Lấy thông tin tin nhắn gần nhất * - Upload file và hình ảnh * * ĐIỀU KIỆN SỮCDNG: * * 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: * - API hỗ trợ lấy thông tin tin nhắn giữa OA và một người dùng cụ thể * - Mỗi request lấy tối đa được 10 tin nhắn * - Tin nhắn gần nhất có thứ tự là 0 * * 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 * * API hỗ trợ lấy thông tin tin nhắn giữa OA và một người dùng cụ thể. * * @param accessToken Access token của Official Account * @param userId ID của người dùng Zalo cần lấy danh sách hội thoại * @param offset Thứ tự của tin nhắn đầu tiên trong danh sách trả về (tin nhắn gần nhất có thứ tự là 0) * @param count Số lượng tin nhắn cần lấy (mỗi request lấy tối đa 10 tin nhắn) * @returns Danh sách tin nhắn * * @example * ```typescript * const messages = await messageService.getConversationMessages( * accessToken, * '2512523625412515', * 0, * 5 * ); * ``` */ getConversationMessages(accessToken: string, userId: string, offset?: number, count?: number): Promise<ConversationMessage[]>; /** * Lấy danh sách tin nhắn trong cuộc hội thoại với user (sử dụng POST method) * * API hỗ trợ lấy thông tin tin nhắn giữa OA và một người dùng cụ thể sử dụng phương thức POST. * * @param accessToken Access token của Official Account * @param userId ID của người dùng Zalo cần lấy danh sách hội thoại * @param offset Thứ tự của tin nhắn đầu tiên trong danh sách trả về (tin nhắn gần nhất có thứ tự là 0) * @param count Số lượng tin nhắn cần lấy (mỗi request lấy tối đa 10 tin nhắn) * @returns Danh sách tin nhắn * * @example * ```typescript * const messages = await messageService.postConversationMessages( * accessToken, * '2512523625412515', * 0, * 5 * ); * ``` */ postConversationMessages(accessToken: string, userId: string, offset?: number, count?: number): Promise<ConversationMessage[]>; /** * Lấy thông tin tin nhắn gần nhất * * API hỗ trợ lấy thông tin tối đa 10 tin nhắn gần nhất giữa OA và người dùng. * * @param accessToken Access token của Official Account * @param offset Thứ tự của tin nhắn đầu tiên trong danh sách trả về (tin nhắn gần nhất có thứ tự là 0) * @param count Số lượng tin nhắn muốn lấy (mỗi request lấy tối đa 10 tin nhắn) * @returns Danh sách tin nhắn gần nhất * * @example * ```typescript * const recentMessages = await messageService.getRecentConversations( * accessToken, * 0, * 5 * ); * ``` */ getRecentConversations(accessToken: string, offset?: number, count?: number): Promise<ConversationMessage[]>; /** * 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