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