@warriorteam/redai-zalo-sdk 1.20.0 → 1.22.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,114 @@ 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.22.0] - 2025-08-29
9
+
10
+ ### 🚀 MAJOR UPDATE - Promotion Service v3.0
11
+
12
+ #### ⬆️ API Version Upgrade
13
+ - **UPGRADED**: Promotion Service từ v2.0 lên **v3.0** API
14
+ - **URL**: Cập nhật endpoint từ `/v2.0/oa/message/promotion` lên `/v3.0/oa/message/promotion`
15
+ - **BREAKING**: Cấu trúc message elements hoàn toàn mới, không tương thích ngược
16
+
17
+ #### 🏗️ New Message Elements Structure
18
+ - **BANNER**: Element với `attachment_id` hoặc `image_url`, type="banner"
19
+ - **HEADER**: Element với `content` và `align`, type="header" (tối đa 100 ký tự)
20
+ - **TEXT**: Element với `content` và `align`, type="text" (tối đa 1000 ký tự, tối đa 2 đoạn)
21
+ - **TABLE**: Element với `content` array, type="table" (tối đa 5 items, key ≤ 25 chars, value ≤ 100 chars)
22
+
23
+ #### 🔘 Enhanced Button System
24
+ - **PAYLOAD**: Hỗ trợ cả object và string tùy theo button type
25
+ - **TYPES**: `oa.open.url`, `oa.query.show`, `oa.query.hide`, `oa.open.sms`, `oa.open.phone`
26
+ - **VALIDATION**: Title tối đa 35 ký tự, tối đa 4 buttons
27
+ - **ICONS**: Hỗ trợ `image_icon` với URL/attachment_id/"default"
28
+
29
+ #### 🌐 Multi-language Support
30
+ - **LANGUAGE**: Thêm thuộc tính `language: "VI" | "EN"`
31
+ - **LOCALIZATION**: Nội dung mặc định tự động chuyển ngôn ngữ
32
+
33
+ #### 🆕 New Methods & Features
34
+ - **ADDED**: `sendCustomPromotion()` - Gửi promotion theo format chuẩn docs v3.0
35
+ - **ENHANCED**: `sendProductPromotion()` - Cập nhật với elements structure mới
36
+ - **ENHANCED**: `sendEventNotification()` - Cập nhật với table và text elements
37
+ - **ENHANCED**: `sendNewsletter()` - Cập nhật với banner và table elements
38
+ - **VALIDATION**: Nâng cao validation cho elements và buttons
39
+
40
+ #### 📚 Comprehensive Documentation & Examples
41
+ - **ADDED**: `docs/PROMOTION_API_V3_MIGRATION.md` - Hướng dẫn migration chi tiết
42
+ - **ADDED**: `examples/promotion-examples.ts` - Examples đầy đủ cho tất cả tính năng
43
+ - **EXAMPLES**: Demo 5 button types với payload format đúng
44
+ - **MIGRATION**: Breaking changes và checklist migration
45
+
46
+ #### 🛡️ Enhanced Validation & Error Handling
47
+ - **TIME**: Kiểm tra sending time (8:00-22:00)
48
+ - **ELEMENTS**: Validate structure và content length
49
+ - **BUTTONS**: Validate payload format theo từng type
50
+ - **ERRORS**: Error codes cụ thể cho từng violation
51
+
52
+ ### 🔧 BREAKING CHANGES
53
+ - **Elements Structure**: Hoàn toàn khác v2.0, cần migration
54
+ - **Button Payload**: Từ string thành object/string tùy type
55
+ - **Image Handling**: Ưu tiên `attachment_id` thay vì `image_url`
56
+ - **API URL**: Phải cập nhật từ v2.0 lên v3.0
57
+
58
+ ---
59
+
60
+ ## [1.21.0] - 2025-08-29
61
+
62
+ ### 🚀 NEW FEATURES
63
+
64
+ #### Enhanced Broadcast Service - Multiple Messages Support
65
+ - **ADDED**: `sendMultipleBroadcastMessages()` - Gửi nhiều broadcast messages với nhiều attachment IDs
66
+ - **MODES**: Hỗ trợ 2 chế độ gửi: `sequential` (tuần tự) và `parallel` (song song)
67
+ - **DELAY**: Tùy chỉnh delay giữa các tin nhắn cho sequential mode
68
+ - **PROGRESS**: Real-time progress tracking với callback `onProgress`
69
+ - **RESILIENT**: Error isolation - lỗi của 1 tin không ảnh hưởng các tin khác
70
+ - **SMART**: Tự động loại bỏ attachment IDs trùng lặp
71
+
72
+ #### Advanced Campaign Management
73
+ - **SEQUENTIAL**: Gửi tuần tự với delay tùy chỉnh để tránh rate limit
74
+ - **PARALLEL**: Gửi song song để tối ưu tốc độ
75
+ - **MONITORING**: Theo dõi real-time số tin thành công/thất bại
76
+ - **STATISTICS**: Thống kê chi tiết thời gian thực hiện và success rate
77
+
78
+ ### 📊 NEW INTERFACES
79
+
80
+ #### Multiple Broadcast Types
81
+ - **ADDED**: `BroadcastMessageResult` - Kết quả từng tin nhắn broadcast
82
+ - **ADDED**: `MultipleBroadcastProgress` - Interface cho progress tracking
83
+ - **ADDED**: `MultipleBroadcastResult` - Kết quả tổng thể campaign
84
+ - **ENHANCED**: Progress callback với detailed metrics
85
+
86
+ ### 🛡️ ENHANCED ERROR HANDLING
87
+ - **ISOLATION**: Lỗi của 1 attachment không làm dừng campaign
88
+ - **DETAILED**: Chi tiết lỗi cho từng tin nhắn riêng biệt
89
+ - **VALIDATION**: Kiểm tra attachment IDs array không rỗng
90
+ - **DEDUPLICATION**: Tự động loại bỏ attachment IDs trùng lặp
91
+
92
+ ### 📚 UPDATED DOCUMENTATION & EXAMPLES
93
+
94
+ #### Enhanced Documentation
95
+ - **UPDATED**: `docs/BROADCAST_SERVICE.md` - Thêm multiple messages examples
96
+ - **UPDATED**: `docs/API_REFERENCE.md` - Thêm sendMultipleBroadcastMessages method
97
+ - **UPDATED**: `README.md` - Thêm ví dụ multiple broadcast
98
+
99
+ #### Enhanced Examples
100
+ - **UPDATED**: `examples/broadcast-example.ts` - Thêm sequential và parallel examples
101
+ - **EXAMPLES**: Progress tracking và error handling
102
+ - **EXAMPLES**: Campaign management với statistics
103
+
104
+ #### Enhanced Tests
105
+ - **UPDATED**: `tests/broadcast.test.ts` - Comprehensive tests cho multiple messages
106
+ - **COVERAGE**: Test sequential và parallel modes
107
+ - **COVERAGE**: Test progress callback và error handling
108
+ - **COVERAGE**: Test duplicate removal và validation
109
+
110
+ ### 🔧 API ENHANCEMENTS
111
+ - **FLEXIBLE**: Chọn mode phù hợp với use case (sequential vs parallel)
112
+ - **CONFIGURABLE**: Delay tùy chỉnh cho rate limiting
113
+ - **OBSERVABLE**: Progress tracking cho campaign monitoring
114
+ - **ROBUST**: Comprehensive error handling và validation
115
+
8
116
  ## [1.20.0] - 2025-08-29
9
117
 
10
118
  ### 🚀 NEW FEATURES
package/README.md CHANGED
@@ -408,6 +408,24 @@ await zalo.broadcast.sendBroadcastMessage(
408
408
  { target: hcmTarget },
409
409
  "article-id"
410
410
  );
411
+
412
+ // Send multiple broadcast messages
413
+ const attachmentIds = ["article-1", "article-2", "article-3"];
414
+
415
+ const multipleResult = await zalo.broadcast.sendMultipleBroadcastMessages(
416
+ accessToken,
417
+ { target: hcmTarget },
418
+ attachmentIds,
419
+ {
420
+ mode: 'sequential',
421
+ delay: 2000, // 2 seconds between messages
422
+ onProgress: (progress) => {
423
+ console.log(`Progress: ${progress.completed}/${progress.total}`);
424
+ }
425
+ }
426
+ );
427
+
428
+ console.log(`Sent ${multipleResult.successfulMessages}/${multipleResult.totalMessages} messages`);
411
429
  ```
412
430
 
413
431
  ### Consultation Service (Customer Support)
@@ -30,7 +30,7 @@
30
30
  * - 3005: Nội dung vi phạm chính sách
31
31
  */
32
32
  import { ZaloClient } from '../clients/zalo-client';
33
- import { BroadcastResponse, BroadcastTarget, BroadcastRecipient, BROADCAST_CITY_CODES, BROADCAST_AGE_CODES, BROADCAST_GENDER_CODES, BROADCAST_LOCATION_CODES, BROADCAST_PLATFORM_CODES } from '../types/broadcast';
33
+ import { BroadcastResponse, BroadcastTarget, BroadcastRecipient, BROADCAST_CITY_CODES, BROADCAST_AGE_CODES, BROADCAST_GENDER_CODES, BROADCAST_LOCATION_CODES, BROADCAST_PLATFORM_CODES, MultipleBroadcastResult, MultipleBroadcastProgress } from '../types/broadcast';
34
34
  export declare class BroadcastService {
35
35
  private readonly client;
36
36
  private readonly broadcastApiUrl;
@@ -86,5 +86,23 @@ export declare class BroadcastService {
86
86
  * @returns Object mapping platforms to codes
87
87
  */
88
88
  getPlatformCodes(): typeof BROADCAST_PLATFORM_CODES;
89
+ /**
90
+ * Gửi nhiều tin nhắn broadcast với nhiều attachment IDs
91
+ * @param accessToken Access token của Official Account
92
+ * @param recipient Thông tin targeting người nhận
93
+ * @param attachmentIds Danh sách các article attachment IDs
94
+ * @param options Tùy chọn gửi (delay giữa các tin, parallel/sequential)
95
+ * @returns Danh sách kết quả gửi broadcast
96
+ */
97
+ sendMultipleBroadcastMessages(accessToken: string, recipient: BroadcastRecipient, attachmentIds: string[], options?: {
98
+ delay?: number;
99
+ mode?: 'parallel' | 'sequential';
100
+ onProgress?: (progress: MultipleBroadcastProgress) => void;
101
+ }): Promise<MultipleBroadcastResult>;
102
+ /**
103
+ * Sleep utility for delays
104
+ * @param ms Milliseconds to sleep
105
+ */
106
+ private sleep;
89
107
  }
90
108
  //# sourceMappingURL=broadcast.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast.service.d.ts","sourceRoot":"","sources":["../../src/services/broadcast.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAEL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAGlB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,gBAAgB;IAIf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;gBAEhD,MAAM,EAAE,UAAU;IAE/C;;;;;;OAMG;IACU,oBAAoB,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC;IA2D7B;;;;OAIG;IACI,qBAAqB,CAAC,QAAQ,EAAE;QACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,CAAC,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAC9C,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC;KACrD,GAAG,eAAe;IA+DnB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IA2BhC;;;OAGG;IACI,YAAY,IAAI,OAAO,oBAAoB;IAIlD;;;OAGG;IACI,gBAAgB,IAAI,OAAO,mBAAmB;IAIrD;;;OAGG;IACI,cAAc,IAAI,OAAO,sBAAsB;IAItD;;;OAGG;IACI,gBAAgB,IAAI,OAAO,wBAAwB;IAI1D;;;OAGG;IACI,gBAAgB,IAAI,OAAO,wBAAwB;CAG3D"}
1
+ {"version":3,"file":"broadcast.service.d.ts","sourceRoot":"","sources":["../../src/services/broadcast.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAEL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAGlB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EAE1B,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,gBAAgB;IAIf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;gBAEhD,MAAM,EAAE,UAAU;IAE/C;;;;;;OAMG;IACU,oBAAoB,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC;IA2D7B;;;;OAIG;IACI,qBAAqB,CAAC,QAAQ,EAAE;QACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,CAAC,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAC9C,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC;KACrD,GAAG,eAAe;IA+DnB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IA2BhC;;;OAGG;IACI,YAAY,IAAI,OAAO,oBAAoB;IAIlD;;;OAGG;IACI,gBAAgB,IAAI,OAAO,mBAAmB;IAIrD;;;OAGG;IACI,cAAc,IAAI,OAAO,sBAAsB;IAItD;;;OAGG;IACI,gBAAgB,IAAI,OAAO,wBAAwB;IAI1D;;;OAGG;IACI,gBAAgB,IAAI,OAAO,wBAAwB;IAI1D;;;;;;;OAOG;IACU,6BAA6B,CACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,EAC7B,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;QACjC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,yBAAyB,KAAK,IAAI,CAAC;KAC5D,GACA,OAAO,CAAC,uBAAuB,CAAC;IAqKnC;;;OAGG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -206,6 +206,156 @@ class BroadcastService {
206
206
  getPlatformCodes() {
207
207
  return broadcast_1.BROADCAST_PLATFORM_CODES;
208
208
  }
209
+ /**
210
+ * Gửi nhiều tin nhắn broadcast với nhiều attachment IDs
211
+ * @param accessToken Access token của Official Account
212
+ * @param recipient Thông tin targeting người nhận
213
+ * @param attachmentIds Danh sách các article attachment IDs
214
+ * @param options Tùy chọn gửi (delay giữa các tin, parallel/sequential)
215
+ * @returns Danh sách kết quả gửi broadcast
216
+ */
217
+ async sendMultipleBroadcastMessages(accessToken, recipient, attachmentIds, options) {
218
+ try {
219
+ // Validate input
220
+ if (!attachmentIds || attachmentIds.length === 0) {
221
+ throw new common_1.ZaloSDKError("At least one attachment ID is required", -1);
222
+ }
223
+ // Remove duplicates
224
+ const uniqueAttachmentIds = [...new Set(attachmentIds)];
225
+ const startTime = Date.now();
226
+ const results = [];
227
+ const mode = options?.mode || 'sequential';
228
+ const delay = options?.delay || 0;
229
+ if (mode === 'parallel') {
230
+ // Gửi song song tất cả
231
+ const promises = uniqueAttachmentIds.map(async (attachmentId, index) => {
232
+ try {
233
+ const result = await this.sendBroadcastMessage(accessToken, recipient, attachmentId);
234
+ const messageResult = {
235
+ attachmentId,
236
+ success: true,
237
+ messageId: result.data.message_id,
238
+ error: null,
239
+ sentAt: new Date()
240
+ };
241
+ // Report progress
242
+ if (options?.onProgress) {
243
+ options.onProgress({
244
+ total: uniqueAttachmentIds.length,
245
+ completed: index + 1,
246
+ successful: results.filter(r => r.success).length + 1,
247
+ failed: results.filter(r => !r.success).length,
248
+ currentAttachmentId: attachmentId,
249
+ isCompleted: index === uniqueAttachmentIds.length - 1
250
+ });
251
+ }
252
+ return messageResult;
253
+ }
254
+ catch (error) {
255
+ const messageResult = {
256
+ attachmentId,
257
+ success: false,
258
+ messageId: null,
259
+ error: error instanceof common_1.ZaloSDKError ? error : new common_1.ZaloSDKError(error.message, -1),
260
+ sentAt: new Date()
261
+ };
262
+ // Report progress
263
+ if (options?.onProgress) {
264
+ options.onProgress({
265
+ total: uniqueAttachmentIds.length,
266
+ completed: index + 1,
267
+ successful: results.filter(r => r.success).length,
268
+ failed: results.filter(r => !r.success).length + 1,
269
+ currentAttachmentId: attachmentId,
270
+ isCompleted: index === uniqueAttachmentIds.length - 1
271
+ });
272
+ }
273
+ return messageResult;
274
+ }
275
+ });
276
+ const parallelResults = await Promise.all(promises);
277
+ results.push(...parallelResults);
278
+ }
279
+ else {
280
+ // Gửi tuần tự
281
+ for (let i = 0; i < uniqueAttachmentIds.length; i++) {
282
+ const attachmentId = uniqueAttachmentIds[i];
283
+ try {
284
+ const result = await this.sendBroadcastMessage(accessToken, recipient, attachmentId);
285
+ const messageResult = {
286
+ attachmentId,
287
+ success: true,
288
+ messageId: result.data.message_id,
289
+ error: null,
290
+ sentAt: new Date()
291
+ };
292
+ results.push(messageResult);
293
+ // Report progress
294
+ if (options?.onProgress) {
295
+ options.onProgress({
296
+ total: uniqueAttachmentIds.length,
297
+ completed: i + 1,
298
+ successful: results.filter(r => r.success).length,
299
+ failed: results.filter(r => !r.success).length,
300
+ currentAttachmentId: attachmentId,
301
+ isCompleted: i === uniqueAttachmentIds.length - 1
302
+ });
303
+ }
304
+ }
305
+ catch (error) {
306
+ const messageResult = {
307
+ attachmentId,
308
+ success: false,
309
+ messageId: null,
310
+ error: error instanceof common_1.ZaloSDKError ? error : new common_1.ZaloSDKError(error.message, -1),
311
+ sentAt: new Date()
312
+ };
313
+ results.push(messageResult);
314
+ // Report progress
315
+ if (options?.onProgress) {
316
+ options.onProgress({
317
+ total: uniqueAttachmentIds.length,
318
+ completed: i + 1,
319
+ successful: results.filter(r => r.success).length,
320
+ failed: results.filter(r => !r.success).length,
321
+ currentAttachmentId: attachmentId,
322
+ isCompleted: i === uniqueAttachmentIds.length - 1
323
+ });
324
+ }
325
+ }
326
+ // Delay before next message (except for last one)
327
+ if (delay > 0 && i < uniqueAttachmentIds.length - 1) {
328
+ await this.sleep(delay);
329
+ }
330
+ }
331
+ }
332
+ const totalDuration = Date.now() - startTime;
333
+ const successful = results.filter(r => r.success).length;
334
+ const failed = results.filter(r => !r.success).length;
335
+ return {
336
+ totalMessages: uniqueAttachmentIds.length,
337
+ successfulMessages: successful,
338
+ failedMessages: failed,
339
+ results,
340
+ totalDuration,
341
+ mode,
342
+ targetCriteria: recipient.target
343
+ };
344
+ }
345
+ catch (error) {
346
+ if (error instanceof common_1.ZaloSDKError) {
347
+ throw error;
348
+ }
349
+ throw new common_1.ZaloSDKError(`Failed to send multiple broadcast messages: ${error.message}`, -1, error);
350
+ }
351
+ }
352
+ /**
353
+ * Sleep utility for delays
354
+ * @param ms Milliseconds to sleep
355
+ */
356
+ sleep(ms) {
357
+ return new Promise(resolve => setTimeout(resolve, ms));
358
+ }
209
359
  }
210
360
  exports.BroadcastService = BroadcastService;
211
361
  //# sourceMappingURL=broadcast.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast.service.js","sourceRoot":"","sources":["../../src/services/broadcast.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broadcast.service.js","sourceRoot":"","sources":["../../src/services/broadcast.service.ts"],"names":[],"mappings":"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"}
@@ -62,7 +62,8 @@ export declare class PromotionService {
62
62
  sendProductPromotion(accessToken: string, recipient: MessageRecipient, promotionInfo: {
63
63
  title: string;
64
64
  description: string;
65
- imageUrl: string;
65
+ imageUrl?: string;
66
+ attachmentId?: string;
66
67
  originalPrice: number;
67
68
  discountPrice: number;
68
69
  discountPercent: number;
@@ -79,7 +80,8 @@ export declare class PromotionService {
79
80
  sendEventNotification(accessToken: string, recipient: MessageRecipient, eventInfo: {
80
81
  title: string;
81
82
  description: string;
82
- imageUrl: string;
83
+ imageUrl?: string;
84
+ attachmentId?: string;
83
85
  eventDate: string;
84
86
  location: string;
85
87
  registrationUrl: string;
@@ -94,13 +96,38 @@ export declare class PromotionService {
94
96
  sendNewsletter(accessToken: string, recipient: MessageRecipient, newsletterInfo: {
95
97
  title: string;
96
98
  summary: string;
97
- imageUrl: string;
99
+ imageUrl?: string;
100
+ attachmentId?: string;
98
101
  articles: Array<{
99
102
  title: string;
100
103
  url: string;
101
104
  }>;
102
105
  unsubscribeUrl: string;
103
106
  }): Promise<SendMessageResponse>;
107
+ /**
108
+ * Tạo promotion message theo format chuẩn v3.0 (như trong docs)
109
+ * @param accessToken Access token của Official Account
110
+ * @param recipient Thông tin người nhận
111
+ * @param promotionData Dữ liệu promotion
112
+ * @returns Thông tin tin nhắn đã gửi
113
+ */
114
+ sendCustomPromotion(accessToken: string, recipient: MessageRecipient, promotionData: {
115
+ attachmentId: string;
116
+ headerContent: string;
117
+ textContent: string;
118
+ tableData: Array<{
119
+ key: string;
120
+ value: string;
121
+ }>;
122
+ footerText?: string;
123
+ buttons: Array<{
124
+ title: string;
125
+ imageIcon?: string;
126
+ type: string;
127
+ payload: Record<string, any> | string;
128
+ }>;
129
+ language?: "VI" | "EN";
130
+ }): Promise<SendMessageResponse>;
104
131
  /**
105
132
  * Validate promotion message format
106
133
  * @param message Promotion message to validate
@@ -1 +1 @@
1
- {"version":3,"file":"promotion.service.d.ts","sourceRoot":"","sources":["../../src/services/promotion.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAG1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,gBAAgB;IAIf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CACsB;gBAEzB,MAAM,EAAE,UAAU;IAE/C;;;;;;OAMG;IACU,oBAAoB,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAyC/B;;;;;;OAMG;IACU,oBAAoB,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,mBAAmB,CAAC;IA6C/B;;;;;;OAMG;IACU,qBAAqB,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,mBAAmB,CAAC;IA6C/B;;;;;;OAMG;IACU,cAAc,CACzB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,GAAG,EAAE,MAAM,CAAC;SACb,CAAC,CAAC;QACH,cAAc,EAAE,MAAM,CAAC;KACxB,GACA,OAAO,CAAC,mBAAmB,CAAC;IAyC/B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAW5B"}
1
+ {"version":3,"file":"promotion.service.d.ts","sourceRoot":"","sources":["../../src/services/promotion.service.ts"],"names":[],"mappings":"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"}