@warriorteam/redai-zalo-sdk 1.22.0 → 1.24.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 +128 -0
- package/dist/services/promotion.service.d.ts +34 -7
- package/dist/services/promotion.service.d.ts.map +1 -1
- package/dist/services/promotion.service.js +219 -6
- package/dist/services/promotion.service.js.map +1 -1
- package/dist/types/message.d.ts +101 -4
- package/dist/types/message.d.ts.map +1 -1
- package/docs/BUTTON_TYPES_GUIDE.md +283 -0
- package/docs/MULTIPLE_USERS_PROMOTION.md +210 -0
- package/docs/PROMOTION_API_V3_MIGRATION.md +121 -3
- package/examples/promotion-examples.ts +164 -7
- package/package.json +20 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,134 @@ 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.24.0] - 2025-08-29
|
|
9
|
+
|
|
10
|
+
### 🎯 ENHANCED BUTTON TYPES SYSTEM - Complete TypeScript Support
|
|
11
|
+
|
|
12
|
+
#### 🔧 Comprehensive Button Type System
|
|
13
|
+
- **ADDED**: 5 specific button interfaces với proper TypeScript typing
|
|
14
|
+
- **ADDED**: `OpenUrlButton`, `QueryShowButton`, `QueryHideButton`, `OpenSmsButton`, `OpenPhoneButton`
|
|
15
|
+
- **UNION TYPE**: `PromotionButton` union type cho strict typing
|
|
16
|
+
- **FLEXIBLE INPUT**: `PromotionButtonInput` interface cho easy usage
|
|
17
|
+
|
|
18
|
+
#### ⚙️ Auto-Conversion System
|
|
19
|
+
- **ADDED**: `convertToTypedButton()` helper function
|
|
20
|
+
- **SMART CONVERSION**: Tự động convert từ flexible input sang proper API format
|
|
21
|
+
- **PAYLOAD VALIDATION**: Validate payload format theo từng button type
|
|
22
|
+
- **BACKWARD COMPATIBLE**: Hỗ trợ cả old và new button formats
|
|
23
|
+
|
|
24
|
+
#### 📊 Button Type Specifications
|
|
25
|
+
- **oa.open.url**: `{ url: string }` payload format
|
|
26
|
+
- **oa.query.show**: `string` payload (max 1000 chars) - tin nhắn HIỂN THỊ
|
|
27
|
+
- **oa.query.hide**: `string` payload (max 1000 chars) - tin nhắn ẨN
|
|
28
|
+
- **oa.open.sms**: `{ content: string, phone_code: string }` (content max 160 chars)
|
|
29
|
+
- **oa.open.phone**: `{ phone_code: string }` payload format
|
|
30
|
+
|
|
31
|
+
#### 🛡️ Enhanced Validation & Limits
|
|
32
|
+
- **TITLE LIMIT**: Max 100 characters per button title
|
|
33
|
+
- **PAYLOAD LIMITS**: Specific limits cho từng button type
|
|
34
|
+
- **BUTTON COUNT**: Max 4 buttons per message
|
|
35
|
+
- **TYPE SAFETY**: Full TypeScript support với proper type checking
|
|
36
|
+
|
|
37
|
+
#### 🎨 Developer Experience Improvements
|
|
38
|
+
- **INTELLISENSE**: Full autocomplete support cho button types
|
|
39
|
+
- **TYPE HINTS**: Clear type hints cho payload structures
|
|
40
|
+
- **ERROR PREVENTION**: Compile-time error checking
|
|
41
|
+
- **FLEXIBLE API**: Support both strict typing và flexible input
|
|
42
|
+
|
|
43
|
+
### 📚 COMPREHENSIVE DOCUMENTATION
|
|
44
|
+
|
|
45
|
+
#### New Documentation
|
|
46
|
+
- **ADDED**: `docs/BUTTON_TYPES_GUIDE.md` - Complete button types reference
|
|
47
|
+
- **DETAILED**: All 5 button types với examples và specifications
|
|
48
|
+
- **BEST PRACTICES**: Guidelines cho button usage và optimization
|
|
49
|
+
|
|
50
|
+
#### Enhanced Documentation
|
|
51
|
+
- **UPDATED**: `docs/PROMOTION_API_V3_MIGRATION.md` - TypeScript support section
|
|
52
|
+
- **UPDATED**: `examples/promotion-examples.ts` - Proper typed examples
|
|
53
|
+
- **TYPE EXAMPLES**: Comprehensive examples cho tất cả button types
|
|
54
|
+
|
|
55
|
+
### 🔄 Migration & Compatibility
|
|
56
|
+
|
|
57
|
+
#### Backward Compatibility
|
|
58
|
+
- **MAINTAINED**: Existing code continues to work without changes
|
|
59
|
+
- **AUTO-CONVERT**: Old button formats automatically converted
|
|
60
|
+
- **GRADUAL MIGRATION**: Developers có thể migrate từ từ
|
|
61
|
+
|
|
62
|
+
#### TypeScript Migration
|
|
63
|
+
```typescript
|
|
64
|
+
// Old (still works)
|
|
65
|
+
buttons: Array<{ title: string; type: string; payload: any }>
|
|
66
|
+
|
|
67
|
+
// New (recommended)
|
|
68
|
+
buttons: PromotionButtonInput[]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 🎯 USE CASES ENHANCED
|
|
72
|
+
- **E-COMMERCE**: Product purchase buttons với proper URL handling
|
|
73
|
+
- **CUSTOMER SERVICE**: Query buttons cho automated responses
|
|
74
|
+
- **COMMUNICATION**: SMS và phone buttons cho direct contact
|
|
75
|
+
- **ENGAGEMENT**: Mixed button types cho comprehensive user interaction
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## [1.23.0] - 2025-08-29
|
|
80
|
+
|
|
81
|
+
### 🚀 NEW FEATURE - Multiple Users Promotion với Real-time Tracking
|
|
82
|
+
|
|
83
|
+
#### 🎯 Multiple Users Support
|
|
84
|
+
- **ADDED**: `sendCustomPromotionToMultipleUsers()` - Gửi promotion đến nhiều user IDs cùng lúc
|
|
85
|
+
- **DUAL MODES**: Sequential (tuần tự) và Parallel (song song) sending modes
|
|
86
|
+
- **SMART DEDUPLICATION**: Tự động loại bỏ user IDs trùng lặp
|
|
87
|
+
- **ERROR ISOLATION**: Lỗi của 1 user không ảnh hưởng các user khác
|
|
88
|
+
|
|
89
|
+
#### 📊 Real-time Tracking & Callbacks
|
|
90
|
+
- **PROGRESS TRACKING**: `onProgress` callback với real-time statistics
|
|
91
|
+
- **USER COMPLETION**: `onUserComplete` callback cho từng user hoàn thành
|
|
92
|
+
- **ESTIMATED TIME**: Tính toán thời gian còn lại (ETA) cho sequential mode
|
|
93
|
+
- **DETAILED METRICS**: Success rate, execution time, start/end timestamps
|
|
94
|
+
|
|
95
|
+
#### ⚡ Performance Optimization
|
|
96
|
+
- **SEQUENTIAL MODE**: Gửi tuần tự với delay tùy chỉnh để tránh rate limit
|
|
97
|
+
- **PARALLEL MODE**: Gửi song song để tối ưu tốc độ cho urgent campaigns
|
|
98
|
+
- **CONFIGURABLE DELAY**: Tùy chỉnh delay giữa các tin nhắn (default: 1000ms)
|
|
99
|
+
- **CONTINUE ON ERROR**: Option để tiếp tục khi gặp lỗi (default: true)
|
|
100
|
+
|
|
101
|
+
#### 🛡️ Enhanced Error Handling
|
|
102
|
+
- **INDIVIDUAL RESULTS**: Chi tiết kết quả success/failure cho từng user
|
|
103
|
+
- **ERROR DETAILS**: Thông tin lỗi cụ thể cho từng user thất bại
|
|
104
|
+
- **RESILIENT PROCESSING**: Campaign không bị dừng khi 1 user lỗi
|
|
105
|
+
- **COMPREHENSIVE LOGGING**: Detailed logging cho debugging và monitoring
|
|
106
|
+
|
|
107
|
+
### 📊 NEW INTERFACES & TYPES
|
|
108
|
+
|
|
109
|
+
#### Multiple Promotion Types
|
|
110
|
+
- **ADDED**: `PromotionUserResult` - Kết quả cho từng user riêng biệt
|
|
111
|
+
- **ADDED**: `MultiplePromotionProgress` - Interface cho progress tracking
|
|
112
|
+
- **ADDED**: `MultiplePromotionResult` - Kết quả tổng thể campaign
|
|
113
|
+
- **ENHANCED**: Progress callback với detailed metrics và ETA
|
|
114
|
+
|
|
115
|
+
### 📚 COMPREHENSIVE DOCUMENTATION & EXAMPLES
|
|
116
|
+
|
|
117
|
+
#### New Documentation
|
|
118
|
+
- **ADDED**: `docs/MULTIPLE_USERS_PROMOTION.md` - Hướng dẫn chi tiết multiple users
|
|
119
|
+
- **UPDATED**: `docs/PROMOTION_API_V3_MIGRATION.md` - Thêm multiple users examples
|
|
120
|
+
- **BEST PRACTICES**: Guidelines cho sequential vs parallel modes
|
|
121
|
+
|
|
122
|
+
#### Enhanced Examples
|
|
123
|
+
- **ADDED**: `sendPromotionToMultipleUsers()` - Sequential mode với full tracking
|
|
124
|
+
- **ADDED**: `sendPromotionParallel()` - Parallel mode example
|
|
125
|
+
- **EXAMPLES**: Real-time progress monitoring và error handling
|
|
126
|
+
- **EXAMPLES**: Performance metrics và success rate tracking
|
|
127
|
+
|
|
128
|
+
### 🎯 USE CASES
|
|
129
|
+
- **Marketing Campaigns**: Gửi promotion đến danh sách khách hàng VIP
|
|
130
|
+
- **Flash Sales**: Thông báo urgent đến nhiều users cùng lúc
|
|
131
|
+
- **Event Notifications**: Gửi thông báo sự kiện đến attendees
|
|
132
|
+
- **Customer Segmentation**: Targeted promotions cho từng nhóm khách hàng
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
8
136
|
## [1.22.0] - 2025-08-29
|
|
9
137
|
|
|
10
138
|
### 🚀 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, PromotionButtonInput } 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
|
*
|
|
@@ -44,6 +44,12 @@ export declare class PromotionService {
|
|
|
44
44
|
private readonly client;
|
|
45
45
|
private readonly promotionApiUrl;
|
|
46
46
|
constructor(client: ZaloClient);
|
|
47
|
+
/**
|
|
48
|
+
* Convert input button to proper typed button for API
|
|
49
|
+
* @param button Input button with flexible typing
|
|
50
|
+
* @returns Properly typed button for API
|
|
51
|
+
*/
|
|
52
|
+
private convertToTypedButton;
|
|
47
53
|
/**
|
|
48
54
|
* Gửi tin nhắn truyền thông/quảng cáo
|
|
49
55
|
* @param accessToken Access token của Official Account
|
|
@@ -120,12 +126,7 @@ export declare class PromotionService {
|
|
|
120
126
|
value: string;
|
|
121
127
|
}>;
|
|
122
128
|
footerText?: string;
|
|
123
|
-
buttons:
|
|
124
|
-
title: string;
|
|
125
|
-
imageIcon?: string;
|
|
126
|
-
type: string;
|
|
127
|
-
payload: Record<string, any> | string;
|
|
128
|
-
}>;
|
|
129
|
+
buttons: PromotionButtonInput[];
|
|
129
130
|
language?: "VI" | "EN";
|
|
130
131
|
}): Promise<SendMessageResponse>;
|
|
131
132
|
/**
|
|
@@ -133,6 +134,32 @@ export declare class PromotionService {
|
|
|
133
134
|
* @param message Promotion message to validate
|
|
134
135
|
*/
|
|
135
136
|
private validatePromotionMessage;
|
|
137
|
+
/**
|
|
138
|
+
* Gửi promotion message đến nhiều user_ids với callback tracking
|
|
139
|
+
* @param accessToken Access token của Official Account
|
|
140
|
+
* @param userIds Danh sách user IDs cần gửi
|
|
141
|
+
* @param promotionData Dữ liệu promotion
|
|
142
|
+
* @param options Tùy chọn gửi và tracking
|
|
143
|
+
* @returns Kết quả gửi đến tất cả users
|
|
144
|
+
*/
|
|
145
|
+
sendCustomPromotionToMultipleUsers(accessToken: string, userIds: string[], promotionData: {
|
|
146
|
+
attachmentId: string;
|
|
147
|
+
headerContent: string;
|
|
148
|
+
textContent: string;
|
|
149
|
+
tableData: Array<{
|
|
150
|
+
key: string;
|
|
151
|
+
value: string;
|
|
152
|
+
}>;
|
|
153
|
+
footerText?: string;
|
|
154
|
+
buttons: PromotionButtonInput[];
|
|
155
|
+
language?: "VI" | "EN";
|
|
156
|
+
}, options?: {
|
|
157
|
+
mode?: "sequential" | "parallel";
|
|
158
|
+
delayMs?: number;
|
|
159
|
+
onProgress?: (progress: MultiplePromotionProgress) => void;
|
|
160
|
+
onUserComplete?: (result: PromotionUserResult) => void;
|
|
161
|
+
continueOnError?: boolean;
|
|
162
|
+
}): Promise<MultiplePromotionResult>;
|
|
136
163
|
/**
|
|
137
164
|
* Validate sending time (8:00 - 22:00)
|
|
138
165
|
*/
|
|
@@ -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,
|
|
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,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAErB,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;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAqD5B;;;;;;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,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,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;IAyF/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,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,mBAAmB,CAAC;IAiF/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,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,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;IA6E/B;;;;;;OAMG;IACU,mBAAmB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,oBAAoB,EAAE,CAAC;QAChC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;KACxB,GACA,OAAO,CAAC,mBAAmB,CAAC;IA6D/B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA2BhC;;;;;;;OAOG;IACU,kCAAkC,CAC7C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,oBAAoB,EAAE,CAAC;QAChC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;KACxB,EACD,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,yBAAyB,KAAK,IAAI,CAAC;QAC3D,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;QACvD,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GACA,OAAO,CAAC,uBAAuB,CAAC;IA0MnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAW5B"}
|
|
@@ -47,6 +47,58 @@ class PromotionService {
|
|
|
47
47
|
this.client = client;
|
|
48
48
|
this.promotionApiUrl = "https://openapi.zalo.me/v3.0/oa/message/promotion";
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Convert input button to proper typed button for API
|
|
52
|
+
* @param button Input button with flexible typing
|
|
53
|
+
* @returns Properly typed button for API
|
|
54
|
+
*/
|
|
55
|
+
convertToTypedButton(button) {
|
|
56
|
+
const baseButton = {
|
|
57
|
+
title: button.title,
|
|
58
|
+
image_icon: button.imageIcon || "",
|
|
59
|
+
type: button.type,
|
|
60
|
+
};
|
|
61
|
+
// Convert payload based on button type
|
|
62
|
+
switch (button.type) {
|
|
63
|
+
case "oa.open.url":
|
|
64
|
+
return {
|
|
65
|
+
...baseButton,
|
|
66
|
+
payload: typeof button.payload === 'object' && button.payload.url
|
|
67
|
+
? { url: button.payload.url }
|
|
68
|
+
: { url: button.payload }
|
|
69
|
+
};
|
|
70
|
+
case "oa.query.show":
|
|
71
|
+
case "oa.query.hide":
|
|
72
|
+
return {
|
|
73
|
+
...baseButton,
|
|
74
|
+
payload: typeof button.payload === 'string'
|
|
75
|
+
? button.payload
|
|
76
|
+
: button.payload.content || button.payload
|
|
77
|
+
};
|
|
78
|
+
case "oa.open.sms":
|
|
79
|
+
return {
|
|
80
|
+
...baseButton,
|
|
81
|
+
payload: typeof button.payload === 'object'
|
|
82
|
+
? {
|
|
83
|
+
content: button.payload.content,
|
|
84
|
+
phone_code: button.payload.phone_code || button.payload.phoneCode
|
|
85
|
+
}
|
|
86
|
+
: button.payload
|
|
87
|
+
};
|
|
88
|
+
case "oa.open.phone":
|
|
89
|
+
return {
|
|
90
|
+
...baseButton,
|
|
91
|
+
payload: typeof button.payload === 'object'
|
|
92
|
+
? { phone_code: button.payload.phone_code || button.payload.phoneCode }
|
|
93
|
+
: { phone_code: button.payload }
|
|
94
|
+
};
|
|
95
|
+
default:
|
|
96
|
+
return {
|
|
97
|
+
...baseButton,
|
|
98
|
+
payload: button.payload
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
50
102
|
/**
|
|
51
103
|
* Gửi tin nhắn truyền thông/quảng cáo
|
|
52
104
|
* @param accessToken Access token của Official Account
|
|
@@ -380,12 +432,7 @@ class PromotionService {
|
|
|
380
432
|
template_type: "promotion",
|
|
381
433
|
language: promotionData.language || "VI",
|
|
382
434
|
elements,
|
|
383
|
-
buttons: promotionData.buttons.map(btn => (
|
|
384
|
-
title: btn.title,
|
|
385
|
-
image_icon: btn.imageIcon || "",
|
|
386
|
-
type: btn.type,
|
|
387
|
-
payload: btn.payload,
|
|
388
|
-
})),
|
|
435
|
+
buttons: promotionData.buttons.map(btn => this.convertToTypedButton(btn)),
|
|
389
436
|
},
|
|
390
437
|
},
|
|
391
438
|
};
|
|
@@ -413,6 +460,172 @@ class PromotionService {
|
|
|
413
460
|
throw new common_1.ZaloSDKError("Promotion message must have at least one element", -1);
|
|
414
461
|
}
|
|
415
462
|
}
|
|
463
|
+
/**
|
|
464
|
+
* Gửi promotion message đến nhiều user_ids với callback tracking
|
|
465
|
+
* @param accessToken Access token của Official Account
|
|
466
|
+
* @param userIds Danh sách user IDs cần gửi
|
|
467
|
+
* @param promotionData Dữ liệu promotion
|
|
468
|
+
* @param options Tùy chọn gửi và tracking
|
|
469
|
+
* @returns Kết quả gửi đến tất cả users
|
|
470
|
+
*/
|
|
471
|
+
async sendCustomPromotionToMultipleUsers(accessToken, userIds, promotionData, options) {
|
|
472
|
+
try {
|
|
473
|
+
// Validate inputs
|
|
474
|
+
if (!userIds || userIds.length === 0) {
|
|
475
|
+
throw new common_1.ZaloSDKError("User IDs array cannot be empty", -1);
|
|
476
|
+
}
|
|
477
|
+
// Remove duplicates
|
|
478
|
+
const uniqueUserIds = [...new Set(userIds)];
|
|
479
|
+
// Validate sending time
|
|
480
|
+
this.validateSendingTime();
|
|
481
|
+
const startTime = Date.now();
|
|
482
|
+
const results = [];
|
|
483
|
+
const mode = options?.mode || "sequential";
|
|
484
|
+
const delayMs = options?.delayMs || 1000;
|
|
485
|
+
const continueOnError = options?.continueOnError !== false;
|
|
486
|
+
// Initial progress callback
|
|
487
|
+
if (options?.onProgress) {
|
|
488
|
+
options.onProgress({
|
|
489
|
+
total: uniqueUserIds.length,
|
|
490
|
+
completed: 0,
|
|
491
|
+
successful: 0,
|
|
492
|
+
failed: 0,
|
|
493
|
+
currentUserId: null,
|
|
494
|
+
startTime,
|
|
495
|
+
estimatedTimeRemaining: null,
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
if (mode === "parallel") {
|
|
499
|
+
// Gửi song song
|
|
500
|
+
const promises = uniqueUserIds.map(async (userId) => {
|
|
501
|
+
try {
|
|
502
|
+
const result = await this.sendCustomPromotion(accessToken, { user_id: userId }, promotionData);
|
|
503
|
+
const userResult = {
|
|
504
|
+
userId,
|
|
505
|
+
success: true,
|
|
506
|
+
result,
|
|
507
|
+
error: null,
|
|
508
|
+
timestamp: new Date(),
|
|
509
|
+
};
|
|
510
|
+
// Callback cho từng user
|
|
511
|
+
if (options?.onUserComplete) {
|
|
512
|
+
options.onUserComplete(userResult);
|
|
513
|
+
}
|
|
514
|
+
return userResult;
|
|
515
|
+
}
|
|
516
|
+
catch (error) {
|
|
517
|
+
const userResult = {
|
|
518
|
+
userId,
|
|
519
|
+
success: false,
|
|
520
|
+
result: null,
|
|
521
|
+
error: error instanceof common_1.ZaloSDKError ? error : new common_1.ZaloSDKError(`Failed to send to user ${userId}: ${error.message}`, -1, error),
|
|
522
|
+
timestamp: new Date(),
|
|
523
|
+
};
|
|
524
|
+
// Callback cho từng user
|
|
525
|
+
if (options?.onUserComplete) {
|
|
526
|
+
options.onUserComplete(userResult);
|
|
527
|
+
}
|
|
528
|
+
if (!continueOnError) {
|
|
529
|
+
throw userResult.error;
|
|
530
|
+
}
|
|
531
|
+
return userResult;
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
const parallelResults = await Promise.all(promises);
|
|
535
|
+
results.push(...parallelResults);
|
|
536
|
+
}
|
|
537
|
+
else {
|
|
538
|
+
// Gửi tuần tự
|
|
539
|
+
for (let i = 0; i < uniqueUserIds.length; i++) {
|
|
540
|
+
const userId = uniqueUserIds[i];
|
|
541
|
+
try {
|
|
542
|
+
// Progress callback
|
|
543
|
+
if (options?.onProgress) {
|
|
544
|
+
const completed = i;
|
|
545
|
+
const successful = results.filter(r => r.success).length;
|
|
546
|
+
const failed = results.filter(r => !r.success).length;
|
|
547
|
+
const elapsed = Date.now() - startTime;
|
|
548
|
+
const avgTimePerUser = elapsed / Math.max(completed, 1);
|
|
549
|
+
const remaining = uniqueUserIds.length - completed;
|
|
550
|
+
const estimatedTimeRemaining = remaining * avgTimePerUser;
|
|
551
|
+
options.onProgress({
|
|
552
|
+
total: uniqueUserIds.length,
|
|
553
|
+
completed,
|
|
554
|
+
successful,
|
|
555
|
+
failed,
|
|
556
|
+
currentUserId: userId,
|
|
557
|
+
startTime,
|
|
558
|
+
estimatedTimeRemaining,
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
const result = await this.sendCustomPromotion(accessToken, { user_id: userId }, promotionData);
|
|
562
|
+
const userResult = {
|
|
563
|
+
userId,
|
|
564
|
+
success: true,
|
|
565
|
+
result,
|
|
566
|
+
error: null,
|
|
567
|
+
timestamp: new Date(),
|
|
568
|
+
};
|
|
569
|
+
results.push(userResult);
|
|
570
|
+
// Callback cho từng user
|
|
571
|
+
if (options?.onUserComplete) {
|
|
572
|
+
options.onUserComplete(userResult);
|
|
573
|
+
}
|
|
574
|
+
// Delay giữa các tin nhắn (trừ tin cuối cùng)
|
|
575
|
+
if (i < uniqueUserIds.length - 1 && delayMs > 0) {
|
|
576
|
+
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
catch (error) {
|
|
580
|
+
const userResult = {
|
|
581
|
+
userId,
|
|
582
|
+
success: false,
|
|
583
|
+
result: null,
|
|
584
|
+
error: error instanceof common_1.ZaloSDKError ? error : new common_1.ZaloSDKError(`Failed to send to user ${userId}: ${error.message}`, -1, error),
|
|
585
|
+
timestamp: new Date(),
|
|
586
|
+
};
|
|
587
|
+
results.push(userResult);
|
|
588
|
+
// Callback cho từng user
|
|
589
|
+
if (options?.onUserComplete) {
|
|
590
|
+
options.onUserComplete(userResult);
|
|
591
|
+
}
|
|
592
|
+
if (!continueOnError) {
|
|
593
|
+
throw userResult.error;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
const endTime = Date.now();
|
|
599
|
+
const successful = results.filter(r => r.success);
|
|
600
|
+
const failed = results.filter(r => !r.success);
|
|
601
|
+
// Final progress callback
|
|
602
|
+
if (options?.onProgress) {
|
|
603
|
+
options.onProgress({
|
|
604
|
+
total: uniqueUserIds.length,
|
|
605
|
+
completed: uniqueUserIds.length,
|
|
606
|
+
successful: successful.length,
|
|
607
|
+
failed: failed.length,
|
|
608
|
+
currentUserId: null,
|
|
609
|
+
startTime,
|
|
610
|
+
estimatedTimeRemaining: 0,
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
return {
|
|
614
|
+
total: uniqueUserIds.length,
|
|
615
|
+
successful: successful.length,
|
|
616
|
+
failed: failed.length,
|
|
617
|
+
results,
|
|
618
|
+
executionTime: endTime - startTime,
|
|
619
|
+
mode,
|
|
620
|
+
startTime: new Date(startTime),
|
|
621
|
+
endTime: new Date(endTime),
|
|
622
|
+
successRate: (successful.length / uniqueUserIds.length) * 100,
|
|
623
|
+
};
|
|
624
|
+
}
|
|
625
|
+
catch (error) {
|
|
626
|
+
throw new common_1.ZaloSDKError(`Failed to send promotion to multiple users: ${error.message}`, -1, error);
|
|
627
|
+
}
|
|
628
|
+
}
|
|
416
629
|
/**
|
|
417
630
|
* Validate sending time (8:00 - 22:00)
|
|
418
631
|
*/
|
|
@@ -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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"}
|
package/dist/types/message.d.ts
CHANGED
|
@@ -290,13 +290,74 @@ export interface PromotionTableElement {
|
|
|
290
290
|
}
|
|
291
291
|
export type PromotionElement = PromotionBannerElement | PromotionHeaderElement | PromotionTextElement | PromotionTableElement;
|
|
292
292
|
/**
|
|
293
|
-
*
|
|
293
|
+
* Button payload types for different actions
|
|
294
294
|
*/
|
|
295
|
-
export interface
|
|
295
|
+
export interface OpenUrlPayload {
|
|
296
|
+
url: string;
|
|
297
|
+
}
|
|
298
|
+
export interface OpenSmsPayload {
|
|
299
|
+
content: string;
|
|
300
|
+
phone_code: string;
|
|
301
|
+
}
|
|
302
|
+
export interface OpenPhonePayload {
|
|
303
|
+
phone_code: string;
|
|
304
|
+
}
|
|
305
|
+
export type QueryPayload = string;
|
|
306
|
+
/**
|
|
307
|
+
* Specific button types with proper payload typing
|
|
308
|
+
*/
|
|
309
|
+
export interface OpenUrlButton {
|
|
296
310
|
title: string;
|
|
297
311
|
image_icon?: string;
|
|
298
|
-
type:
|
|
299
|
-
payload:
|
|
312
|
+
type: "oa.open.url";
|
|
313
|
+
payload: OpenUrlPayload;
|
|
314
|
+
}
|
|
315
|
+
export interface QueryShowButton {
|
|
316
|
+
title: string;
|
|
317
|
+
image_icon?: string;
|
|
318
|
+
type: "oa.query.show";
|
|
319
|
+
payload: QueryPayload;
|
|
320
|
+
}
|
|
321
|
+
export interface QueryHideButton {
|
|
322
|
+
title: string;
|
|
323
|
+
image_icon?: string;
|
|
324
|
+
type: "oa.query.hide";
|
|
325
|
+
payload: QueryPayload;
|
|
326
|
+
}
|
|
327
|
+
export interface OpenSmsButton {
|
|
328
|
+
title: string;
|
|
329
|
+
image_icon?: string;
|
|
330
|
+
type: "oa.open.sms";
|
|
331
|
+
payload: OpenSmsPayload;
|
|
332
|
+
}
|
|
333
|
+
export interface OpenPhoneButton {
|
|
334
|
+
title: string;
|
|
335
|
+
image_icon?: string;
|
|
336
|
+
type: "oa.open.phone";
|
|
337
|
+
payload: OpenPhonePayload;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Union type for all supported button types
|
|
341
|
+
*/
|
|
342
|
+
export type PromotionButton = OpenUrlButton | QueryShowButton | QueryHideButton | OpenSmsButton | OpenPhoneButton;
|
|
343
|
+
/**
|
|
344
|
+
* Input button interface for method parameters (flexible typing)
|
|
345
|
+
*/
|
|
346
|
+
export interface PromotionButtonInput {
|
|
347
|
+
title: string;
|
|
348
|
+
imageIcon?: string;
|
|
349
|
+
type: "oa.open.url" | "oa.query.show" | "oa.query.hide" | "oa.open.sms" | "oa.open.phone";
|
|
350
|
+
payload: any;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Generic button interface for flexible usage (backward compatibility)
|
|
354
|
+
*/
|
|
355
|
+
export interface GenericPromotionButton {
|
|
356
|
+
title: string;
|
|
357
|
+
imageIcon?: string;
|
|
358
|
+
image_icon?: string;
|
|
359
|
+
type: "oa.open.url" | "oa.query.show" | "oa.query.hide" | "oa.open.sms" | "oa.open.phone";
|
|
360
|
+
payload: OpenUrlPayload | QueryPayload | OpenSmsPayload | OpenPhonePayload;
|
|
300
361
|
}
|
|
301
362
|
/**
|
|
302
363
|
* Promotion message types for v3.0 API
|
|
@@ -313,6 +374,42 @@ export interface PromotionMessage extends BaseMessage {
|
|
|
313
374
|
};
|
|
314
375
|
};
|
|
315
376
|
}
|
|
377
|
+
/**
|
|
378
|
+
* Result for individual user in multiple promotion sending
|
|
379
|
+
*/
|
|
380
|
+
export interface PromotionUserResult {
|
|
381
|
+
userId: string;
|
|
382
|
+
success: boolean;
|
|
383
|
+
result: SendMessageResponse | null;
|
|
384
|
+
error: Error | null;
|
|
385
|
+
timestamp: Date;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Progress tracking for multiple promotion sending
|
|
389
|
+
*/
|
|
390
|
+
export interface MultiplePromotionProgress {
|
|
391
|
+
total: number;
|
|
392
|
+
completed: number;
|
|
393
|
+
successful: number;
|
|
394
|
+
failed: number;
|
|
395
|
+
currentUserId: string | null;
|
|
396
|
+
startTime: number;
|
|
397
|
+
estimatedTimeRemaining: number | null;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Final result for multiple promotion sending
|
|
401
|
+
*/
|
|
402
|
+
export interface MultiplePromotionResult {
|
|
403
|
+
total: number;
|
|
404
|
+
successful: number;
|
|
405
|
+
failed: number;
|
|
406
|
+
results: PromotionUserResult[];
|
|
407
|
+
executionTime: number;
|
|
408
|
+
mode: "sequential" | "parallel";
|
|
409
|
+
startTime: Date;
|
|
410
|
+
endTime: Date;
|
|
411
|
+
successRate: number;
|
|
412
|
+
}
|
|
316
413
|
/**
|
|
317
414
|
* Anonymous message types
|
|
318
415
|
*/
|