@warriorteam/redai-zalo-sdk 1.19.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,79 @@ 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.20.0] - 2025-08-29
9
+
10
+ ### 🚀 NEW FEATURES
11
+
12
+ #### Broadcast Service - Gửi Tin Truyền Thông Broadcast
13
+ - **ADDED**: `BroadcastService` - Service mới để gửi tin truyền thông broadcast đến nhiều người dùng
14
+ - **ADDED**: `sendBroadcastMessage()` - API gửi broadcast với targeting criteria
15
+ - **ADDED**: `createBroadcastTarget()` - Helper tạo targeting criteria dễ dàng
16
+ - **SUPPORT**: Targeting theo tuổi, giới tính, tỉnh thành, miền, platform
17
+ - **COMPLIANCE**: Tuân thủ 100% Zalo API specification
18
+
19
+ #### Advanced Targeting System
20
+ - **AGES**: 8 nhóm tuổi (0-12, 13-17, 18-24, 25-34, 35-44, 45-54, 55-64, 65+)
21
+ - **GENDER**: 3 lựa chọn (All, Male, Female)
22
+ - **CITIES**: 63 tỉnh thành Việt Nam với mapping chính xác
23
+ - **LOCATIONS**: 3 miền (North, Central, South)
24
+ - **PLATFORMS**: 3 hệ điều hành (iOS, Android, Windows Phone)
25
+
26
+ #### Helper Methods & Constants
27
+ - **ADDED**: `getCityCodes()` - Lấy mapping tỉnh thành
28
+ - **ADDED**: `getAgeGroupCodes()` - Lấy mã nhóm tuổi
29
+ - **ADDED**: `getGenderCodes()` - Lấy mã giới tính
30
+ - **ADDED**: `getLocationCodes()` - Lấy mã miền
31
+ - **ADDED**: `getPlatformCodes()` - Lấy mã platform
32
+ - **CONSTANTS**: Đầy đủ constants cho tất cả targeting criteria
33
+
34
+ ### 📊 NEW INTERFACES
35
+
36
+ #### Broadcast Types
37
+ - **ADDED**: `BroadcastTarget` - Interface cho targeting criteria
38
+ - **ADDED**: `BroadcastRecipient` - Interface cho thông tin người nhận
39
+ - **ADDED**: `BroadcastMessage` - Interface cho tin nhắn broadcast
40
+ - **ADDED**: `BroadcastRequest` - Request payload structure
41
+ - **ADDED**: `BroadcastResponse` - Response structure với message_id
42
+ - **ADDED**: `BroadcastMessageElement` - Element structure cho article attachment
43
+
44
+ ### 🛡️ VALIDATION & ERROR HANDLING
45
+ - **VALIDATION**: Kiểm tra targeting criteria hợp lệ
46
+ - **VALIDATION**: Kiểm tra attachment_id bắt buộc
47
+ - **ERROR**: Comprehensive error messages cho từng trường hợp
48
+ - **TYPE SAFETY**: Full TypeScript support với IntelliSense
49
+
50
+ ### 📚 DOCUMENTATION & EXAMPLES
51
+
52
+ #### New Documentation
53
+ - **ADDED**: `docs/BROADCAST_SERVICE.md` - Hướng dẫn chi tiết BroadcastService
54
+ - **UPDATED**: `docs/API_REFERENCE.md` - Thêm BroadcastService methods
55
+ - **UPDATED**: `README.md` - Thêm Broadcast Service examples
56
+
57
+ #### New Examples
58
+ - **ADDED**: `examples/broadcast-example.ts` - Ví dụ sử dụng BroadcastService
59
+ - **EXAMPLES**: Targeting đơn giản và phức tạp
60
+ - **EXAMPLES**: Error handling và best practices
61
+
62
+ #### New Tests
63
+ - **ADDED**: `tests/broadcast.test.ts` - Unit tests cho BroadcastService
64
+ - **COVERAGE**: Test targeting criteria creation
65
+ - **COVERAGE**: Test broadcast message sending
66
+ - **COVERAGE**: Test validation logic
67
+
68
+ ### 🔧 SDK INTEGRATION
69
+ - **INTEGRATION**: Tích hợp BroadcastService vào main ZaloSDK class
70
+ - **ACCESS**: Sử dụng qua `zalo.broadcast`
71
+ - **EXPORT**: Export tất cả types và service từ main index
72
+
73
+ ### 📋 API SPECIFICATION COMPLIANCE
74
+ - **ENDPOINT**: `https://openapi.zalo.me/v2.0/oa/message` ✅
75
+ - **METHOD**: POST với JSON payload ✅
76
+ - **HEADERS**: access_token authentication ✅
77
+ - **TARGETING**: recipient.target với đầy đủ criteria ✅
78
+ - **MESSAGE**: Template type "media" với article attachment ✅
79
+ - **RESPONSE**: message_id, error, message structure ✅
80
+
8
81
  ## [1.19.0] - 2025-08-29
9
82
 
10
83
  ### 🚀 NEW FEATURES
package/README.md CHANGED
@@ -4,6 +4,7 @@ A comprehensive TypeScript/JavaScript SDK for Zalo APIs, providing easy-to-use i
4
4
 
5
5
  - **Official Account (OA) API** - Manage your Zalo Official Account
6
6
  - **Consultation Service** - Send customer support messages within 48-hour window
7
+ - **Broadcast Service** - Send mass communication messages with targeting criteria
7
8
  - **Zalo Notification Service (ZNS)** - Send template-based notification messages
8
9
  - **Social API** - Access user social information and authentication
9
10
  - **Group Message Framework (GMF)** - Send messages to Zalo groups
@@ -377,6 +378,38 @@ For support and questions:
377
378
  - Create an issue on GitHub
378
379
  - Contact RedAI team
379
380
 
381
+ ### Broadcast Service (Mass Communication)
382
+
383
+ ```typescript
384
+ // Create targeting criteria
385
+ const target = zalo.broadcast.createBroadcastTarget({
386
+ gender: "FEMALE", // Target female users
387
+ ages: ["18-24", "25-34"], // Age 18-34
388
+ cities: ["Hồ Chí Minh", "Hà Nội"], // Ho Chi Minh City and Hanoi
389
+ platforms: ["ANDROID", "IOS"] // Android and iOS users
390
+ });
391
+
392
+ // Send broadcast message
393
+ const result = await zalo.broadcast.sendBroadcastMessage(
394
+ accessToken,
395
+ { target },
396
+ "article-attachment-id"
397
+ );
398
+
399
+ console.log("Broadcast sent:", result.data.message_id);
400
+
401
+ // Simple city targeting
402
+ const hcmTarget = zalo.broadcast.createBroadcastTarget({
403
+ cities: ["Hồ Chí Minh"]
404
+ });
405
+
406
+ await zalo.broadcast.sendBroadcastMessage(
407
+ accessToken,
408
+ { target: hcmTarget },
409
+ "article-id"
410
+ );
411
+ ```
412
+
380
413
  ### Consultation Service (Customer Support)
381
414
 
382
415
  ```typescript
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from "./types/oa";
14
14
  export * from "./types/user";
15
15
  export * from "./types/zns";
16
16
  export * from "./types/article";
17
+ export * from "./types/broadcast";
17
18
  export * from "./constants/zns.constants";
18
19
  export type { BaseMessage, TextMessage, ImageMessage, FileMessage, StickerMessage, TemplateMessage as MessageTemplateMessage, ReactionMessage as MessageReactionMessage, Message, MessageRecipient, SendMessageRequest, SendMessageResponse, UploadFileResponse, MessageStatus, MessageEvent, ConsultationTextMessage, ConsultationImageMessage, ConsultationFileMessage, ConsultationStickerMessage, ConsultationQuoteMessage, ConsultationRequestInfoMessage, TransactionMessage, PromotionMessage, AnonymousTextMessage, AnonymousImageMessage, AnonymousFileMessage, AnonymousStickerMessage, MiniAppMessage, ExtendedMessage, } from "./types/message";
19
20
  export * from "./types/webhook";
@@ -36,6 +37,7 @@ export { TransactionService } from "./services/transaction.service";
36
37
  export { PromotionService } from "./services/promotion.service";
37
38
  export { GeneralMessageService } from "./services/general-message.service";
38
39
  export { MessageManagementService, UploadFileResult, UploadImageResult, MessageQuotaInfo, ConversationMessage, Conversation, MessagePagination } from "./services/message-management.service";
40
+ export { BroadcastService } from "./services/broadcast.service";
39
41
  export { ZaloSDK } from "./zalo-sdk";
40
42
  export { ZaloSDK as default } from "./zalo-sdk";
41
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
24
24
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.default = exports.ZaloSDK = exports.MessageManagementService = exports.GeneralMessageService = exports.PromotionService = exports.TransactionService = exports.ConsultationService = exports.VideoUploadService = exports.ArticleService = exports.GroupManagementService = exports.GroupMessageService = exports.ZNSService = exports.UserService = exports.OAService = exports.AuthService = exports.ZaloClient = exports.BaseClient = exports.getMessageDirection = exports.isOAToGroupMessageEvent = exports.isOAToUserMessageEvent = exports.isGroupMessageEvent = exports.isUserMessageEvent = exports.isFromPersonal = exports.isFromGroup = exports.isOASendGroupGifEvent = exports.isOASendGroupStickerEvent = exports.isOASendGroupFileEvent = exports.isOASendGroupImageEvent = exports.isOASendGroupTextEvent = exports.isOASendGifEvent = exports.isOASendStickerEvent = exports.isOASendFileEvent = exports.isOASendImageEvent = exports.isOASendTextEvent = exports.isUserGroupMessageEvent = exports.isUserSendGroupFileEvent = exports.isUserSendGroupAudioEvent = exports.isUserSendGroupVideoEvent = exports.isUserSendGroupImageEvent = exports.isUserSendGroupTextEvent = void 0;
27
+ exports.default = exports.ZaloSDK = exports.BroadcastService = exports.MessageManagementService = exports.GeneralMessageService = exports.PromotionService = exports.TransactionService = exports.ConsultationService = exports.VideoUploadService = exports.ArticleService = exports.GroupManagementService = exports.GroupMessageService = exports.ZNSService = exports.UserService = exports.OAService = exports.AuthService = exports.ZaloClient = exports.BaseClient = exports.getMessageDirection = exports.isOAToGroupMessageEvent = exports.isOAToUserMessageEvent = exports.isGroupMessageEvent = exports.isUserMessageEvent = exports.isFromPersonal = exports.isFromGroup = exports.isOASendGroupGifEvent = exports.isOASendGroupStickerEvent = exports.isOASendGroupFileEvent = exports.isOASendGroupImageEvent = exports.isOASendGroupTextEvent = exports.isOASendGifEvent = exports.isOASendStickerEvent = exports.isOASendFileEvent = exports.isOASendImageEvent = exports.isOASendTextEvent = exports.isUserGroupMessageEvent = exports.isUserSendGroupFileEvent = exports.isUserSendGroupAudioEvent = exports.isUserSendGroupVideoEvent = exports.isUserSendGroupImageEvent = exports.isUserSendGroupTextEvent = void 0;
28
28
  // Export types
29
29
  __exportStar(require("./types/common"), exports);
30
30
  __exportStar(require("./types/auth"), exports);
@@ -32,6 +32,7 @@ __exportStar(require("./types/oa"), exports);
32
32
  __exportStar(require("./types/user"), exports);
33
33
  __exportStar(require("./types/zns"), exports);
34
34
  __exportStar(require("./types/article"), exports);
35
+ __exportStar(require("./types/broadcast"), exports);
35
36
  // Export ZNS constants and helpers
36
37
  __exportStar(require("./constants/zns.constants"), exports);
37
38
  // Export webhook types (avoiding conflicts with message and group types)
@@ -98,6 +99,8 @@ var general_message_service_1 = require("./services/general-message.service");
98
99
  Object.defineProperty(exports, "GeneralMessageService", { enumerable: true, get: function () { return general_message_service_1.GeneralMessageService; } });
99
100
  var message_management_service_1 = require("./services/message-management.service");
100
101
  Object.defineProperty(exports, "MessageManagementService", { enumerable: true, get: function () { return message_management_service_1.MessageManagementService; } });
102
+ var broadcast_service_1 = require("./services/broadcast.service");
103
+ Object.defineProperty(exports, "BroadcastService", { enumerable: true, get: function () { return broadcast_service_1.BroadcastService; } });
101
104
  // Export main SDK class
102
105
  var zalo_sdk_1 = require("./zalo-sdk");
103
106
  Object.defineProperty(exports, "ZaloSDK", { enumerable: true, get: function () { return zalo_sdk_1.ZaloSDK; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;AAEH,eAAe;AACf,iDAA+B;AAC/B,+CAA6B;AAC7B,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAEhC,mCAAmC;AACnC,4DAA0C;AAkC1C,yEAAyE;AACzE,kDAAgC;AAEhC,yEAAyE;AACzE,mDAoB6B;AAlB3B,uHAAA,wBAAwB,OAAA;AACxB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,uHAAA,wBAAwB,OAAA;AACxB,sHAAA,uBAAuB,OAAA;AACvB,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AACpB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,sHAAA,uBAAuB,OAAA;AACvB,qHAAA,sBAAsB,OAAA;AACtB,wHAAA,yBAAyB,OAAA;AACzB,oHAAA,qBAAqB,OAAA;AACrB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AAEhB,kCAAkC;AAClC,2CAMyB;AALvB,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AACnB,iHAAA,sBAAsB,OAAA;AACtB,kHAAA,uBAAuB,OAAA;AACvB,8GAAA,mBAAmB,OAAA;AAoFrB,iBAAiB;AACjB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AACnB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AAEnB,kBAAkB;AAClB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,oDAAkD;AAAzC,uGAAA,SAAS,OAAA;AAClB,2GAA2G;AAC3G,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,+DAA+D;AAC/D,sDAAoD;AAA3C,yGAAA,UAAU,OAAA;AACnB,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,gFAA6E;AAApE,kIAAA,sBAAsB,OAAA;AAC/B,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAE3B,iDAAiD;AACjD,wEAAsE;AAA7D,2HAAA,mBAAmB,OAAA;AAC5B,sEAAoE;AAA3D,yHAAA,kBAAkB,OAAA;AAC3B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AACzB,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAC9B,oFAQ+C;AAP7C,sIAAA,wBAAwB,OAAA;AAS1B,wBAAwB;AACxB,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAEhB,iBAAiB;AACjB,uCAAgD;AAAvC,mGAAA,OAAO,OAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;AAEH,eAAe;AACf,iDAA+B;AAC/B,+CAA6B;AAC7B,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,oDAAkC;AAElC,mCAAmC;AACnC,4DAA0C;AAkC1C,yEAAyE;AACzE,kDAAgC;AAEhC,yEAAyE;AACzE,mDAoB6B;AAlB3B,uHAAA,wBAAwB,OAAA;AACxB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,uHAAA,wBAAwB,OAAA;AACxB,sHAAA,uBAAuB,OAAA;AACvB,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AACpB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,sHAAA,uBAAuB,OAAA;AACvB,qHAAA,sBAAsB,OAAA;AACtB,wHAAA,yBAAyB,OAAA;AACzB,oHAAA,qBAAqB,OAAA;AACrB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AAEhB,kCAAkC;AAClC,2CAMyB;AALvB,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AACnB,iHAAA,sBAAsB,OAAA;AACtB,kHAAA,uBAAuB,OAAA;AACvB,8GAAA,mBAAmB,OAAA;AAoFrB,iBAAiB;AACjB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AACnB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AAEnB,kBAAkB;AAClB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,oDAAkD;AAAzC,uGAAA,SAAS,OAAA;AAClB,2GAA2G;AAC3G,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,+DAA+D;AAC/D,sDAAoD;AAA3C,yGAAA,UAAU,OAAA;AACnB,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,gFAA6E;AAApE,kIAAA,sBAAsB,OAAA;AAC/B,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAE3B,iDAAiD;AACjD,wEAAsE;AAA7D,2HAAA,mBAAmB,OAAA;AAC5B,sEAAoE;AAA3D,yHAAA,kBAAkB,OAAA;AAC3B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AACzB,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAC9B,oFAQ+C;AAP7C,sIAAA,wBAAwB,OAAA;AAQ1B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AAEzB,wBAAwB;AACxB,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAEhB,iBAAiB;AACjB,uCAAgD;AAAvC,mGAAA,OAAO,OAAW"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Broadcast Service for Zalo Official Account
3
+ *
4
+ * Gửi tin Truyền thông Broadcast đến nhiều người dùng dựa trên tiêu chí targeting
5
+ * API: https://openapi.zalo.me/v2.0/oa/message
6
+ *
7
+ * TÍNH NĂNG:
8
+ * 1. GỬI TIN BROADCAST:
9
+ * - Gửi tin nhắn đến nhiều người dùng cùng lúc
10
+ * - Targeting theo tuổi, giới tính, địa điểm, platform
11
+ * - Chỉ hỗ trợ template type "media" với article attachment
12
+ *
13
+ * 2. TARGETING CRITERIA:
14
+ * - Ages: Nhóm tuổi (0-12, 13-17, 18-24, 25-34, 35-44, 45-54, 55-64, 65+)
15
+ * - Gender: Giới tính (All, Male, Female)
16
+ * - Cities: Tỉnh thành cụ thể (63 tỉnh thành Việt Nam)
17
+ * - Locations: Miền (Bắc, Trung, Nam)
18
+ * - Platform: Hệ điều hành (iOS, Android, Windows Phone)
19
+ *
20
+ * 3. GIỚI HẠN:
21
+ * - Chỉ gửi được article attachment
22
+ * - Cần có quyền broadcast từ Zalo
23
+ * - Tuân thủ chính sách spam và nội dung
24
+ *
25
+ * LỖI THƯỜNG GẶP:
26
+ * - 3001: Không có quyền gửi broadcast
27
+ * - 3002: Article attachment không tồn tại
28
+ * - 3003: Targeting criteria không hợp lệ
29
+ * - 3004: Vượt quá giới hạn broadcast
30
+ * - 3005: Nội dung vi phạm chính sách
31
+ */
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';
34
+ export declare class BroadcastService {
35
+ private readonly client;
36
+ private readonly broadcastApiUrl;
37
+ constructor(client: ZaloClient);
38
+ /**
39
+ * Gửi tin nhắn broadcast đến nhiều người dùng
40
+ * @param accessToken Access token của Official Account
41
+ * @param recipient Thông tin targeting người nhận
42
+ * @param attachmentId ID của article attachment
43
+ * @returns Thông tin tin nhắn broadcast đã gửi
44
+ */
45
+ sendBroadcastMessage(accessToken: string, recipient: BroadcastRecipient, attachmentId: string): Promise<BroadcastResponse>;
46
+ /**
47
+ * Tạo broadcast target với các tiêu chí targeting
48
+ * @param criteria Các tiêu chí targeting
49
+ * @returns BroadcastTarget object
50
+ */
51
+ createBroadcastTarget(criteria: {
52
+ ages?: string[];
53
+ gender?: "ALL" | "MALE" | "FEMALE";
54
+ cities?: string[];
55
+ locations?: ("NORTH" | "CENTRAL" | "SOUTH")[];
56
+ platforms?: ("IOS" | "ANDROID" | "WINDOWS_PHONE")[];
57
+ }): BroadcastTarget;
58
+ /**
59
+ * Validate broadcast request parameters
60
+ * @param recipient Broadcast recipient
61
+ * @param attachmentId Article attachment ID
62
+ */
63
+ private validateBroadcastRequest;
64
+ /**
65
+ * Get available city codes for targeting
66
+ * @returns Object mapping city names to codes
67
+ */
68
+ getCityCodes(): typeof BROADCAST_CITY_CODES;
69
+ /**
70
+ * Get available age group codes for targeting
71
+ * @returns Object mapping age groups to codes
72
+ */
73
+ getAgeGroupCodes(): typeof BROADCAST_AGE_CODES;
74
+ /**
75
+ * Get available gender codes for targeting
76
+ * @returns Object mapping genders to codes
77
+ */
78
+ getGenderCodes(): typeof BROADCAST_GENDER_CODES;
79
+ /**
80
+ * Get available location codes for targeting
81
+ * @returns Object mapping locations to codes
82
+ */
83
+ getLocationCodes(): typeof BROADCAST_LOCATION_CODES;
84
+ /**
85
+ * Get available platform codes for targeting
86
+ * @returns Object mapping platforms to codes
87
+ */
88
+ getPlatformCodes(): typeof BROADCAST_PLATFORM_CODES;
89
+ }
90
+ //# sourceMappingURL=broadcast.service.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * Broadcast Service for Zalo Official Account
4
+ *
5
+ * Gửi tin Truyền thông Broadcast đến nhiều người dùng dựa trên tiêu chí targeting
6
+ * API: https://openapi.zalo.me/v2.0/oa/message
7
+ *
8
+ * TÍNH NĂNG:
9
+ * 1. GỬI TIN BROADCAST:
10
+ * - Gửi tin nhắn đến nhiều người dùng cùng lúc
11
+ * - Targeting theo tuổi, giới tính, địa điểm, platform
12
+ * - Chỉ hỗ trợ template type "media" với article attachment
13
+ *
14
+ * 2. TARGETING CRITERIA:
15
+ * - Ages: Nhóm tuổi (0-12, 13-17, 18-24, 25-34, 35-44, 45-54, 55-64, 65+)
16
+ * - Gender: Giới tính (All, Male, Female)
17
+ * - Cities: Tỉnh thành cụ thể (63 tỉnh thành Việt Nam)
18
+ * - Locations: Miền (Bắc, Trung, Nam)
19
+ * - Platform: Hệ điều hành (iOS, Android, Windows Phone)
20
+ *
21
+ * 3. GIỚI HẠN:
22
+ * - Chỉ gửi được article attachment
23
+ * - Cần có quyền broadcast từ Zalo
24
+ * - Tuân thủ chính sách spam và nội dung
25
+ *
26
+ * LỖI THƯỜNG GẶP:
27
+ * - 3001: Không có quyền gửi broadcast
28
+ * - 3002: Article attachment không tồn tại
29
+ * - 3003: Targeting criteria không hợp lệ
30
+ * - 3004: Vượt quá giới hạn broadcast
31
+ * - 3005: Nội dung vi phạm chính sách
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.BroadcastService = void 0;
35
+ const common_1 = require("../types/common");
36
+ const broadcast_1 = require("../types/broadcast");
37
+ class BroadcastService {
38
+ constructor(client) {
39
+ this.client = client;
40
+ // Zalo API endpoint for broadcast messages
41
+ this.broadcastApiUrl = "https://openapi.zalo.me/v2.0/oa/message";
42
+ }
43
+ /**
44
+ * Gửi tin nhắn broadcast đến nhiều người dùng
45
+ * @param accessToken Access token của Official Account
46
+ * @param recipient Thông tin targeting người nhận
47
+ * @param attachmentId ID của article attachment
48
+ * @returns Thông tin tin nhắn broadcast đã gửi
49
+ */
50
+ async sendBroadcastMessage(accessToken, recipient, attachmentId) {
51
+ try {
52
+ // Validate input parameters
53
+ this.validateBroadcastRequest(recipient, attachmentId);
54
+ // Build broadcast message
55
+ const message = {
56
+ attachment: {
57
+ type: "template",
58
+ payload: {
59
+ template_type: "media",
60
+ elements: [
61
+ {
62
+ media_type: "article",
63
+ attachment_id: attachmentId
64
+ }
65
+ ]
66
+ }
67
+ }
68
+ };
69
+ // Build request
70
+ const request = {
71
+ recipient,
72
+ message
73
+ };
74
+ // Send broadcast request
75
+ const result = await this.client.apiPost(this.broadcastApiUrl, accessToken, request);
76
+ if (result.error !== 0) {
77
+ throw new common_1.ZaloSDKError(result.message || "Failed to send broadcast message", result.error, result);
78
+ }
79
+ if (!result.data) {
80
+ throw new common_1.ZaloSDKError("No broadcast response data received", -1);
81
+ }
82
+ return result.data;
83
+ }
84
+ catch (error) {
85
+ if (error instanceof common_1.ZaloSDKError) {
86
+ throw error;
87
+ }
88
+ throw new common_1.ZaloSDKError(`Failed to send broadcast message: ${error.message}`, -1, error);
89
+ }
90
+ }
91
+ /**
92
+ * Tạo broadcast target với các tiêu chí targeting
93
+ * @param criteria Các tiêu chí targeting
94
+ * @returns BroadcastTarget object
95
+ */
96
+ createBroadcastTarget(criteria) {
97
+ const target = {};
98
+ // Convert ages to comma-separated string
99
+ if (criteria.ages && criteria.ages.length > 0) {
100
+ const ageCodes = criteria.ages.map(age => {
101
+ const code = broadcast_1.BROADCAST_AGE_CODES[age];
102
+ if (!code) {
103
+ throw new common_1.ZaloSDKError(`Invalid age group: ${age}`, -1);
104
+ }
105
+ return code;
106
+ });
107
+ target.ages = ageCodes.join(",");
108
+ }
109
+ // Convert gender
110
+ if (criteria.gender) {
111
+ const genderCode = broadcast_1.BROADCAST_GENDER_CODES[criteria.gender];
112
+ if (!genderCode) {
113
+ throw new common_1.ZaloSDKError(`Invalid gender: ${criteria.gender}`, -1);
114
+ }
115
+ target.gender = genderCode;
116
+ }
117
+ // Convert cities to comma-separated string
118
+ if (criteria.cities && criteria.cities.length > 0) {
119
+ const cityCodes = criteria.cities.map(city => {
120
+ const code = broadcast_1.BROADCAST_CITY_CODES[city];
121
+ if (!code) {
122
+ throw new common_1.ZaloSDKError(`Invalid city: ${city}`, -1);
123
+ }
124
+ return code;
125
+ });
126
+ target.cities = cityCodes.join(",");
127
+ }
128
+ // Convert locations to comma-separated string
129
+ if (criteria.locations && criteria.locations.length > 0) {
130
+ const locationCodes = criteria.locations.map(location => {
131
+ const code = broadcast_1.BROADCAST_LOCATION_CODES[location];
132
+ if (!code) {
133
+ throw new common_1.ZaloSDKError(`Invalid location: ${location}`, -1);
134
+ }
135
+ return code;
136
+ });
137
+ target.locations = locationCodes.join(",");
138
+ }
139
+ // Convert platforms to comma-separated string
140
+ if (criteria.platforms && criteria.platforms.length > 0) {
141
+ const platformCodes = criteria.platforms.map(platform => {
142
+ const code = broadcast_1.BROADCAST_PLATFORM_CODES[platform];
143
+ if (!code) {
144
+ throw new common_1.ZaloSDKError(`Invalid platform: ${platform}`, -1);
145
+ }
146
+ return code;
147
+ });
148
+ target.platform = platformCodes.join(",");
149
+ }
150
+ return target;
151
+ }
152
+ /**
153
+ * Validate broadcast request parameters
154
+ * @param recipient Broadcast recipient
155
+ * @param attachmentId Article attachment ID
156
+ */
157
+ validateBroadcastRequest(recipient, attachmentId) {
158
+ // Validate recipient
159
+ if (!recipient || !recipient.target) {
160
+ throw new common_1.ZaloSDKError("Recipient target is required for broadcast", -1);
161
+ }
162
+ // Validate attachment ID
163
+ if (!attachmentId || attachmentId.trim().length === 0) {
164
+ throw new common_1.ZaloSDKError("Article attachment ID is required", -1);
165
+ }
166
+ // Validate target has at least one criteria
167
+ const target = recipient.target;
168
+ const hasTargeting = target.ages || target.gender || target.cities ||
169
+ target.locations || target.platform;
170
+ if (!hasTargeting) {
171
+ throw new common_1.ZaloSDKError("At least one targeting criteria is required (ages, gender, cities, locations, or platform)", -1);
172
+ }
173
+ }
174
+ /**
175
+ * Get available city codes for targeting
176
+ * @returns Object mapping city names to codes
177
+ */
178
+ getCityCodes() {
179
+ return broadcast_1.BROADCAST_CITY_CODES;
180
+ }
181
+ /**
182
+ * Get available age group codes for targeting
183
+ * @returns Object mapping age groups to codes
184
+ */
185
+ getAgeGroupCodes() {
186
+ return broadcast_1.BROADCAST_AGE_CODES;
187
+ }
188
+ /**
189
+ * Get available gender codes for targeting
190
+ * @returns Object mapping genders to codes
191
+ */
192
+ getGenderCodes() {
193
+ return broadcast_1.BROADCAST_GENDER_CODES;
194
+ }
195
+ /**
196
+ * Get available location codes for targeting
197
+ * @returns Object mapping locations to codes
198
+ */
199
+ getLocationCodes() {
200
+ return broadcast_1.BROADCAST_LOCATION_CODES;
201
+ }
202
+ /**
203
+ * Get available platform codes for targeting
204
+ * @returns Object mapping platforms to codes
205
+ */
206
+ getPlatformCodes() {
207
+ return broadcast_1.BROADCAST_PLATFORM_CODES;
208
+ }
209
+ }
210
+ exports.BroadcastService = BroadcastService;
211
+ //# sourceMappingURL=broadcast.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.service.js","sourceRoot":"","sources":["../../src/services/broadcast.service.ts"],"names":[],"mappings":"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"}