@warriorteam/redai-zalo-sdk 1.21.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 +109 -0
- package/dist/services/promotion.service.d.ts +62 -4
- package/dist/services/promotion.service.d.ts.map +1 -1
- package/dist/services/promotion.service.js +391 -44
- package/dist/services/promotion.service.js.map +1 -1
- package/dist/types/message.d.ts +78 -22
- package/dist/types/message.d.ts.map +1 -1
- package/docs/MULTIPLE_USERS_PROMOTION.md +210 -0
- package/docs/PROMOTION_API_V3_MIGRATION.md +320 -0
- package/examples/promotion-examples.ts +407 -0
- package/package.json +18 -3
|
@@ -45,7 +45,7 @@ const common_1 = require("../types/common");
|
|
|
45
45
|
class PromotionService {
|
|
46
46
|
constructor(client) {
|
|
47
47
|
this.client = client;
|
|
48
|
-
this.promotionApiUrl = "https://openapi.zalo.me/
|
|
48
|
+
this.promotionApiUrl = "https://openapi.zalo.me/v3.0/oa/message/promotion";
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Gửi tin nhắn truyền thông/quảng cáo
|
|
@@ -95,28 +95,71 @@ class PromotionService {
|
|
|
95
95
|
type: "template",
|
|
96
96
|
payload: {
|
|
97
97
|
template_type: "promotion",
|
|
98
|
+
language: "VI",
|
|
98
99
|
elements: [
|
|
100
|
+
// Banner element
|
|
99
101
|
{
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
102
|
+
type: "banner",
|
|
103
|
+
...(promotionInfo.attachmentId
|
|
104
|
+
? { attachment_id: promotionInfo.attachmentId }
|
|
105
|
+
: { image_url: promotionInfo.imageUrl }),
|
|
106
|
+
},
|
|
107
|
+
// Header element
|
|
108
|
+
{
|
|
109
|
+
type: "header",
|
|
110
|
+
content: `💥💥 ${promotionInfo.title} 💥💥`,
|
|
111
|
+
align: "center",
|
|
112
|
+
},
|
|
113
|
+
// Description text
|
|
114
|
+
{
|
|
115
|
+
type: "text",
|
|
116
|
+
content: promotionInfo.description,
|
|
117
|
+
align: "left",
|
|
118
|
+
},
|
|
119
|
+
// Price table
|
|
120
|
+
{
|
|
121
|
+
type: "table",
|
|
122
|
+
content: [
|
|
123
|
+
{
|
|
124
|
+
key: "Giá gốc",
|
|
125
|
+
value: `${promotionInfo.originalPrice.toLocaleString('vi-VN')}đ`,
|
|
126
|
+
},
|
|
108
127
|
{
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
url: promotionInfo.productUrl,
|
|
128
|
+
key: "Giá khuyến mãi",
|
|
129
|
+
value: `${promotionInfo.discountPrice.toLocaleString('vi-VN')}đ`,
|
|
112
130
|
},
|
|
113
131
|
{
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
132
|
+
key: "Giảm giá",
|
|
133
|
+
value: `${promotionInfo.discountPercent}%`,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
key: "Hạn sử dụng",
|
|
137
|
+
value: promotionInfo.validUntil,
|
|
117
138
|
},
|
|
118
139
|
],
|
|
119
140
|
},
|
|
141
|
+
// Footer text
|
|
142
|
+
{
|
|
143
|
+
type: "text",
|
|
144
|
+
content: "🛒 Nhanh tay đặt hàng để không bỏ lỡ ưu đãi!",
|
|
145
|
+
align: "center",
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
buttons: [
|
|
149
|
+
{
|
|
150
|
+
title: "Mua ngay",
|
|
151
|
+
image_icon: "",
|
|
152
|
+
type: "oa.open.url",
|
|
153
|
+
payload: {
|
|
154
|
+
url: promotionInfo.productUrl,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
title: "Xem thêm sản phẩm",
|
|
159
|
+
image_icon: "",
|
|
160
|
+
type: "oa.query.hide",
|
|
161
|
+
payload: "#xemthem",
|
|
162
|
+
},
|
|
120
163
|
],
|
|
121
164
|
},
|
|
122
165
|
},
|
|
@@ -142,28 +185,63 @@ class PromotionService {
|
|
|
142
185
|
type: "template",
|
|
143
186
|
payload: {
|
|
144
187
|
template_type: "promotion",
|
|
188
|
+
language: "VI",
|
|
145
189
|
elements: [
|
|
190
|
+
// Banner element
|
|
146
191
|
{
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
192
|
+
type: "banner",
|
|
193
|
+
...(eventInfo.attachmentId
|
|
194
|
+
? { attachment_id: eventInfo.attachmentId }
|
|
195
|
+
: { image_url: eventInfo.imageUrl }),
|
|
196
|
+
},
|
|
197
|
+
// Header element
|
|
198
|
+
{
|
|
199
|
+
type: "header",
|
|
200
|
+
content: `🎉 ${eventInfo.title} 🎉`,
|
|
201
|
+
align: "center",
|
|
202
|
+
},
|
|
203
|
+
// Description text
|
|
204
|
+
{
|
|
205
|
+
type: "text",
|
|
206
|
+
content: eventInfo.description,
|
|
207
|
+
align: "left",
|
|
208
|
+
},
|
|
209
|
+
// Event details table
|
|
210
|
+
{
|
|
211
|
+
type: "table",
|
|
212
|
+
content: [
|
|
155
213
|
{
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
url: eventInfo.registrationUrl,
|
|
214
|
+
key: "Thời gian",
|
|
215
|
+
value: eventInfo.eventDate,
|
|
159
216
|
},
|
|
160
217
|
{
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
payload: `SHARE_EVENT_${Date.now()}`,
|
|
218
|
+
key: "Địa điểm",
|
|
219
|
+
value: eventInfo.location,
|
|
164
220
|
},
|
|
165
221
|
],
|
|
166
222
|
},
|
|
223
|
+
// Call to action text
|
|
224
|
+
{
|
|
225
|
+
type: "text",
|
|
226
|
+
content: "🎫 Đăng ký ngay để không bỏ lỡ sự kiện!",
|
|
227
|
+
align: "center",
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
buttons: [
|
|
231
|
+
{
|
|
232
|
+
title: "Đăng ký tham gia",
|
|
233
|
+
image_icon: "",
|
|
234
|
+
type: "oa.open.url",
|
|
235
|
+
payload: {
|
|
236
|
+
url: eventInfo.registrationUrl,
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
title: "Chia sẻ sự kiện",
|
|
241
|
+
image_icon: "",
|
|
242
|
+
type: "oa.query.hide",
|
|
243
|
+
payload: "#chiase",
|
|
244
|
+
},
|
|
167
245
|
],
|
|
168
246
|
},
|
|
169
247
|
},
|
|
@@ -189,23 +267,58 @@ class PromotionService {
|
|
|
189
267
|
type: "template",
|
|
190
268
|
payload: {
|
|
191
269
|
template_type: "promotion",
|
|
270
|
+
language: "VI",
|
|
192
271
|
elements: [
|
|
272
|
+
// Banner element
|
|
193
273
|
{
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
274
|
+
type: "banner",
|
|
275
|
+
...(newsletterInfo.attachmentId
|
|
276
|
+
? { attachment_id: newsletterInfo.attachmentId }
|
|
277
|
+
: { image_url: newsletterInfo.imageUrl }),
|
|
278
|
+
},
|
|
279
|
+
// Header element
|
|
280
|
+
{
|
|
281
|
+
type: "header",
|
|
282
|
+
content: `📰 ${newsletterInfo.title}`,
|
|
283
|
+
align: "center",
|
|
284
|
+
},
|
|
285
|
+
// Summary text
|
|
286
|
+
{
|
|
287
|
+
type: "text",
|
|
288
|
+
content: newsletterInfo.summary,
|
|
289
|
+
align: "left",
|
|
290
|
+
},
|
|
291
|
+
// Articles table
|
|
292
|
+
{
|
|
293
|
+
type: "table",
|
|
294
|
+
content: newsletterInfo.articles.slice(0, 5).map((article, index) => ({
|
|
295
|
+
key: `Bài viết ${index + 1}`,
|
|
296
|
+
value: article.title,
|
|
297
|
+
})),
|
|
298
|
+
},
|
|
299
|
+
// Footer text
|
|
300
|
+
{
|
|
301
|
+
type: "text",
|
|
302
|
+
content: "📖 Đọc ngay để cập nhật thông tin mới nhất!",
|
|
303
|
+
align: "center",
|
|
304
|
+
},
|
|
305
|
+
],
|
|
306
|
+
buttons: [
|
|
307
|
+
{
|
|
308
|
+
title: "Đọc toàn bộ",
|
|
309
|
+
image_icon: "",
|
|
310
|
+
type: "oa.open.url",
|
|
311
|
+
payload: {
|
|
312
|
+
url: newsletterInfo.articles[0]?.url || "#",
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
title: "Hủy đăng ký",
|
|
317
|
+
image_icon: "",
|
|
318
|
+
type: "oa.open.url",
|
|
319
|
+
payload: {
|
|
320
|
+
url: newsletterInfo.unsubscribeUrl,
|
|
321
|
+
},
|
|
209
322
|
},
|
|
210
323
|
],
|
|
211
324
|
},
|
|
@@ -217,6 +330,71 @@ class PromotionService {
|
|
|
217
330
|
throw new common_1.ZaloSDKError(`Failed to send newsletter: ${error.message}`, -1, error);
|
|
218
331
|
}
|
|
219
332
|
}
|
|
333
|
+
/**
|
|
334
|
+
* Tạo promotion message theo format chuẩn v3.0 (như trong docs)
|
|
335
|
+
* @param accessToken Access token của Official Account
|
|
336
|
+
* @param recipient Thông tin người nhận
|
|
337
|
+
* @param promotionData Dữ liệu promotion
|
|
338
|
+
* @returns Thông tin tin nhắn đã gửi
|
|
339
|
+
*/
|
|
340
|
+
async sendCustomPromotion(accessToken, recipient, promotionData) {
|
|
341
|
+
try {
|
|
342
|
+
const elements = [
|
|
343
|
+
// Banner element
|
|
344
|
+
{
|
|
345
|
+
attachment_id: promotionData.attachmentId,
|
|
346
|
+
type: "banner",
|
|
347
|
+
},
|
|
348
|
+
// Header element
|
|
349
|
+
{
|
|
350
|
+
type: "header",
|
|
351
|
+
content: promotionData.headerContent,
|
|
352
|
+
},
|
|
353
|
+
// Text element
|
|
354
|
+
{
|
|
355
|
+
type: "text",
|
|
356
|
+
align: "left",
|
|
357
|
+
content: promotionData.textContent,
|
|
358
|
+
},
|
|
359
|
+
];
|
|
360
|
+
// Add table if provided
|
|
361
|
+
if (promotionData.tableData && promotionData.tableData.length > 0) {
|
|
362
|
+
elements.push({
|
|
363
|
+
type: "table",
|
|
364
|
+
content: promotionData.tableData,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
// Add footer text if provided
|
|
368
|
+
if (promotionData.footerText) {
|
|
369
|
+
elements.push({
|
|
370
|
+
type: "text",
|
|
371
|
+
align: "center",
|
|
372
|
+
content: promotionData.footerText,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
const message = {
|
|
376
|
+
type: "promotion",
|
|
377
|
+
attachment: {
|
|
378
|
+
type: "template",
|
|
379
|
+
payload: {
|
|
380
|
+
template_type: "promotion",
|
|
381
|
+
language: promotionData.language || "VI",
|
|
382
|
+
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
|
+
})),
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
return this.sendPromotionMessage(accessToken, recipient, message);
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
throw new common_1.ZaloSDKError(`Failed to send custom promotion: ${error.message}`, -1, error);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
220
398
|
/**
|
|
221
399
|
* Validate promotion message format
|
|
222
400
|
* @param message Promotion message to validate
|
|
@@ -231,6 +409,175 @@ class PromotionService {
|
|
|
231
409
|
if (message.attachment.payload.template_type !== "promotion") {
|
|
232
410
|
throw new common_1.ZaloSDKError("Promotion message must use promotion template type", -1);
|
|
233
411
|
}
|
|
412
|
+
if (!message.attachment.payload.elements || message.attachment.payload.elements.length === 0) {
|
|
413
|
+
throw new common_1.ZaloSDKError("Promotion message must have at least one element", -1);
|
|
414
|
+
}
|
|
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
|
+
}
|
|
234
581
|
}
|
|
235
582
|
/**
|
|
236
583
|
* Validate sending time (8:00 - 22:00)
|
|
@@ -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
|
@@ -264,35 +264,91 @@ export interface TransactionMessage extends BaseMessage {
|
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
266
|
/**
|
|
267
|
-
* Promotion message types
|
|
267
|
+
* Promotion message element types for v3.0 API
|
|
268
|
+
*/
|
|
269
|
+
export interface PromotionBannerElement {
|
|
270
|
+
type: "banner";
|
|
271
|
+
attachment_id?: string;
|
|
272
|
+
image_url?: string;
|
|
273
|
+
}
|
|
274
|
+
export interface PromotionHeaderElement {
|
|
275
|
+
type: "header";
|
|
276
|
+
content: string;
|
|
277
|
+
align?: "left" | "center" | "right";
|
|
278
|
+
}
|
|
279
|
+
export interface PromotionTextElement {
|
|
280
|
+
type: "text";
|
|
281
|
+
content: string;
|
|
282
|
+
align?: "left" | "center" | "right";
|
|
283
|
+
}
|
|
284
|
+
export interface PromotionTableElement {
|
|
285
|
+
type: "table";
|
|
286
|
+
content: Array<{
|
|
287
|
+
key: string;
|
|
288
|
+
value: string;
|
|
289
|
+
}>;
|
|
290
|
+
}
|
|
291
|
+
export type PromotionElement = PromotionBannerElement | PromotionHeaderElement | PromotionTextElement | PromotionTableElement;
|
|
292
|
+
/**
|
|
293
|
+
* Promotion message button for v3.0 API
|
|
294
|
+
*/
|
|
295
|
+
export interface PromotionButton {
|
|
296
|
+
title: string;
|
|
297
|
+
image_icon?: string;
|
|
298
|
+
type: string;
|
|
299
|
+
payload: Record<string, any> | string;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Promotion message types for v3.0 API
|
|
268
303
|
*/
|
|
269
304
|
export interface PromotionMessage extends BaseMessage {
|
|
270
305
|
type: "promotion";
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
mode?: "development" | "production";
|
|
274
|
-
attachment?: {
|
|
275
|
-
type: string;
|
|
306
|
+
attachment: {
|
|
307
|
+
type: "template";
|
|
276
308
|
payload: {
|
|
277
|
-
template_type:
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
image_url?: string;
|
|
282
|
-
default_action?: {
|
|
283
|
-
type: string;
|
|
284
|
-
url: string;
|
|
285
|
-
};
|
|
286
|
-
buttons?: Array<{
|
|
287
|
-
type: string;
|
|
288
|
-
title: string;
|
|
289
|
-
url?: string;
|
|
290
|
-
payload?: string;
|
|
291
|
-
}>;
|
|
292
|
-
}>;
|
|
309
|
+
template_type: "promotion";
|
|
310
|
+
language?: "VI" | "EN";
|
|
311
|
+
elements: PromotionElement[];
|
|
312
|
+
buttons?: PromotionButton[];
|
|
293
313
|
};
|
|
294
314
|
};
|
|
295
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
|
+
}
|
|
296
352
|
/**
|
|
297
353
|
* Anonymous message types
|
|
298
354
|
*/
|