UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs

187 lines (153 loc) 5.41 kB
/** * Example: Using POST method to get user list * Demonstrates the new postUserList method in UserService */ import { ZaloSDK, UserListRequest } from "../src/index"; async function demonstratePostUserList() { // Initialize SDK const zalo = new ZaloSDK({ appId: "your-app-id", appSecret: "your-app-secret" }); const accessToken = "your-access-token"; try { console.log("=== POST User List Example ===\n"); // Example 1: Basic user list with POST method console.log("1. Getting user list with POST method:"); const basicRequest: UserListRequest = { offset: 0, count: 10 }; const basicResult = await zalo.user.postUserList(accessToken, basicRequest); console.log("Basic POST result:", { total: basicResult.total, userCount: basicResult.users.length, users: basicResult.users.map(user => ({ user_id: user.user_id, display_name: user.display_name, user_is_follower: user.user_is_follower })) }); // Example 2: Filtered user list with tag console.log("\n2. Getting users with specific tag (POST method):"); const taggedRequest: UserListRequest = { offset: 0, count: 20, tag_name: "VIP_CUSTOMER" }; const taggedResult = await zalo.user.postUserList(accessToken, taggedRequest); console.log("Tagged users POST result:", { total: taggedResult.total, userCount: taggedResult.users.length, tag_filter: "VIP_CUSTOMER" }); // Example 3: Followers only with POST method console.log("\n3. Getting followers only (POST method):"); const followersRequest: UserListRequest = { offset: 0, count: 15, is_follower: true }; const followersResult = await zalo.user.postUserList(accessToken, followersRequest); console.log("Followers POST result:", { total: followersResult.total, userCount: followersResult.users.length, followers_only: true }); // Example 4: Users with recent interaction (POST method) console.log("\n4. Getting users with recent interaction (POST method):"); const recentRequest: UserListRequest = { offset: 0, count: 25, last_interaction_period: "7d" // Last 7 days }; const recentResult = await zalo.user.postUserList(accessToken, recentRequest); console.log("Recent interaction POST result:", { total: recentResult.total, userCount: recentResult.users.length, interaction_period: "7d" }); // Example 5: Compare GET vs POST methods console.log("\n5. Comparing GET vs POST methods:"); const compareRequest: UserListRequest = { offset: 0, count: 5 }; // GET method const getResult = await zalo.user.getUserList(accessToken, compareRequest); console.log("GET method result:", { total: getResult.total, userCount: getResult.users.length, method: "GET" }); // POST method const postResult = await zalo.user.postUserList(accessToken, compareRequest); console.log("POST method result:", { total: postResult.total, userCount: postResult.users.length, method: "POST" }); console.log("Results should be identical:", { totals_match: getResult.total === postResult.total, counts_match: getResult.users.length === postResult.users.length }); } catch (error) { console.error("Error in POST user list example:", error); if (error instanceof Error) { console.error("Error details:", { name: error.name, message: error.message, stack: error.stack }); } } } // Example usage with pagination using POST method async function demonstratePaginationWithPost() { const zalo = new ZaloSDK({ appId: "your-app-id", appSecret: "your-app-secret" }); const accessToken = "your-access-token"; try { console.log("\n=== POST Method Pagination Example ===\n"); let offset = 0; const count = 10; let allUsers: any[] = []; let totalUsers = 0; do { const request: UserListRequest = { offset, count }; const result = await zalo.user.postUserList(accessToken, request); console.log(`Page ${Math.floor(offset / count) + 1}:`, { offset, returned: result.users.length, total: result.total }); allUsers.push(...result.users); totalUsers = result.total; offset += count; // Break if we've got all users or no more users returned if (result.users.length < count || allUsers.length >= totalUsers) { break; } } while (true); console.log("\nPagination complete:", { total_users: totalUsers, fetched_users: allUsers.length, method: "POST" }); } catch (error) { console.error("Error in POST pagination example:", error); } } // Run examples if (require.main === module) { demonstratePostUserList() .then(() => demonstratePaginationWithPost()) .then(() => console.log("\n✅ POST User List examples completed!")) .catch(error => console.error("❌ Example failed:", error)); } export { demonstratePostUserList, demonstratePaginationWithPost };