@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
213 lines • 8.58 kB
TypeScript
/**
* User management service for Zalo API
* Handles all user-related operations with specific endpoints
*/
import { ZaloClient } from "../clients/zalo-client";
import { UserInfo, UserListRequest, UserListResponse, TagUserRequest, RemoveTagFromUserRequest, UpdateUserRequest, GetUserCustomInfoRequest, UserCustomInfoResponse, UpdateUserCustomInfoRequest, AdvancedUserFilters } from "../types/user";
/**
* User management service for handling user operations
* Each method uses specific Zalo API endpoints
*/
export declare class UserService {
private readonly client;
private readonly endpoints;
constructor(client: ZaloClient);
/**
* Truy xuất chi tiết người dùng
* Endpoint: https://openapi.zalo.me/v3.0/oa/user/detail
* Method: GET with data parameter as JSON string
*
* @param accessToken OA access token
* @param userId User ID to get details for
* @returns Promise<UserInfo> - Detailed user information
*/
getUserInfo(accessToken: string, userId: string): Promise<UserInfo>;
/**
* Truy xuất chi tiết người dùng (bản dùng POST)
* Endpoint: https://openapi.zalo.me/v3.0/oa/user/detail
* Method: POST với body JSON
*
* @param accessToken OA access token
* @param userId ID người dùng cần lấy thông tin
* @returns Promise<UserInfo> - Thông tin chi tiết người dùng
*/
postUserInfo(accessToken: string, userId: string): Promise<UserInfo>;
/**
* Truy xuất danh sách người dùng
* Endpoint: https://openapi.zalo.me/v3.0/oa/user/getlist
* Method: GET with data parameter as JSON string
*
* @param accessToken OA access token
* @param request User list request parameters
* @returns Promise<UserListResponse> - List of users with pagination info
*/
getUserList(accessToken: string, request: UserListRequest): Promise<UserListResponse>;
/**
* Truy xuất danh sách người dùng (POST method)
* Endpoint: https://openapi.zalo.me/v3.0/oa/user/getlist
* Method: POST with data in request body
*
* @param accessToken OA access token
* @param request User list request parameters
* @returns Promise<UserListResponse> - List of users with pagination info
*/
postUserList(accessToken: string, request: UserListRequest): Promise<UserListResponse>;
/**
* Get all users with automatic pagination
* Lấy tất cả users với phân trang tự động, đảm bảo lấy 100%
*
* @param accessToken Access token của OA
* @param filters Bộ lọc tùy chọn
* @returns Promise<UserInfo[]> - Danh sách đầy đủ tất cả users
*/
getAllUsers(accessToken: string, filters?: {
tag_name?: string;
last_interaction_period?: string;
is_follower?: boolean;
}): Promise<UserInfo[]>;
/**
* Get all user IDs only (without detailed info) - Faster version
* Chỉ lấy danh sách user ID, không lấy thông tin chi tiết - Nhanh hơn
*
* @param accessToken Access token của OA
* @param filters Bộ lọc tùy chọn
* @returns Promise<string[]> - Danh sách user IDs
*/
getAllUserIds(accessToken: string, filters?: {
tag_name?: string;
last_interaction_period?: string;
is_follower?: boolean;
}): Promise<string[]>;
/**
* Get all users with advanced filtering based on UserInfo fields
* Lấy tất cả users với bộ lọc nâng cao dựa trên các trường của UserInfo
*
* @param accessToken Access token của OA
* @param filters Bộ lọc nâng cao
* @returns Promise<UserInfo[]> - Danh sách users đã được lọc
*/
getAllUsersWithAdvancedFilters(accessToken: string, filters?: AdvancedUserFilters): Promise<UserInfo[]>;
/**
* Parse date from dd/MM/yyyy format to Date object
* Helper method cho các filter date
*/
private parseDate;
/**
* Calculate age from date of birth
* Helper method cho age filter
*/
private calculateAge;
/**
* Cập nhật chi tiết người dùng
* Endpoint: https://openapi.zalo.me/v3.0/oa/user/update
* Method: POST
*
* @param accessToken OA access token
* @param request Update user request with user_id and optional fields
* @returns Promise<boolean> - true if successful
*/
updateUser(accessToken: string, request: UpdateUserRequest): Promise<boolean>;
/**
* Xóa thông tin người dùng
* Endpoint: https://openapi.zalo.me/v2.0/oa/deletefollowerinfo
* Method: POST
*
* @param accessToken OA access token
* @param userId User ID to delete info for
* @returns Promise<boolean> - true if successful
*
* Note: Chỉ xóa thông tin lưu trữ ở phía OA, không thay đổi tài khoản Zalo
*/
deleteUserInfo(accessToken: string, userId: string): Promise<boolean>;
/**
* Truy xuất thông tin tùy biến của người dùng
* Endpoint: https://openapi.zalo.me/v3.0/oa/user/detail/custominfo
* Method: GET with data parameter as JSON string
*
* @param accessToken OA access token
* @param request Get custom info request with user_id and optional fields_to_export
* @returns Promise<UserCustomInfoResponse> - Custom info data
*
* Note: Tất cả giá trị trong custom_info đều được trả về dưới dạng string
*/
getUserCustomInfo(accessToken: string, request: GetUserCustomInfoRequest): Promise<UserCustomInfoResponse>;
/**
* Cập nhật thông tin tùy biến của người dùng
* Endpoint: https://openapi.zalo.me/v3.0/oa/user/update/custominfo
* Method: POST
*
* @param accessToken OA access token
* @param request Update custom info request with user_id and custom_info
* @returns Promise<boolean> - true if successful
*
* Note: Cấu trúc custom_info phụ thuộc vào thiết lập OA
*/
updateUserCustomInfo(accessToken: string, request: UpdateUserCustomInfoRequest): Promise<boolean>;
/**
* Lấy danh sách nhãn
* Endpoint: https://openapi.zalo.me/v2.0/oa/tag/gettagsofoa
* Method: GET
*
* @param accessToken OA access token
* @returns Promise<string[]> - Array of tag names
*/
getLabels(accessToken: string): Promise<string[]>;
/**
* Gắn nhãn người dùng
* Endpoint: https://openapi.zalo.me/v2.0/oa/tag/tagfollower
*
* @param accessToken OA access token
* @param request Tag user request with user_id and tag_name
* @returns Promise<boolean> - true if successful
*
* Note: Nếu tag_name không tồn tại, API sẽ tự động tạo nhãn mới
*/
addTagToUser(accessToken: string, request: TagUserRequest): Promise<boolean>;
/**
* Gỡ nhãn người dùng
* Endpoint: https://openapi.zalo.me/v2.0/oa/tag/rmfollowerfromtag
*
* @param accessToken OA access token
* @param request Remove tag request with user_id and tag_name
* @returns Promise<boolean> - true if successful
*/
removeTagFromUser(accessToken: string, request: RemoveTagFromUserRequest): Promise<boolean>;
/**
* Xóa nhãn
* Endpoint: https://openapi.zalo.me/v2.0/oa/tag/rmtag
* Method: POST
*
* @param accessToken OA access token
* @param tagName Tag name to delete
* @returns Promise<boolean> - true if successful
*/
deleteLabel(accessToken: string, tagName: string): Promise<boolean>;
/**
* Get users by tag
*/
getUsersByTag(accessToken: string, tagName: string, offset?: number, count?: number): Promise<UserListResponse>;
/**
* Get followers only
*/
getFollowers(accessToken: string, offset?: number, count?: number): Promise<UserListResponse>;
/**
* Get users by interaction period
*/
getUsersByInteraction(accessToken: string, period: "TODAY" | "YESTERDAY" | "L7D" | "L30D", offset?: number, count?: number): Promise<UserListResponse>;
/**
* Bulk tag operations
*/
bulkAddTag(accessToken: string, userIds: string[], tagName: string): Promise<{
success: string[];
failed: string[];
}>;
/**
* Bulk remove tag operations
*/
bulkRemoveTag(accessToken: string, userIds: string[], tagName: string): Promise<{
success: string[];
failed: string[];
}>;
private handleError;
}
//# sourceMappingURL=user.service.d.ts.map