@warriorteam/redai-zalo-sdk 1.18.0 → 1.20.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.
@@ -1,5 +1,185 @@
1
1
  import { ZaloClient } from "../clients/zalo-client";
2
2
  import { GroupTextMessage, GroupImageMessage, GroupFileMessage, GroupStickerMessage, GroupMentionMessage, GroupMessageResult, GroupInfo, GroupMember } from "../types/group";
3
+ /**
4
+ * Interface cho từng tin nhắn trong danh sách tin nhắn group
5
+ */
6
+ export interface GroupMessageItem {
7
+ /** Loại tin nhắn */
8
+ type: "text" | "image" | "file" | "sticker" | "mention";
9
+ /** Nội dung tin nhắn (cho text/mention message) */
10
+ text?: string;
11
+ /** URL hình ảnh (cho image message) */
12
+ imageUrl?: string;
13
+ /** Attachment ID (cho image message) */
14
+ attachmentId?: string;
15
+ /** Caption cho hình ảnh (tối đa 2000 ký tự) */
16
+ caption?: string;
17
+ /** Token file (cho file message) */
18
+ fileToken?: string;
19
+ /** Tên file (cho file message) */
20
+ fileName?: string;
21
+ /** Sticker ID (cho sticker message) */
22
+ stickerId?: string;
23
+ /** Danh sách mentions (cho mention message) */
24
+ mentions?: Array<{
25
+ user_id: string;
26
+ offset: number;
27
+ length: number;
28
+ }>;
29
+ /** Delay sau khi gửi tin nhắn này (milliseconds) */
30
+ delay?: number;
31
+ }
32
+ /**
33
+ * Interface cho request gửi danh sách tin nhắn tới 1 group
34
+ */
35
+ export interface SendMessageListToGroupRequest {
36
+ /** Access token của Official Account */
37
+ accessToken: string;
38
+ /** Group ID */
39
+ groupId: string;
40
+ /** Danh sách tin nhắn */
41
+ messages: GroupMessageItem[];
42
+ /** Delay mặc định giữa các tin nhắn (milliseconds) */
43
+ defaultDelay?: number;
44
+ /** Callback function để tracking tiến trình */
45
+ onProgress?: (progress: GroupMessageProgressInfo) => void;
46
+ }
47
+ /**
48
+ * Interface cho thông tin tiến trình từng tin nhắn
49
+ */
50
+ export interface GroupMessageProgressInfo {
51
+ /** Group ID */
52
+ groupId: string;
53
+ /** Index của tin nhắn trong danh sách (bắt đầu từ 0) */
54
+ messageIndex: number;
55
+ /** Tổng số tin nhắn */
56
+ totalMessages: number;
57
+ /** Loại tin nhắn */
58
+ messageType: string;
59
+ /** Trạng thái: 'started' | 'completed' | 'failed' */
60
+ status: 'started' | 'completed' | 'failed';
61
+ /** Kết quả gửi tin nhắn (nếu đã hoàn thành) */
62
+ result?: GroupMessageResult;
63
+ /** Thông tin lỗi (nếu thất bại) */
64
+ error?: string;
65
+ /** Thời gian bắt đầu */
66
+ startTime: number;
67
+ /** Thời gian kết thúc (nếu đã hoàn thành) */
68
+ endTime?: number;
69
+ }
70
+ /**
71
+ * Interface cho response gửi danh sách tin nhắn tới 1 group
72
+ */
73
+ export interface SendMessageListToGroupResponse {
74
+ /** Group ID */
75
+ groupId: string;
76
+ /** Tổng số tin nhắn */
77
+ totalMessages: number;
78
+ /** Số tin nhắn gửi thành công */
79
+ successfulMessages: number;
80
+ /** Số tin nhắn gửi thất bại */
81
+ failedMessages: number;
82
+ /** Chi tiết kết quả từng tin nhắn */
83
+ messageResults: Array<{
84
+ /** Index của tin nhắn trong danh sách */
85
+ messageIndex: number;
86
+ /** Loại tin nhắn */
87
+ messageType: string;
88
+ /** Trạng thái gửi */
89
+ success: boolean;
90
+ /** Kết quả chi tiết */
91
+ result?: GroupMessageResult;
92
+ /** Thông tin lỗi nếu thất bại */
93
+ error?: string;
94
+ /** Thời gian bắt đầu gửi */
95
+ startTime: number;
96
+ /** Thời gian kết thúc */
97
+ endTime: number;
98
+ /** Thời gian thực hiện (milliseconds) */
99
+ duration: number;
100
+ }>;
101
+ /** Tổng thời gian thực hiện (milliseconds) */
102
+ totalDuration: number;
103
+ }
104
+ /**
105
+ * Interface cho request gửi danh sách tin nhắn tới nhiều groups
106
+ */
107
+ export interface SendMessageListToMultipleGroupsRequest {
108
+ /** Access token của Official Account */
109
+ accessToken: string;
110
+ /** Danh sách group IDs */
111
+ groupIds: string[];
112
+ /** Danh sách tin nhắn */
113
+ messages: GroupMessageItem[];
114
+ /** Delay mặc định giữa các tin nhắn (milliseconds) */
115
+ defaultDelay?: number;
116
+ /** Delay giữa các groups (milliseconds) để tránh rate limit */
117
+ delayBetweenGroups?: number;
118
+ /** Callback function để tracking tiến trình */
119
+ onProgress?: (progress: MultipleGroupsProgressInfo) => void;
120
+ }
121
+ /**
122
+ * Interface cho thông tin tiến trình từng group
123
+ */
124
+ export interface MultipleGroupsProgressInfo {
125
+ /** Group ID hiện tại */
126
+ groupId: string;
127
+ /** Index của group trong danh sách (bắt đầu từ 0) */
128
+ groupIndex: number;
129
+ /** Tổng số groups */
130
+ totalGroups: number;
131
+ /** Trạng thái: 'started' | 'completed' | 'failed' */
132
+ status: 'started' | 'completed' | 'failed';
133
+ /** Kết quả gửi tin nhắn cho group này (nếu đã hoàn thành) */
134
+ result?: SendMessageListToGroupResponse;
135
+ /** Thông tin lỗi (nếu thất bại) */
136
+ error?: string;
137
+ /** Thời gian bắt đầu */
138
+ startTime: number;
139
+ /** Thời gian kết thúc (nếu đã hoàn thành) */
140
+ endTime?: number;
141
+ }
142
+ /**
143
+ * Interface cho response gửi danh sách tin nhắn tới nhiều groups
144
+ */
145
+ export interface SendMessageListToMultipleGroupsResponse {
146
+ /** Tổng số groups */
147
+ totalGroups: number;
148
+ /** Số groups gửi thành công */
149
+ successfulGroups: number;
150
+ /** Số groups gửi thất bại */
151
+ failedGroups: number;
152
+ /** Chi tiết kết quả từng group */
153
+ groupResults: Array<{
154
+ /** Group ID */
155
+ groupId: string;
156
+ /** Index của group trong danh sách */
157
+ groupIndex: number;
158
+ /** Trạng thái gửi cho group này */
159
+ success: boolean;
160
+ /** Kết quả chi tiết gửi tin nhắn */
161
+ messageListResult?: SendMessageListToGroupResponse;
162
+ /** Thông tin lỗi nếu thất bại */
163
+ error?: string;
164
+ /** Thời gian bắt đầu gửi */
165
+ startTime: number;
166
+ /** Thời gian kết thúc */
167
+ endTime: number;
168
+ /** Thời gian thực hiện (milliseconds) */
169
+ duration: number;
170
+ }>;
171
+ /** Tổng thời gian thực hiện (milliseconds) */
172
+ totalDuration: number;
173
+ /** Thống kê tin nhắn tổng cộng */
174
+ messageStats: {
175
+ /** Tổng số tin nhắn đã gửi thành công */
176
+ totalSuccessfulMessages: number;
177
+ /** Tổng số tin nhắn thất bại */
178
+ totalFailedMessages: number;
179
+ /** Tổng số tin nhắn */
180
+ totalMessages: number;
181
+ };
182
+ }
3
183
  /**
4
184
  * Service for handling Zalo Official Account Group Message Framework (GMF) APIs
5
185
  *
@@ -97,6 +277,26 @@ export declare class GroupMessageService {
97
277
  members: GroupMember[];
98
278
  total: number;
99
279
  }>;
280
+ /**
281
+ * Gửi danh sách tin nhắn tới 1 group với delay tùy chỉnh
282
+ * Hỗ trợ tất cả các loại tin nhắn: text, image, file, sticker, mention
283
+ *
284
+ * @param request Thông tin request gửi danh sách tin nhắn
285
+ * @returns Kết quả gửi từng tin nhắn
286
+ */
287
+ sendMessageListToGroup(request: SendMessageListToGroupRequest): Promise<SendMessageListToGroupResponse>;
100
288
  private handleGroupMessageError;
289
+ /**
290
+ * Gửi danh sách tin nhắn tới nhiều groups với callback tracking
291
+ *
292
+ * @param request Thông tin request gửi danh sách tin nhắn tới nhiều groups
293
+ * @returns Kết quả gửi tin nhắn cho tất cả groups
294
+ */
295
+ sendMessageListToMultipleGroups(request: SendMessageListToMultipleGroupsRequest): Promise<SendMessageListToMultipleGroupsResponse>;
296
+ /**
297
+ * Utility method để sleep/delay
298
+ * @param ms Thời gian delay tính bằng milliseconds
299
+ */
300
+ private sleep;
101
301
  }
102
302
  //# sourceMappingURL=group-message.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-message.service.d.ts","sourceRoot":"","sources":["../../src/services/group-message.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,mBAAmB;IAclB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAUxB;gBAE2B,MAAM,EAAE,UAAU;IAE/C;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAwB9B;;;;;;OAMG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC;IAqD9B;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,kBAAkB,CAAC;IA6B9B;;;;;;OAMG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAmC9B;;;;;;OAMG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAyB9B;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmB5E;;;;;;;OAOG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBrD,OAAO,CAAC,uBAAuB;CAWhC"}
1
+ {"version":3,"file":"group-message.service.d.ts","sourceRoot":"","sources":["../../src/services/group-message.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GroupMessageService = void 0;
4
+ const common_1 = require("../types/common");
4
5
  /**
5
6
  * Service for handling Zalo Official Account Group Message Framework (GMF) APIs
6
7
  *
@@ -247,6 +248,183 @@ class GroupMessageService {
247
248
  throw this.handleGroupMessageError(error, "Failed to get group members");
248
249
  }
249
250
  }
251
+ /**
252
+ * Gửi danh sách tin nhắn tới 1 group với delay tùy chỉnh
253
+ * Hỗ trợ tất cả các loại tin nhắn: text, image, file, sticker, mention
254
+ *
255
+ * @param request Thông tin request gửi danh sách tin nhắn
256
+ * @returns Kết quả gửi từng tin nhắn
257
+ */
258
+ async sendMessageListToGroup(request) {
259
+ const startTime = Date.now();
260
+ const messageResults = [];
261
+ let successfulMessages = 0;
262
+ let failedMessages = 0;
263
+ try {
264
+ // Validate input
265
+ if (!request.accessToken || request.accessToken.trim().length === 0) {
266
+ throw new common_1.ZaloSDKError("Access token không được để trống", -1);
267
+ }
268
+ if (!request.groupId || request.groupId.trim().length === 0) {
269
+ throw new common_1.ZaloSDKError("Group ID không được để trống", -1);
270
+ }
271
+ if (!request.messages || request.messages.length === 0) {
272
+ throw new common_1.ZaloSDKError("Danh sách tin nhắn không được để trống", -1);
273
+ }
274
+ // Gửi từng tin nhắn theo thứ tự
275
+ for (let i = 0; i < request.messages.length; i++) {
276
+ const message = request.messages[i];
277
+ const messageStartTime = Date.now();
278
+ // Callback: Bắt đầu gửi tin nhắn
279
+ if (request.onProgress) {
280
+ request.onProgress({
281
+ groupId: request.groupId,
282
+ messageIndex: i,
283
+ totalMessages: request.messages.length,
284
+ messageType: message.type,
285
+ status: 'started',
286
+ startTime: messageStartTime,
287
+ });
288
+ }
289
+ const messageResult = {
290
+ messageIndex: i,
291
+ messageType: message.type,
292
+ success: false,
293
+ startTime: messageStartTime,
294
+ endTime: 0,
295
+ duration: 0,
296
+ };
297
+ try {
298
+ let result;
299
+ // Gửi tin nhắn theo loại
300
+ switch (message.type) {
301
+ case "text":
302
+ if (!message.text) {
303
+ throw new Error("Text không được để trống cho text message");
304
+ }
305
+ result = await this.sendTextMessage(request.accessToken, request.groupId, { type: "text", text: message.text });
306
+ break;
307
+ case "image":
308
+ if (!message.imageUrl && !message.attachmentId) {
309
+ throw new Error("imageUrl hoặc attachmentId là bắt buộc cho image message");
310
+ }
311
+ result = await this.sendImageMessage(request.accessToken, request.groupId, {
312
+ type: "image",
313
+ imageUrl: message.imageUrl,
314
+ attachmentId: message.attachmentId,
315
+ caption: message.caption,
316
+ });
317
+ break;
318
+ case "file":
319
+ if (!message.fileToken) {
320
+ throw new Error("fileToken là bắt buộc cho file message");
321
+ }
322
+ result = await this.sendFileMessage(request.accessToken, request.groupId, {
323
+ type: "file",
324
+ fileToken: message.fileToken,
325
+ fileName: message.fileName,
326
+ });
327
+ break;
328
+ case "sticker":
329
+ if (!message.stickerId) {
330
+ throw new Error("stickerId là bắt buộc cho sticker message");
331
+ }
332
+ result = await this.sendStickerMessage(request.accessToken, request.groupId, {
333
+ type: "sticker",
334
+ stickerId: message.stickerId,
335
+ });
336
+ break;
337
+ case "mention":
338
+ if (!message.text || !message.mentions) {
339
+ throw new Error("text và mentions là bắt buộc cho mention message");
340
+ }
341
+ result = await this.sendMentionMessage(request.accessToken, request.groupId, {
342
+ type: "mention",
343
+ text: message.text,
344
+ mentions: message.mentions,
345
+ });
346
+ break;
347
+ default:
348
+ throw new Error(`Loại tin nhắn không được hỗ trợ: ${message.type}`);
349
+ }
350
+ // Ghi nhận thành công
351
+ const messageEndTime = Date.now();
352
+ messageResult.success = true;
353
+ messageResult.result = result;
354
+ messageResult.endTime = messageEndTime;
355
+ messageResult.duration = messageEndTime - messageStartTime;
356
+ successfulMessages++;
357
+ // Callback: Hoàn thành thành công
358
+ if (request.onProgress) {
359
+ request.onProgress({
360
+ groupId: request.groupId,
361
+ messageIndex: i,
362
+ totalMessages: request.messages.length,
363
+ messageType: message.type,
364
+ status: 'completed',
365
+ result: result,
366
+ startTime: messageStartTime,
367
+ endTime: messageEndTime,
368
+ });
369
+ }
370
+ }
371
+ catch (error) {
372
+ // Ghi nhận thất bại
373
+ const messageEndTime = Date.now();
374
+ const errorMessage = error instanceof Error ? error.message : String(error);
375
+ messageResult.success = false;
376
+ messageResult.error = errorMessage;
377
+ messageResult.endTime = messageEndTime;
378
+ messageResult.duration = messageEndTime - messageStartTime;
379
+ failedMessages++;
380
+ // Callback: Thất bại
381
+ if (request.onProgress) {
382
+ request.onProgress({
383
+ groupId: request.groupId,
384
+ messageIndex: i,
385
+ totalMessages: request.messages.length,
386
+ messageType: message.type,
387
+ status: 'failed',
388
+ error: errorMessage,
389
+ startTime: messageStartTime,
390
+ endTime: messageEndTime,
391
+ });
392
+ }
393
+ }
394
+ messageResults.push(messageResult);
395
+ // Delay trước khi gửi tin nhắn tiếp theo (trừ tin nhắn cuối cùng)
396
+ if (i < request.messages.length - 1) {
397
+ const delayTime = message.delay ?? request.defaultDelay ?? 0;
398
+ if (delayTime > 0) {
399
+ await this.sleep(delayTime);
400
+ }
401
+ }
402
+ }
403
+ const totalDuration = Date.now() - startTime;
404
+ return {
405
+ groupId: request.groupId,
406
+ totalMessages: request.messages.length,
407
+ successfulMessages,
408
+ failedMessages,
409
+ messageResults,
410
+ totalDuration,
411
+ };
412
+ }
413
+ catch (error) {
414
+ const totalDuration = Date.now() - startTime;
415
+ if (error instanceof common_1.ZaloSDKError) {
416
+ throw error;
417
+ }
418
+ throw new common_1.ZaloSDKError(`Failed to send message list to group: ${error.message}`, -1, {
419
+ groupId: request.groupId,
420
+ totalMessages: request.messages?.length || 0,
421
+ successfulMessages,
422
+ failedMessages,
423
+ messageResults,
424
+ totalDuration,
425
+ });
426
+ }
427
+ }
250
428
  handleGroupMessageError(error, defaultMessage) {
251
429
  if (error.response?.data) {
252
430
  const errorData = error.response.data;
@@ -254,6 +432,159 @@ class GroupMessageService {
254
432
  }
255
433
  return new Error(`${defaultMessage}: ${error.message || "Unknown error"}`);
256
434
  }
435
+ /**
436
+ * Gửi danh sách tin nhắn tới nhiều groups với callback tracking
437
+ *
438
+ * @param request Thông tin request gửi danh sách tin nhắn tới nhiều groups
439
+ * @returns Kết quả gửi tin nhắn cho tất cả groups
440
+ */
441
+ async sendMessageListToMultipleGroups(request) {
442
+ const startTime = Date.now();
443
+ const groupResults = [];
444
+ let successfulGroups = 0;
445
+ let failedGroups = 0;
446
+ let totalSuccessfulMessages = 0;
447
+ let totalFailedMessages = 0;
448
+ try {
449
+ // Validate input
450
+ if (!request.accessToken || request.accessToken.trim().length === 0) {
451
+ throw new common_1.ZaloSDKError("Access token không được để trống", -1);
452
+ }
453
+ if (!request.groupIds || request.groupIds.length === 0) {
454
+ throw new common_1.ZaloSDKError("Danh sách group IDs không được để trống", -1);
455
+ }
456
+ if (!request.messages || request.messages.length === 0) {
457
+ throw new common_1.ZaloSDKError("Danh sách tin nhắn không được để trống", -1);
458
+ }
459
+ // Loại bỏ group IDs trùng lặp và rỗng
460
+ const uniqueGroupIds = [...new Set(request.groupIds.filter(id => id && id.trim().length > 0))];
461
+ if (uniqueGroupIds.length === 0) {
462
+ throw new common_1.ZaloSDKError("Không có group ID hợp lệ nào", -1);
463
+ }
464
+ // Gửi tin nhắn cho từng group tuần tự
465
+ for (let i = 0; i < uniqueGroupIds.length; i++) {
466
+ const groupId = uniqueGroupIds[i];
467
+ const groupStartTime = Date.now();
468
+ // Callback: Bắt đầu gửi cho group
469
+ if (request.onProgress) {
470
+ request.onProgress({
471
+ groupId,
472
+ groupIndex: i,
473
+ totalGroups: uniqueGroupIds.length,
474
+ status: 'started',
475
+ startTime: groupStartTime,
476
+ });
477
+ }
478
+ const groupResult = {
479
+ groupId,
480
+ groupIndex: i,
481
+ success: false,
482
+ startTime: groupStartTime,
483
+ endTime: 0,
484
+ duration: 0,
485
+ };
486
+ try {
487
+ // Gửi danh sách tin nhắn cho group này
488
+ const messageListResult = await this.sendMessageListToGroup({
489
+ accessToken: request.accessToken,
490
+ groupId,
491
+ messages: request.messages,
492
+ defaultDelay: request.defaultDelay,
493
+ // Không truyền onProgress để tránh callback lồng nhau
494
+ });
495
+ // Ghi nhận thành công
496
+ const groupEndTime = Date.now();
497
+ groupResult.success = true;
498
+ groupResult.messageListResult = messageListResult;
499
+ groupResult.endTime = groupEndTime;
500
+ groupResult.duration = groupEndTime - groupStartTime;
501
+ successfulGroups++;
502
+ totalSuccessfulMessages += messageListResult.successfulMessages;
503
+ totalFailedMessages += messageListResult.failedMessages;
504
+ // Callback: Hoàn thành thành công
505
+ if (request.onProgress) {
506
+ request.onProgress({
507
+ groupId,
508
+ groupIndex: i,
509
+ totalGroups: uniqueGroupIds.length,
510
+ status: 'completed',
511
+ result: messageListResult,
512
+ startTime: groupStartTime,
513
+ endTime: groupEndTime,
514
+ });
515
+ }
516
+ }
517
+ catch (error) {
518
+ // Ghi nhận thất bại
519
+ const groupEndTime = Date.now();
520
+ const errorMessage = error instanceof Error ? error.message : String(error);
521
+ groupResult.success = false;
522
+ groupResult.error = errorMessage;
523
+ groupResult.endTime = groupEndTime;
524
+ groupResult.duration = groupEndTime - groupStartTime;
525
+ failedGroups++;
526
+ // Với group thất bại, coi như tất cả tin nhắn đều thất bại
527
+ totalFailedMessages += request.messages.length;
528
+ // Callback: Thất bại
529
+ if (request.onProgress) {
530
+ request.onProgress({
531
+ groupId,
532
+ groupIndex: i,
533
+ totalGroups: uniqueGroupIds.length,
534
+ status: 'failed',
535
+ error: errorMessage,
536
+ startTime: groupStartTime,
537
+ endTime: groupEndTime,
538
+ });
539
+ }
540
+ }
541
+ groupResults.push(groupResult);
542
+ // Delay giữa các groups (trừ group cuối cùng)
543
+ if (i < uniqueGroupIds.length - 1 && request.delayBetweenGroups && request.delayBetweenGroups > 0) {
544
+ await this.sleep(request.delayBetweenGroups);
545
+ }
546
+ }
547
+ const totalDuration = Date.now() - startTime;
548
+ const totalMessages = uniqueGroupIds.length * request.messages.length;
549
+ return {
550
+ totalGroups: uniqueGroupIds.length,
551
+ successfulGroups,
552
+ failedGroups,
553
+ groupResults,
554
+ totalDuration,
555
+ messageStats: {
556
+ totalSuccessfulMessages,
557
+ totalFailedMessages,
558
+ totalMessages,
559
+ },
560
+ };
561
+ }
562
+ catch (error) {
563
+ const totalDuration = Date.now() - startTime;
564
+ if (error instanceof common_1.ZaloSDKError) {
565
+ throw error;
566
+ }
567
+ throw new common_1.ZaloSDKError(`Failed to send message list to multiple groups: ${error.message}`, -1, {
568
+ totalGroups: request.groupIds?.length || 0,
569
+ successfulGroups,
570
+ failedGroups,
571
+ groupResults,
572
+ totalDuration,
573
+ messageStats: {
574
+ totalSuccessfulMessages,
575
+ totalFailedMessages,
576
+ totalMessages: (request.groupIds?.length || 0) * (request.messages?.length || 0),
577
+ },
578
+ });
579
+ }
580
+ }
581
+ /**
582
+ * Utility method để sleep/delay
583
+ * @param ms Thời gian delay tính bằng milliseconds
584
+ */
585
+ sleep(ms) {
586
+ return new Promise(resolve => setTimeout(resolve, ms));
587
+ }
257
588
  }
258
589
  exports.GroupMessageService = GroupMessageService;
259
590
  //# sourceMappingURL=group-message.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-message.service.js","sourceRoot":"","sources":["../../src/services/group-message.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group-message.service.js","sourceRoot":"","sources":["../../src/services/group-message.service.ts"],"names":[],"mappings":"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"}