@warriorteam/redai-zalo-sdk 1.22.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,63 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.23.0] - 2025-08-29
9
+
10
+ ### 🚀 NEW FEATURE - Multiple Users Promotion với Real-time Tracking
11
+
12
+ #### 🎯 Multiple Users Support
13
+ - **ADDED**: `sendCustomPromotionToMultipleUsers()` - Gửi promotion đến nhiều user IDs cùng lúc
14
+ - **DUAL MODES**: Sequential (tuần tự) và Parallel (song song) sending modes
15
+ - **SMART DEDUPLICATION**: Tự động loại bỏ user IDs trùng lặp
16
+ - **ERROR ISOLATION**: Lỗi của 1 user không ảnh hưởng các user khác
17
+
18
+ #### 📊 Real-time Tracking & Callbacks
19
+ - **PROGRESS TRACKING**: `onProgress` callback với real-time statistics
20
+ - **USER COMPLETION**: `onUserComplete` callback cho từng user hoàn thành
21
+ - **ESTIMATED TIME**: Tính toán thời gian còn lại (ETA) cho sequential mode
22
+ - **DETAILED METRICS**: Success rate, execution time, start/end timestamps
23
+
24
+ #### ⚡ Performance Optimization
25
+ - **SEQUENTIAL MODE**: Gửi tuần tự với delay tùy chỉnh để tránh rate limit
26
+ - **PARALLEL MODE**: Gửi song song để tối ưu tốc độ cho urgent campaigns
27
+ - **CONFIGURABLE DELAY**: Tùy chỉnh delay giữa các tin nhắn (default: 1000ms)
28
+ - **CONTINUE ON ERROR**: Option để tiếp tục khi gặp lỗi (default: true)
29
+
30
+ #### 🛡️ Enhanced Error Handling
31
+ - **INDIVIDUAL RESULTS**: Chi tiết kết quả success/failure cho từng user
32
+ - **ERROR DETAILS**: Thông tin lỗi cụ thể cho từng user thất bại
33
+ - **RESILIENT PROCESSING**: Campaign không bị dừng khi 1 user lỗi
34
+ - **COMPREHENSIVE LOGGING**: Detailed logging cho debugging và monitoring
35
+
36
+ ### 📊 NEW INTERFACES & TYPES
37
+
38
+ #### Multiple Promotion Types
39
+ - **ADDED**: `PromotionUserResult` - Kết quả cho từng user riêng biệt
40
+ - **ADDED**: `MultiplePromotionProgress` - Interface cho progress tracking
41
+ - **ADDED**: `MultiplePromotionResult` - Kết quả tổng thể campaign
42
+ - **ENHANCED**: Progress callback với detailed metrics và ETA
43
+
44
+ ### 📚 COMPREHENSIVE DOCUMENTATION & EXAMPLES
45
+
46
+ #### New Documentation
47
+ - **ADDED**: `docs/MULTIPLE_USERS_PROMOTION.md` - Hướng dẫn chi tiết multiple users
48
+ - **UPDATED**: `docs/PROMOTION_API_V3_MIGRATION.md` - Thêm multiple users examples
49
+ - **BEST PRACTICES**: Guidelines cho sequential vs parallel modes
50
+
51
+ #### Enhanced Examples
52
+ - **ADDED**: `sendPromotionToMultipleUsers()` - Sequential mode với full tracking
53
+ - **ADDED**: `sendPromotionParallel()` - Parallel mode example
54
+ - **EXAMPLES**: Real-time progress monitoring và error handling
55
+ - **EXAMPLES**: Performance metrics và success rate tracking
56
+
57
+ ### 🎯 USE CASES
58
+ - **Marketing Campaigns**: Gửi promotion đến danh sách khách hàng VIP
59
+ - **Flash Sales**: Thông báo urgent đến nhiều users cùng lúc
60
+ - **Event Notifications**: Gửi thông báo sự kiện đến attendees
61
+ - **Customer Segmentation**: Targeted promotions cho từng nhóm khách hàng
62
+
63
+ ---
64
+
8
65
  ## [1.22.0] - 2025-08-29
9
66
 
10
67
  ### 🚀 MAJOR UPDATE - Promotion Service v3.0
@@ -1,5 +1,5 @@
1
1
  import { ZaloClient } from "../clients/zalo-client";
2
- import { SendMessageResponse, PromotionMessage, MessageRecipient } from "../types/message";
2
+ import { SendMessageResponse, PromotionMessage, MessageRecipient, PromotionUserResult, MultiplePromotionProgress, MultiplePromotionResult } from "../types/message";
3
3
  /**
4
4
  * Service xử lý các API tin nhắn truyền thông/quảng cáo của Zalo Official Account
5
5
  *
@@ -133,6 +133,37 @@ export declare class PromotionService {
133
133
  * @param message Promotion message to validate
134
134
  */
135
135
  private validatePromotionMessage;
136
+ /**
137
+ * Gửi promotion message đến nhiều user_ids với callback tracking
138
+ * @param accessToken Access token của Official Account
139
+ * @param userIds Danh sách user IDs cần gửi
140
+ * @param promotionData Dữ liệu promotion
141
+ * @param options Tùy chọn gửi và tracking
142
+ * @returns Kết quả gửi đến tất cả users
143
+ */
144
+ sendCustomPromotionToMultipleUsers(accessToken: string, userIds: string[], promotionData: {
145
+ attachmentId: string;
146
+ headerContent: string;
147
+ textContent: string;
148
+ tableData: Array<{
149
+ key: string;
150
+ value: string;
151
+ }>;
152
+ footerText?: string;
153
+ buttons: Array<{
154
+ title: string;
155
+ imageIcon?: string;
156
+ type: string;
157
+ payload: Record<string, any> | string;
158
+ }>;
159
+ language?: "VI" | "EN";
160
+ }, options?: {
161
+ mode?: "sequential" | "parallel";
162
+ delayMs?: number;
163
+ onProgress?: (progress: MultiplePromotionProgress) => void;
164
+ onUserComplete?: (result: PromotionUserResult) => void;
165
+ continueOnError?: boolean;
166
+ }): Promise<MultiplePromotionResult>;
136
167
  /**
137
168
  * Validate sending time (8:00 - 22:00)
138
169
  */
@@ -1 +1 @@
1
- {"version":3,"file":"promotion.service.d.ts","sourceRoot":"","sources":["../../src/services/promotion.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promotion.service.d.ts","sourceRoot":"","sources":["../../src/services/promotion.service.ts"],"names":[],"mappings":"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"}
@@ -413,6 +413,172 @@ class PromotionService {
413
413
  throw new common_1.ZaloSDKError("Promotion message must have at least one element", -1);
414
414
  }
415
415
  }
416
+ /**
417
+ * Gửi promotion message đến nhiều user_ids với callback tracking
418
+ * @param accessToken Access token của Official Account
419
+ * @param userIds Danh sách user IDs cần gửi
420
+ * @param promotionData Dữ liệu promotion
421
+ * @param options Tùy chọn gửi và tracking
422
+ * @returns Kết quả gửi đến tất cả users
423
+ */
424
+ async sendCustomPromotionToMultipleUsers(accessToken, userIds, promotionData, options) {
425
+ try {
426
+ // Validate inputs
427
+ if (!userIds || userIds.length === 0) {
428
+ throw new common_1.ZaloSDKError("User IDs array cannot be empty", -1);
429
+ }
430
+ // Remove duplicates
431
+ const uniqueUserIds = [...new Set(userIds)];
432
+ // Validate sending time
433
+ this.validateSendingTime();
434
+ const startTime = Date.now();
435
+ const results = [];
436
+ const mode = options?.mode || "sequential";
437
+ const delayMs = options?.delayMs || 1000;
438
+ const continueOnError = options?.continueOnError !== false;
439
+ // Initial progress callback
440
+ if (options?.onProgress) {
441
+ options.onProgress({
442
+ total: uniqueUserIds.length,
443
+ completed: 0,
444
+ successful: 0,
445
+ failed: 0,
446
+ currentUserId: null,
447
+ startTime,
448
+ estimatedTimeRemaining: null,
449
+ });
450
+ }
451
+ if (mode === "parallel") {
452
+ // Gửi song song
453
+ const promises = uniqueUserIds.map(async (userId) => {
454
+ try {
455
+ const result = await this.sendCustomPromotion(accessToken, { user_id: userId }, promotionData);
456
+ const userResult = {
457
+ userId,
458
+ success: true,
459
+ result,
460
+ error: null,
461
+ timestamp: new Date(),
462
+ };
463
+ // Callback cho từng user
464
+ if (options?.onUserComplete) {
465
+ options.onUserComplete(userResult);
466
+ }
467
+ return userResult;
468
+ }
469
+ catch (error) {
470
+ const userResult = {
471
+ userId,
472
+ success: false,
473
+ result: null,
474
+ error: error instanceof common_1.ZaloSDKError ? error : new common_1.ZaloSDKError(`Failed to send to user ${userId}: ${error.message}`, -1, error),
475
+ timestamp: new Date(),
476
+ };
477
+ // Callback cho từng user
478
+ if (options?.onUserComplete) {
479
+ options.onUserComplete(userResult);
480
+ }
481
+ if (!continueOnError) {
482
+ throw userResult.error;
483
+ }
484
+ return userResult;
485
+ }
486
+ });
487
+ const parallelResults = await Promise.all(promises);
488
+ results.push(...parallelResults);
489
+ }
490
+ else {
491
+ // Gửi tuần tự
492
+ for (let i = 0; i < uniqueUserIds.length; i++) {
493
+ const userId = uniqueUserIds[i];
494
+ try {
495
+ // Progress callback
496
+ if (options?.onProgress) {
497
+ const completed = i;
498
+ const successful = results.filter(r => r.success).length;
499
+ const failed = results.filter(r => !r.success).length;
500
+ const elapsed = Date.now() - startTime;
501
+ const avgTimePerUser = elapsed / Math.max(completed, 1);
502
+ const remaining = uniqueUserIds.length - completed;
503
+ const estimatedTimeRemaining = remaining * avgTimePerUser;
504
+ options.onProgress({
505
+ total: uniqueUserIds.length,
506
+ completed,
507
+ successful,
508
+ failed,
509
+ currentUserId: userId,
510
+ startTime,
511
+ estimatedTimeRemaining,
512
+ });
513
+ }
514
+ const result = await this.sendCustomPromotion(accessToken, { user_id: userId }, promotionData);
515
+ const userResult = {
516
+ userId,
517
+ success: true,
518
+ result,
519
+ error: null,
520
+ timestamp: new Date(),
521
+ };
522
+ results.push(userResult);
523
+ // Callback cho từng user
524
+ if (options?.onUserComplete) {
525
+ options.onUserComplete(userResult);
526
+ }
527
+ // Delay giữa các tin nhắn (trừ tin cuối cùng)
528
+ if (i < uniqueUserIds.length - 1 && delayMs > 0) {
529
+ await new Promise(resolve => setTimeout(resolve, delayMs));
530
+ }
531
+ }
532
+ catch (error) {
533
+ const userResult = {
534
+ userId,
535
+ success: false,
536
+ result: null,
537
+ error: error instanceof common_1.ZaloSDKError ? error : new common_1.ZaloSDKError(`Failed to send to user ${userId}: ${error.message}`, -1, error),
538
+ timestamp: new Date(),
539
+ };
540
+ results.push(userResult);
541
+ // Callback cho từng user
542
+ if (options?.onUserComplete) {
543
+ options.onUserComplete(userResult);
544
+ }
545
+ if (!continueOnError) {
546
+ throw userResult.error;
547
+ }
548
+ }
549
+ }
550
+ }
551
+ const endTime = Date.now();
552
+ const successful = results.filter(r => r.success);
553
+ const failed = results.filter(r => !r.success);
554
+ // Final progress callback
555
+ if (options?.onProgress) {
556
+ options.onProgress({
557
+ total: uniqueUserIds.length,
558
+ completed: uniqueUserIds.length,
559
+ successful: successful.length,
560
+ failed: failed.length,
561
+ currentUserId: null,
562
+ startTime,
563
+ estimatedTimeRemaining: 0,
564
+ });
565
+ }
566
+ return {
567
+ total: uniqueUserIds.length,
568
+ successful: successful.length,
569
+ failed: failed.length,
570
+ results,
571
+ executionTime: endTime - startTime,
572
+ mode,
573
+ startTime: new Date(startTime),
574
+ endTime: new Date(endTime),
575
+ successRate: (successful.length / uniqueUserIds.length) * 100,
576
+ };
577
+ }
578
+ catch (error) {
579
+ throw new common_1.ZaloSDKError(`Failed to send promotion to multiple users: ${error.message}`, -1, error);
580
+ }
581
+ }
416
582
  /**
417
583
  * Validate sending time (8:00 - 22:00)
418
584
  */
@@ -1 +1 @@
1
- {"version":3,"file":"promotion.service.js","sourceRoot":"","sources":["../../src/services/promotion.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promotion.service.js","sourceRoot":"","sources":["../../src/services/promotion.service.ts"],"names":[],"mappings":"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"}
@@ -313,6 +313,42 @@ export interface PromotionMessage extends BaseMessage {
313
313
  };
314
314
  };
315
315
  }
316
+ /**
317
+ * Result for individual user in multiple promotion sending
318
+ */
319
+ export interface PromotionUserResult {
320
+ userId: string;
321
+ success: boolean;
322
+ result: SendMessageResponse | null;
323
+ error: Error | null;
324
+ timestamp: Date;
325
+ }
326
+ /**
327
+ * Progress tracking for multiple promotion sending
328
+ */
329
+ export interface MultiplePromotionProgress {
330
+ total: number;
331
+ completed: number;
332
+ successful: number;
333
+ failed: number;
334
+ currentUserId: string | null;
335
+ startTime: number;
336
+ estimatedTimeRemaining: number | null;
337
+ }
338
+ /**
339
+ * Final result for multiple promotion sending
340
+ */
341
+ export interface MultiplePromotionResult {
342
+ total: number;
343
+ successful: number;
344
+ failed: number;
345
+ results: PromotionUserResult[];
346
+ executionTime: number;
347
+ mode: "sequential" | "parallel";
348
+ startTime: Date;
349
+ endTime: Date;
350
+ successRate: number;
351
+ }
316
352
  /**
317
353
  * Anonymous message types
318
354
  */
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE;YACP,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE;YACP,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GACf,WAAW,GACX,YAAY,GACZ,WAAW,GACX,cAAc,GACd,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,EAAE,gBAAgB,CAAC;IAE5B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,cAAc,CAAC,EACX,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,GACV,QAAQ,GACR,aAAa,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,4EAA4E;QAC5E,UAAU,EAAE,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;QACtE,sDAAsD;QACtD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,kDAAkD;QAClD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,2CAA2C;QAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,6DAA6D;QAC7D,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;QAC1B,2DAA2D;QAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAEvC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,IAAI,EAAE,mBAAmB,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,sBAAsB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,8BAA+B,SAAQ,WAAW;IACjE,IAAI,EAAE,2BAA2B,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;QAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IACpC,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE;YACP,aAAa,EAAE,MAAM,CAAC;YACtB,QAAQ,EAAE,KAAK,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;gBACd,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,cAAc,CAAC,EAAE;oBACf,IAAI,EAAE,MAAM,CAAC;oBACb,GAAG,EAAE,MAAM,CAAC;iBACb,CAAC;gBACF,OAAO,CAAC,EAAE,KAAK,CAAC;oBACd,IAAI,EAAE,MAAM,CAAC;oBACb,KAAK,EAAE,MAAM,CAAC;oBACd,GAAG,CAAC,EAAE,MAAM,CAAC;oBACb,OAAO,CAAC,EAAE,MAAM,CAAC;iBAClB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;CACJ;AAED,MAAM,MAAM,gBAAgB,GACxB,sBAAsB,GACtB,sBAAsB,GACtB,oBAAoB,GACpB,qBAAqB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE;QACV,IAAI,EAAE,UAAU,CAAC;QACjB,OAAO,EAAE;YACP,aAAa,EAAE,WAAW,CAAC;YAC3B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;YACvB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;YAC7B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;SAC7B,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,IAAI,EAAE,iBAAiB,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,uBAAuB,GACvB,wBAAwB,GACxB,uBAAuB,GACvB,0BAA0B,GAC1B,wBAAwB,GACxB,8BAA8B,GAC9B,kBAAkB,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,oBAAoB,GACpB,uBAAuB,GACvB,eAAe,GACf,cAAc,CAAC"}
@@ -0,0 +1,210 @@
1
+ # Multiple Users Promotion - Gửi Promotion đến nhiều Users với Tracking
2
+
3
+ ## Tổng quan
4
+
5
+ Method `sendCustomPromotionToMultipleUsers()` cho phép gửi promotion message đến nhiều user IDs cùng lúc với tính năng tracking real-time và error handling nâng cao.
6
+
7
+ ## Tính năng chính
8
+
9
+ ### 🚀 **Dual Sending Modes**
10
+ - **Sequential**: Gửi tuần tự với delay tùy chỉnh để tránh rate limit
11
+ - **Parallel**: Gửi song song để tối ưu tốc độ
12
+
13
+ ### 📊 **Real-time Tracking**
14
+ - Progress callback theo thời gian thực
15
+ - Estimated time remaining
16
+ - Success/failure statistics
17
+ - Current user being processed
18
+
19
+ ### 🛡️ **Error Handling**
20
+ - Error isolation - lỗi của 1 user không ảnh hưởng các user khác
21
+ - Continue on error option
22
+ - Detailed error information cho từng user
23
+ - Success rate calculation
24
+
25
+ ### 📈 **Performance Metrics**
26
+ - Execution time tracking
27
+ - Success rate percentage
28
+ - Detailed results cho từng user
29
+ - Start/end timestamps
30
+
31
+ ## Cách sử dụng
32
+
33
+ ### Basic Usage
34
+
35
+ ```typescript
36
+ import { PromotionService } from './services/promotion.service';
37
+
38
+ const promotionService = new PromotionService(zaloClient);
39
+
40
+ const result = await promotionService.sendCustomPromotionToMultipleUsers(
41
+ accessToken,
42
+ ["user1", "user2", "user3"],
43
+ {
44
+ attachmentId: "your_attachment_id",
45
+ headerContent: "🎉 Khuyến mãi đặc biệt!",
46
+ textContent: "Ưu đãi độc quyền dành riêng cho bạn",
47
+ tableData: [
48
+ { key: "Mã giảm giá", value: "SAVE50" },
49
+ { key: "Giảm giá", value: "50%" }
50
+ ],
51
+ buttons: [
52
+ {
53
+ title: "Mua ngay",
54
+ type: "oa.open.url",
55
+ payload: { url: "https://shop.example.com" }
56
+ }
57
+ ]
58
+ }
59
+ );
60
+
61
+ console.log(`Sent to ${result.successful}/${result.total} users`);
62
+ ```
63
+
64
+ ### Advanced Usage với Tracking
65
+
66
+ ```typescript
67
+ const result = await promotionService.sendCustomPromotionToMultipleUsers(
68
+ accessToken,
69
+ userIds,
70
+ promotionData,
71
+ {
72
+ mode: "sequential",
73
+ delayMs: 2000,
74
+ continueOnError: true,
75
+
76
+ // Real-time progress tracking
77
+ onProgress: (progress) => {
78
+ const percent = Math.round((progress.completed / progress.total) * 100);
79
+ console.log(`📊 Progress: ${percent}% (${progress.completed}/${progress.total})`);
80
+ console.log(`✅ Success: ${progress.successful} | ❌ Failed: ${progress.failed}`);
81
+
82
+ if (progress.currentUserId) {
83
+ console.log(`🔄 Processing: ${progress.currentUserId}`);
84
+ }
85
+
86
+ if (progress.estimatedTimeRemaining) {
87
+ const eta = Math.round(progress.estimatedTimeRemaining / 1000);
88
+ console.log(`⏱️ ETA: ~${eta}s`);
89
+ }
90
+ },
91
+
92
+ // Callback cho từng user
93
+ onUserComplete: (userResult) => {
94
+ if (userResult.success) {
95
+ console.log(`✅ ${userResult.userId}: ${userResult.result?.message_id}`);
96
+ } else {
97
+ console.log(`❌ ${userResult.userId}: ${userResult.error?.message}`);
98
+ }
99
+ }
100
+ }
101
+ );
102
+ ```
103
+
104
+ ### Parallel Mode
105
+
106
+ ```typescript
107
+ const result = await promotionService.sendCustomPromotionToMultipleUsers(
108
+ accessToken,
109
+ userIds,
110
+ promotionData,
111
+ {
112
+ mode: "parallel", // Gửi tất cả cùng lúc
113
+ continueOnError: true,
114
+ onProgress: (progress) => {
115
+ console.log(`⚡ Parallel: ${progress.completed}/${progress.total}`);
116
+ }
117
+ }
118
+ );
119
+
120
+ console.log(`⚡ Completed in ${result.executionTime}ms`);
121
+ ```
122
+
123
+ ## Options Parameters
124
+
125
+ ### SendingOptions
126
+
127
+ ```typescript
128
+ interface SendingOptions {
129
+ mode?: "sequential" | "parallel"; // Chế độ gửi (default: "sequential")
130
+ delayMs?: number; // Delay giữa tin nhắn (default: 1000ms)
131
+ continueOnError?: boolean; // Tiếp tục khi có lỗi (default: true)
132
+ onProgress?: (progress: MultiplePromotionProgress) => void;
133
+ onUserComplete?: (result: PromotionUserResult) => void;
134
+ }
135
+ ```
136
+
137
+ ### Progress Tracking Interface
138
+
139
+ ```typescript
140
+ interface MultiplePromotionProgress {
141
+ total: number; // Tổng số users
142
+ completed: number; // Số users đã xử lý
143
+ successful: number; // Số users gửi thành công
144
+ failed: number; // Số users gửi thất bại
145
+ currentUserId: string | null; // User ID đang xử lý (sequential mode)
146
+ startTime: number; // Timestamp bắt đầu
147
+ estimatedTimeRemaining: number | null; // Thời gian còn lại (ms)
148
+ }
149
+ ```
150
+
151
+ ### Result Interface
152
+
153
+ ```typescript
154
+ interface MultiplePromotionResult {
155
+ total: number; // Tổng số users
156
+ successful: number; // Số users thành công
157
+ failed: number; // Số users thất bại
158
+ results: PromotionUserResult[]; // Chi tiết kết quả từng user
159
+ executionTime: number; // Thời gian thực hiện (ms)
160
+ mode: "sequential" | "parallel"; // Chế độ đã sử dụng
161
+ startTime: Date; // Thời gian bắt đầu
162
+ endTime: Date; // Thời gian kết thúc
163
+ successRate: number; // Tỷ lệ thành công (%)
164
+ }
165
+ ```
166
+
167
+ ## Best Practices
168
+
169
+ ### 1. **Chọn Mode phù hợp**
170
+ - **Sequential**: Cho campaigns lớn, tránh rate limit
171
+ - **Parallel**: Cho urgent notifications, tối ưu tốc độ
172
+
173
+ ### 2. **Delay Configuration**
174
+ - Minimum 1000ms để tránh rate limit
175
+ - Tăng delay nếu gặp rate limit errors
176
+ - Test với số lượng nhỏ trước khi scale
177
+
178
+ ### 3. **Error Handling**
179
+ - Luôn set `continueOnError: true` cho campaigns lớn
180
+ - Log chi tiết errors để debug
181
+ - Retry failed users nếu cần
182
+
183
+ ### 4. **Performance Monitoring**
184
+ - Sử dụng `onProgress` để monitor real-time
185
+ - Track success rate và adjust strategy
186
+ - Monitor execution time cho optimization
187
+
188
+ ## Error Codes
189
+
190
+ - **2001**: Ngoài khung giờ cho phép (8:00-22:00)
191
+ - **2002**: User đã từ chối nhận tin truyền thông
192
+ - **2003**: Vượt quá giới hạn 1 tin/ngày
193
+ - **2004**: Template chưa được phê duyệt
194
+ - **2005**: Nội dung vi phạm chính sách
195
+ - **2006**: OA chưa có quyền gửi tin truyền thông
196
+
197
+ ## Examples
198
+
199
+ Xem file `examples/promotion-examples.ts` để có ví dụ chi tiết về:
200
+ - Sequential sending với progress tracking
201
+ - Parallel sending cho tốc độ
202
+ - Error handling và retry logic
203
+ - Performance monitoring và optimization
204
+
205
+ ## Rate Limits
206
+
207
+ - **Sending Time**: 8:00 - 22:00 hàng ngày
208
+ - **Frequency**: Tối đa 1 tin truyền thông/ngày/user
209
+ - **Concurrent**: Khuyến nghị sequential mode cho campaigns lớn
210
+ - **Delay**: Minimum 1000ms giữa các tin nhắn
@@ -127,6 +127,29 @@ Thêm thuộc tính `language` trong payload:
127
127
  }
128
128
  ```
129
129
 
130
+ ### 🚀 Tính năng mới: Multiple Users với Tracking
131
+
132
+ #### Gửi đến nhiều users cùng lúc
133
+ - **Sequential Mode**: Gửi tuần tự với delay tùy chỉnh
134
+ - **Parallel Mode**: Gửi song song để tối ưu tốc độ
135
+ - **Real-time Tracking**: Callback progress theo thời gian thực
136
+ - **Error Isolation**: Lỗi của 1 user không ảnh hưởng các user khác
137
+ - **Statistics**: Thống kê chi tiết success rate và execution time
138
+
139
+ #### Callback Tracking
140
+ ```typescript
141
+ {
142
+ onProgress: (progress) => {
143
+ // Real-time progress: completed/total, success/failed
144
+ // Estimated time remaining, current user ID
145
+ },
146
+ onUserComplete: (userResult) => {
147
+ // Callback cho từng user hoàn thành
148
+ // Success/failure status, message ID, error details
149
+ }
150
+ }
151
+ ```
152
+
130
153
  ## 📝 Cách sử dụng mới
131
154
 
132
155
  ### 1. Gửi Promotion theo format chuẩn docs
@@ -197,6 +220,74 @@ await promotionService.sendEventNotification(
197
220
  );
198
221
  ```
199
222
 
223
+ ### 4. Gửi Promotion đến nhiều Users với Tracking
224
+
225
+ ```typescript
226
+ // Gửi tuần tự với tracking
227
+ const result = await promotionService.sendCustomPromotionToMultipleUsers(
228
+ accessToken,
229
+ ["user1", "user2", "user3", "user4"],
230
+ {
231
+ attachmentId: "your_attachment_id",
232
+ headerContent: "🎉 Khuyến mãi đặc biệt!",
233
+ textContent: "Ưu đãi độc quyền dành riêng cho bạn",
234
+ tableData: [
235
+ { key: "Mã giảm giá", value: "SAVE50" },
236
+ { key: "Giảm giá", value: "50%" }
237
+ ],
238
+ buttons: [
239
+ {
240
+ title: "Mua ngay",
241
+ type: "oa.open.url",
242
+ payload: { url: "https://shop.example.com" }
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ mode: "sequential", // hoặc "parallel"
248
+ delayMs: 2000, // Delay 2s giữa các tin
249
+ continueOnError: true,
250
+
251
+ // Real-time progress tracking
252
+ onProgress: (progress) => {
253
+ console.log(`Progress: ${progress.completed}/${progress.total}`);
254
+ console.log(`Success: ${progress.successful}, Failed: ${progress.failed}`);
255
+ },
256
+
257
+ // Callback cho từng user
258
+ onUserComplete: (userResult) => {
259
+ if (userResult.success) {
260
+ console.log(`✅ Sent to ${userResult.userId}`);
261
+ } else {
262
+ console.log(`❌ Failed to ${userResult.userId}: ${userResult.error?.message}`);
263
+ }
264
+ }
265
+ }
266
+ );
267
+
268
+ console.log(`📊 Final Result:`);
269
+ console.log(`Total: ${result.total}, Success: ${result.successful}, Failed: ${result.failed}`);
270
+ console.log(`Success Rate: ${result.successRate}%, Time: ${result.executionTime}ms`);
271
+ ```
272
+
273
+ ### 5. Gửi Song Song (Parallel Mode)
274
+
275
+ ```typescript
276
+ // Gửi song song để tối ưu tốc độ
277
+ const result = await promotionService.sendCustomPromotionToMultipleUsers(
278
+ accessToken,
279
+ userIds,
280
+ promotionData,
281
+ {
282
+ mode: "parallel", // Gửi tất cả cùng lúc
283
+ continueOnError: true,
284
+ onProgress: (progress) => {
285
+ console.log(`⚡ Parallel: ${progress.completed}/${progress.total}`);
286
+ }
287
+ }
288
+ );
289
+ ```
290
+
200
291
  ## ⚠️ Breaking Changes
201
292
 
202
293
  1. **URL API**: Phải cập nhật từ v2.0 lên v3.0
@@ -213,6 +213,155 @@ export async function sendAllButtonTypes() {
213
213
  }
214
214
  }
215
215
 
216
+ /**
217
+ * Example 6: Gửi promotion đến nhiều users với tracking
218
+ */
219
+ export async function sendPromotionToMultipleUsers() {
220
+ try {
221
+ const userIds = [
222
+ "4356639876691778517",
223
+ "1234567890123456789",
224
+ "9876543210987654321",
225
+ "5555666677778888999"
226
+ ];
227
+
228
+ console.log(`🚀 Bắt đầu gửi promotion đến ${userIds.length} users...`);
229
+
230
+ const result = await promotionService.sendCustomPromotionToMultipleUsers(
231
+ ACCESS_TOKEN,
232
+ userIds,
233
+ {
234
+ attachmentId: "your_attachment_id",
235
+ headerContent: "🎉 Khuyến mãi đặc biệt cho bạn!",
236
+ textContent: "Ưu đãi độc quyền dành riêng cho khách hàng VIP. Nhanh tay đặt hàng để nhận ngay voucher giảm giá!",
237
+ tableData: [
238
+ { key: "Mã giảm giá", value: "SAVE50" },
239
+ { key: "Giảm giá", value: "50%" },
240
+ { key: "Hạn sử dụng", value: "31/12/2024" },
241
+ { key: "Áp dụng", value: "Tất cả sản phẩm" }
242
+ ],
243
+ footerText: "⏰ Ưu đãi có thời hạn - Đặt hàng ngay!",
244
+ buttons: [
245
+ {
246
+ title: "Mua ngay",
247
+ type: "oa.open.url",
248
+ payload: { url: "https://shop.example.com/sale" }
249
+ },
250
+ {
251
+ title: "Xem thêm ưu đãi",
252
+ type: "oa.query.hide",
253
+ payload: "#xemthem"
254
+ }
255
+ ],
256
+ language: "VI"
257
+ },
258
+ {
259
+ mode: "sequential", // Gửi tuần tự để tránh rate limit
260
+ delayMs: 2000, // Delay 2 giây giữa các tin
261
+ continueOnError: true, // Tiếp tục khi có lỗi
262
+
263
+ // Callback tracking progress
264
+ onProgress: (progress) => {
265
+ const percent = Math.round((progress.completed / progress.total) * 100);
266
+ const eta = progress.estimatedTimeRemaining
267
+ ? Math.round(progress.estimatedTimeRemaining / 1000)
268
+ : 0;
269
+
270
+ console.log(`📊 Progress: ${percent}% (${progress.completed}/${progress.total})`);
271
+ console.log(`✅ Thành công: ${progress.successful} | ❌ Thất bại: ${progress.failed}`);
272
+
273
+ if (progress.currentUserId) {
274
+ console.log(`🔄 Đang gửi đến user: ${progress.currentUserId}`);
275
+ }
276
+
277
+ if (eta > 0) {
278
+ console.log(`⏱️ Thời gian còn lại: ~${eta}s`);
279
+ }
280
+
281
+ console.log("---");
282
+ },
283
+
284
+ // Callback cho từng user hoàn thành
285
+ onUserComplete: (userResult) => {
286
+ if (userResult.success) {
287
+ console.log(`✅ Gửi thành công đến user ${userResult.userId}`);
288
+ console.log(` Message ID: ${userResult.result?.message_id}`);
289
+ } else {
290
+ console.log(`❌ Gửi thất bại đến user ${userResult.userId}`);
291
+ console.log(` Lỗi: ${userResult.error?.message}`);
292
+ }
293
+ }
294
+ }
295
+ );
296
+
297
+ // Kết quả cuối cùng
298
+ console.log("\n🎯 KẾT QUẢ CUỐI CÙNG:");
299
+ console.log(`📊 Tổng số users: ${result.total}`);
300
+ console.log(`✅ Thành công: ${result.successful}`);
301
+ console.log(`❌ Thất bại: ${result.failed}`);
302
+ console.log(`📈 Tỷ lệ thành công: ${result.successRate.toFixed(1)}%`);
303
+ console.log(`⏱️ Thời gian thực hiện: ${(result.executionTime / 1000).toFixed(1)}s`);
304
+ console.log(`🔄 Chế độ gửi: ${result.mode}`);
305
+
306
+ // Chi tiết lỗi (nếu có)
307
+ const failedResults = result.results.filter(r => !r.success);
308
+ if (failedResults.length > 0) {
309
+ console.log("\n❌ CHI TIẾT LỖI:");
310
+ failedResults.forEach(failed => {
311
+ console.log(`- User ${failed.userId}: ${failed.error?.message}`);
312
+ });
313
+ }
314
+
315
+ return result;
316
+ } catch (error) {
317
+ console.error("Failed to send promotion to multiple users:", error);
318
+ throw error;
319
+ }
320
+ }
321
+
322
+ /**
323
+ * Example 7: Gửi promotion song song (parallel mode)
324
+ */
325
+ export async function sendPromotionParallel() {
326
+ try {
327
+ const userIds = ["user1", "user2", "user3"];
328
+
329
+ const result = await promotionService.sendCustomPromotionToMultipleUsers(
330
+ ACCESS_TOKEN,
331
+ userIds,
332
+ {
333
+ attachmentId: "your_attachment_id",
334
+ headerContent: "⚡ Flash Sale - Chỉ 1 giờ!",
335
+ textContent: "Giảm giá sốc 70% cho 100 khách hàng đầu tiên!",
336
+ tableData: [
337
+ { key: "Giảm giá", value: "70%" },
338
+ { key: "Thời gian", value: "1 giờ" }
339
+ ],
340
+ buttons: [
341
+ {
342
+ title: "Mua ngay",
343
+ type: "oa.open.url",
344
+ payload: { url: "https://flash-sale.example.com" }
345
+ }
346
+ ]
347
+ },
348
+ {
349
+ mode: "parallel", // Gửi song song để tối ưu tốc độ
350
+ continueOnError: true,
351
+ onProgress: (progress) => {
352
+ console.log(`⚡ Parallel sending: ${progress.completed}/${progress.total} completed`);
353
+ }
354
+ }
355
+ );
356
+
357
+ console.log(`⚡ Parallel sending completed in ${result.executionTime}ms`);
358
+ return result;
359
+ } catch (error) {
360
+ console.error("Failed to send parallel promotion:", error);
361
+ throw error;
362
+ }
363
+ }
364
+
216
365
  /**
217
366
  * Chạy tất cả examples
218
367
  */
@@ -240,6 +389,14 @@ export async function runAllExamples() {
240
389
  await sendAllButtonTypes();
241
390
  console.log("✅ All button types demo sent\n");
242
391
 
392
+ console.log("6. Sending promotion to multiple users...");
393
+ await sendPromotionToMultipleUsers();
394
+ console.log("✅ Multiple users promotion sent\n");
395
+
396
+ console.log("7. Sending promotion in parallel mode...");
397
+ await sendPromotionParallel();
398
+ console.log("✅ Parallel promotion sent\n");
399
+
243
400
  console.log("🎉 All examples completed successfully!");
244
401
  } catch (error) {
245
402
  console.error("❌ Error running examples:", error);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@warriorteam/redai-zalo-sdk",
3
- "version": "1.22.0",
4
- "description": "Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0, and Message Sequence APIs with Real-time Tracking",
3
+ "version": "1.23.0",
4
+ "description": "Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0 with Multiple Users Support, and Message Sequence APIs with Real-time Tracking",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
@@ -55,7 +55,15 @@
55
55
  "banner-element",
56
56
  "table-element",
57
57
  "multi-language",
58
- "button-actions"
58
+ "button-actions",
59
+ "multiple-users",
60
+ "bulk-promotion",
61
+ "real-time-tracking",
62
+ "progress-callback",
63
+ "sequential-sending",
64
+ "parallel-sending",
65
+ "campaign-management",
66
+ "error-isolation"
59
67
  ],
60
68
  "author": "RedAI Team",
61
69
  "license": "MIT",