@warriorteam/redai-zalo-sdk 1.1.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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +448 -0
  3. package/dist/clients/base-client.d.ts +67 -0
  4. package/dist/clients/base-client.d.ts.map +1 -0
  5. package/dist/clients/base-client.js +297 -0
  6. package/dist/clients/base-client.js.map +1 -0
  7. package/dist/clients/zalo-client.d.ts +131 -0
  8. package/dist/clients/zalo-client.d.ts.map +1 -0
  9. package/dist/clients/zalo-client.js +215 -0
  10. package/dist/clients/zalo-client.js.map +1 -0
  11. package/dist/index.d.ts +40 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +82 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/services/article.service.d.ts +144 -0
  16. package/dist/services/article.service.d.ts.map +1 -0
  17. package/dist/services/article.service.js +518 -0
  18. package/dist/services/article.service.js.map +1 -0
  19. package/dist/services/auth.service.d.ts +55 -0
  20. package/dist/services/auth.service.d.ts.map +1 -0
  21. package/dist/services/auth.service.js +269 -0
  22. package/dist/services/auth.service.js.map +1 -0
  23. package/dist/services/consultation.service.d.ts +73 -0
  24. package/dist/services/consultation.service.d.ts.map +1 -0
  25. package/dist/services/consultation.service.js +208 -0
  26. package/dist/services/consultation.service.js.map +1 -0
  27. package/dist/services/general-message.service.d.ts +85 -0
  28. package/dist/services/general-message.service.d.ts.map +1 -0
  29. package/dist/services/general-message.service.js +248 -0
  30. package/dist/services/general-message.service.js.map +1 -0
  31. package/dist/services/group-management.service.d.ts +220 -0
  32. package/dist/services/group-management.service.d.ts.map +1 -0
  33. package/dist/services/group-management.service.js +562 -0
  34. package/dist/services/group-management.service.js.map +1 -0
  35. package/dist/services/group-message.service.d.ts +102 -0
  36. package/dist/services/group-message.service.d.ts.map +1 -0
  37. package/dist/services/group-message.service.js +233 -0
  38. package/dist/services/group-message.service.js.map +1 -0
  39. package/dist/services/message-management.service.d.ts +135 -0
  40. package/dist/services/message-management.service.d.ts.map +1 -0
  41. package/dist/services/message-management.service.js +237 -0
  42. package/dist/services/message-management.service.js.map +1 -0
  43. package/dist/services/oa.service.d.ts +67 -0
  44. package/dist/services/oa.service.d.ts.map +1 -0
  45. package/dist/services/oa.service.js +223 -0
  46. package/dist/services/oa.service.js.map +1 -0
  47. package/dist/services/promotion.service.d.ts +114 -0
  48. package/dist/services/promotion.service.d.ts.map +1 -0
  49. package/dist/services/promotion.service.js +247 -0
  50. package/dist/services/promotion.service.js.map +1 -0
  51. package/dist/services/tag.service.d.ts +144 -0
  52. package/dist/services/tag.service.d.ts.map +1 -0
  53. package/dist/services/tag.service.js +184 -0
  54. package/dist/services/tag.service.js.map +1 -0
  55. package/dist/services/transaction.service.d.ts +110 -0
  56. package/dist/services/transaction.service.d.ts.map +1 -0
  57. package/dist/services/transaction.service.js +231 -0
  58. package/dist/services/transaction.service.js.map +1 -0
  59. package/dist/services/user-management.service.d.ts +117 -0
  60. package/dist/services/user-management.service.d.ts.map +1 -0
  61. package/dist/services/user-management.service.js +239 -0
  62. package/dist/services/user-management.service.js.map +1 -0
  63. package/dist/services/user.service.d.ts +84 -0
  64. package/dist/services/user.service.d.ts.map +1 -0
  65. package/dist/services/user.service.js +323 -0
  66. package/dist/services/user.service.js.map +1 -0
  67. package/dist/services/video-upload.service.d.ts +83 -0
  68. package/dist/services/video-upload.service.d.ts.map +1 -0
  69. package/dist/services/video-upload.service.js +267 -0
  70. package/dist/services/video-upload.service.js.map +1 -0
  71. package/dist/services/zns.service.d.ts +116 -0
  72. package/dist/services/zns.service.d.ts.map +1 -0
  73. package/dist/services/zns.service.js +234 -0
  74. package/dist/services/zns.service.js.map +1 -0
  75. package/dist/types/article.d.ts +352 -0
  76. package/dist/types/article.d.ts.map +1 -0
  77. package/dist/types/article.js +70 -0
  78. package/dist/types/article.js.map +1 -0
  79. package/dist/types/auth.d.ts +233 -0
  80. package/dist/types/auth.d.ts.map +1 -0
  81. package/dist/types/auth.js +39 -0
  82. package/dist/types/auth.js.map +1 -0
  83. package/dist/types/common.d.ts +237 -0
  84. package/dist/types/common.d.ts.map +1 -0
  85. package/dist/types/common.js +42 -0
  86. package/dist/types/common.js.map +1 -0
  87. package/dist/types/group.d.ts +523 -0
  88. package/dist/types/group.d.ts.map +1 -0
  89. package/dist/types/group.js +6 -0
  90. package/dist/types/group.js.map +1 -0
  91. package/dist/types/message.d.ts +333 -0
  92. package/dist/types/message.d.ts.map +1 -0
  93. package/dist/types/message.js +17 -0
  94. package/dist/types/message.js.map +1 -0
  95. package/dist/types/oa.d.ts +285 -0
  96. package/dist/types/oa.d.ts.map +1 -0
  97. package/dist/types/oa.js +25 -0
  98. package/dist/types/oa.js.map +1 -0
  99. package/dist/types/social.d.ts +427 -0
  100. package/dist/types/social.d.ts.map +1 -0
  101. package/dist/types/social.js +6 -0
  102. package/dist/types/social.js.map +1 -0
  103. package/dist/types/user-management.d.ts +280 -0
  104. package/dist/types/user-management.d.ts.map +1 -0
  105. package/dist/types/user-management.js +6 -0
  106. package/dist/types/user-management.js.map +1 -0
  107. package/dist/types/user.d.ts +365 -0
  108. package/dist/types/user.d.ts.map +1 -0
  109. package/dist/types/user.js +17 -0
  110. package/dist/types/user.js.map +1 -0
  111. package/dist/types/webhook.d.ts +1972 -0
  112. package/dist/types/webhook.d.ts.map +1 -0
  113. package/dist/types/webhook.js +419 -0
  114. package/dist/types/webhook.js.map +1 -0
  115. package/dist/types/zns.d.ts +277 -0
  116. package/dist/types/zns.d.ts.map +1 -0
  117. package/dist/types/zns.js +6 -0
  118. package/dist/types/zns.js.map +1 -0
  119. package/dist/zalo-sdk.d.ts +228 -0
  120. package/dist/zalo-sdk.d.ts.map +1 -0
  121. package/dist/zalo-sdk.js +307 -0
  122. package/dist/zalo-sdk.js.map +1 -0
  123. package/package.json +59 -0
@@ -0,0 +1,110 @@
1
+ import { ZaloClient } from "../clients/zalo-client";
2
+ import { SendMessageResponse, TransactionMessage, MessageRecipient } from "../types/message";
3
+ /**
4
+ * Service xử lý các API tin nhắn giao dịch của Zalo Official Account
5
+ *
6
+ * ĐIỀU KIỆN GỬI TIN GIAO DỊCH:
7
+ *
8
+ * 1. THỜI GIAN GỬI:
9
+ * - Chỉ được gửi trong vòng 24 giờ kể từ khi người dùng tương tác cuối cùng với OA
10
+ * - Tương tác bao gồm: gửi tin nhắn, nhấn button, gọi điện, truy cập website từ OA
11
+ *
12
+ * 2. NỘI DUNG TIN NHẮN:
13
+ * - Phải liên quan trực tiếp đến giao dịch thực tế
14
+ * - Bao gồm: xác nhận đơn hàng, thông báo thanh toán, cập nhật trạng thái giao hàng
15
+ * - Không được chứa nội dung quảng cáo, khuyến mãi
16
+ *
17
+ * 3. TẦN SUẤT GỬI:
18
+ * - Tối đa 3 tin nhắn giao dịch/ngày cho mỗi người dùng
19
+ * - Phải có khoảng cách ít nhất 1 giờ giữa các tin nhắn
20
+ *
21
+ * 4. ĐỊNH DẠNG:
22
+ * - Phải sử dụng template được Zalo phê duyệt trước
23
+ * - Template phải tuân thủ format chuẩn của tin giao dịch
24
+ *
25
+ * 5. NGƯỜI DÙNG:
26
+ * - Người dùng phải đã follow OA
27
+ * - Người dùng không được block OA
28
+ * - Người dùng phải có tương tác gần đây với OA
29
+ *
30
+ * 6. OFFICIAL ACCOUNT:
31
+ * - OA phải được xác minh (verified)
32
+ * - OA phải có quyền gửi tin giao dịch được Zalo cấp phép
33
+ * - OA không được vi phạm chính sách của Zalo
34
+ *
35
+ * LỖI THƯỜNG GẶP:
36
+ * - 1004: Người dùng chưa follow OA hoặc đã unfollow
37
+ * - 1005: Vượt quá thời gian 24 giờ từ lần tương tác cuối
38
+ * - 1006: Vượt quá giới hạn 3 tin/ngày
39
+ * - 1007: Template chưa được phê duyệt hoặc không hợp lệ
40
+ * - 1008: Nội dung tin nhắn vi phạm chính sách
41
+ */
42
+ export declare class TransactionService {
43
+ private readonly client;
44
+ private readonly transactionApiUrl;
45
+ constructor(client: ZaloClient);
46
+ /**
47
+ * Gửi tin nhắn giao dịch
48
+ * @param accessToken Access token của Official Account
49
+ * @param recipient Thông tin người nhận
50
+ * @param message Nội dung tin nhắn giao dịch
51
+ * @returns Thông tin tin nhắn đã gửi
52
+ */
53
+ sendTransactionMessage(accessToken: string, recipient: MessageRecipient, message: TransactionMessage): Promise<SendMessageResponse>;
54
+ /**
55
+ * Gửi tin nhắn xác nhận đơn hàng
56
+ * @param accessToken Access token của Official Account
57
+ * @param recipient Thông tin người nhận
58
+ * @param orderInfo Thông tin đơn hàng
59
+ * @returns Thông tin tin nhắn đã gửi
60
+ */
61
+ sendOrderConfirmation(accessToken: string, recipient: MessageRecipient, orderInfo: {
62
+ orderId: string;
63
+ orderDate: string;
64
+ totalAmount: number;
65
+ items: Array<{
66
+ name: string;
67
+ quantity: number;
68
+ price: number;
69
+ }>;
70
+ customerInfo: {
71
+ name: string;
72
+ phone: string;
73
+ address: string;
74
+ };
75
+ }): Promise<SendMessageResponse>;
76
+ /**
77
+ * Gửi tin nhắn thông báo thanh toán
78
+ * @param accessToken Access token của Official Account
79
+ * @param recipient Thông tin người nhận
80
+ * @param paymentInfo Thông tin thanh toán
81
+ * @returns Thông tin tin nhắn đã gửi
82
+ */
83
+ sendPaymentNotification(accessToken: string, recipient: MessageRecipient, paymentInfo: {
84
+ orderId: string;
85
+ amount: number;
86
+ paymentMethod: string;
87
+ paymentDate: string;
88
+ status: "success" | "failed" | "pending";
89
+ }): Promise<SendMessageResponse>;
90
+ /**
91
+ * Gửi tin nhắn cập nhật trạng thái giao hàng
92
+ * @param accessToken Access token của Official Account
93
+ * @param recipient Thông tin người nhận
94
+ * @param shippingInfo Thông tin giao hàng
95
+ * @returns Thông tin tin nhắn đã gửi
96
+ */
97
+ sendShippingUpdate(accessToken: string, recipient: MessageRecipient, shippingInfo: {
98
+ orderId: string;
99
+ trackingNumber: string;
100
+ status: "preparing" | "shipped" | "in_transit" | "delivered";
101
+ estimatedDelivery?: string;
102
+ carrier?: string;
103
+ }): Promise<SendMessageResponse>;
104
+ /**
105
+ * Validate transaction message format
106
+ * @param message Transaction message to validate
107
+ */
108
+ private validateTransactionMessage;
109
+ }
110
+ //# sourceMappingURL=transaction.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.service.d.ts","sourceRoot":"","sources":["../../src/services/transaction.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAG1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CACsB;gBAE3B,MAAM,EAAE,UAAU;IAE/C;;;;;;OAMG;IACU,sBAAsB,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAsC/B;;;;;;OAMG;IACU,qBAAqB,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,YAAY,EAAE;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,GACA,OAAO,CAAC,mBAAmB,CAAC;IAuC/B;;;;;;OAMG;IACU,uBAAuB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;KAC1C,GACA,OAAO,CAAC,mBAAmB,CAAC;IAiD/B;;;;;;OAMG;IACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;QAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GACA,OAAO,CAAC,mBAAmB,CAAC;IAgD/B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAmBnC"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionService = void 0;
4
+ const common_1 = require("../types/common");
5
+ /**
6
+ * Service xử lý các API tin nhắn giao dịch của Zalo Official Account
7
+ *
8
+ * ĐIỀU KIỆN GỬI TIN GIAO DỊCH:
9
+ *
10
+ * 1. THỜI GIAN GỬI:
11
+ * - Chỉ được gửi trong vòng 24 giờ kể từ khi người dùng tương tác cuối cùng với OA
12
+ * - Tương tác bao gồm: gửi tin nhắn, nhấn button, gọi điện, truy cập website từ OA
13
+ *
14
+ * 2. NỘI DUNG TIN NHẮN:
15
+ * - Phải liên quan trực tiếp đến giao dịch thực tế
16
+ * - Bao gồm: xác nhận đơn hàng, thông báo thanh toán, cập nhật trạng thái giao hàng
17
+ * - Không được chứa nội dung quảng cáo, khuyến mãi
18
+ *
19
+ * 3. TẦN SUẤT GỬI:
20
+ * - Tối đa 3 tin nhắn giao dịch/ngày cho mỗi người dùng
21
+ * - Phải có khoảng cách ít nhất 1 giờ giữa các tin nhắn
22
+ *
23
+ * 4. ĐỊNH DẠNG:
24
+ * - Phải sử dụng template được Zalo phê duyệt trước
25
+ * - Template phải tuân thủ format chuẩn của tin giao dịch
26
+ *
27
+ * 5. NGƯỜI DÙNG:
28
+ * - Người dùng phải đã follow OA
29
+ * - Người dùng không được block OA
30
+ * - Người dùng phải có tương tác gần đây với OA
31
+ *
32
+ * 6. OFFICIAL ACCOUNT:
33
+ * - OA phải được xác minh (verified)
34
+ * - OA phải có quyền gửi tin giao dịch được Zalo cấp phép
35
+ * - OA không được vi phạm chính sách của Zalo
36
+ *
37
+ * LỖI THƯỜNG GẶP:
38
+ * - 1004: Người dùng chưa follow OA hoặc đã unfollow
39
+ * - 1005: Vượt quá thời gian 24 giờ từ lần tương tác cuối
40
+ * - 1006: Vượt quá giới hạn 3 tin/ngày
41
+ * - 1007: Template chưa được phê duyệt hoặc không hợp lệ
42
+ * - 1008: Nội dung tin nhắn vi phạm chính sách
43
+ */
44
+ class TransactionService {
45
+ constructor(client) {
46
+ this.client = client;
47
+ this.transactionApiUrl = "https://openapi.zalo.me/v2.0/oa/message/transaction";
48
+ }
49
+ /**
50
+ * Gửi tin nhắn giao dịch
51
+ * @param accessToken Access token của Official Account
52
+ * @param recipient Thông tin người nhận
53
+ * @param message Nội dung tin nhắn giao dịch
54
+ * @returns Thông tin tin nhắn đã gửi
55
+ */
56
+ async sendTransactionMessage(accessToken, recipient, message) {
57
+ try {
58
+ // Validate transaction message
59
+ this.validateTransactionMessage(message);
60
+ const request = {
61
+ recipient,
62
+ message,
63
+ };
64
+ const result = await this.client.apiPost(this.transactionApiUrl, accessToken, request);
65
+ if (result.error !== 0) {
66
+ throw new common_1.ZaloSDKError(result.message || "Failed to send transaction message", result.error, result);
67
+ }
68
+ if (!result.data) {
69
+ throw new common_1.ZaloSDKError("No response data received", -1);
70
+ }
71
+ return result.data;
72
+ }
73
+ catch (error) {
74
+ if (error instanceof common_1.ZaloSDKError) {
75
+ throw error;
76
+ }
77
+ throw new common_1.ZaloSDKError(`Failed to send transaction message: ${error.message}`, -1, error);
78
+ }
79
+ }
80
+ /**
81
+ * Gửi tin nhắn xác nhận đơn hàng
82
+ * @param accessToken Access token của Official Account
83
+ * @param recipient Thông tin người nhận
84
+ * @param orderInfo Thông tin đơn hàng
85
+ * @returns Thông tin tin nhắn đã gửi
86
+ */
87
+ async sendOrderConfirmation(accessToken, recipient, orderInfo) {
88
+ try {
89
+ const message = {
90
+ type: "transaction",
91
+ attachment: {
92
+ type: "template",
93
+ payload: {
94
+ template_type: "transaction",
95
+ elements: [
96
+ {
97
+ title: `Xác nhận đơn hàng #${orderInfo.orderId}`,
98
+ subtitle: `Ngày đặt: ${orderInfo.orderDate}`,
99
+ default_action: {
100
+ type: "web_url",
101
+ url: `https://example.com/orders/${orderInfo.orderId}`,
102
+ },
103
+ buttons: [
104
+ {
105
+ type: "web_url",
106
+ title: "Xem chi tiết",
107
+ url: `https://example.com/orders/${orderInfo.orderId}`,
108
+ },
109
+ ],
110
+ },
111
+ ],
112
+ },
113
+ },
114
+ };
115
+ return this.sendTransactionMessage(accessToken, recipient, message);
116
+ }
117
+ catch (error) {
118
+ throw new common_1.ZaloSDKError(`Failed to send order confirmation: ${error.message}`, -1, error);
119
+ }
120
+ }
121
+ /**
122
+ * Gửi tin nhắn thông báo thanh toán
123
+ * @param accessToken Access token của Official Account
124
+ * @param recipient Thông tin người nhận
125
+ * @param paymentInfo Thông tin thanh toán
126
+ * @returns Thông tin tin nhắn đã gửi
127
+ */
128
+ async sendPaymentNotification(accessToken, recipient, paymentInfo) {
129
+ try {
130
+ const statusText = {
131
+ success: "Thành công",
132
+ failed: "Thất bại",
133
+ pending: "Đang xử lý",
134
+ };
135
+ const message = {
136
+ type: "transaction",
137
+ attachment: {
138
+ type: "template",
139
+ payload: {
140
+ template_type: "transaction",
141
+ elements: [
142
+ {
143
+ title: `Thông báo thanh toán - ${statusText[paymentInfo.status]}`,
144
+ subtitle: `Đơn hàng #${paymentInfo.orderId} - ${paymentInfo.amount.toLocaleString("vi-VN")} VNĐ`,
145
+ default_action: {
146
+ type: "web_url",
147
+ url: `https://example.com/payments/${paymentInfo.orderId}`,
148
+ },
149
+ buttons: [
150
+ {
151
+ type: "web_url",
152
+ title: "Xem chi tiết",
153
+ url: `https://example.com/payments/${paymentInfo.orderId}`,
154
+ },
155
+ ],
156
+ },
157
+ ],
158
+ },
159
+ },
160
+ };
161
+ return this.sendTransactionMessage(accessToken, recipient, message);
162
+ }
163
+ catch (error) {
164
+ throw new common_1.ZaloSDKError(`Failed to send payment notification: ${error.message}`, -1, error);
165
+ }
166
+ }
167
+ /**
168
+ * Gửi tin nhắn cập nhật trạng thái giao hàng
169
+ * @param accessToken Access token của Official Account
170
+ * @param recipient Thông tin người nhận
171
+ * @param shippingInfo Thông tin giao hàng
172
+ * @returns Thông tin tin nhắn đã gửi
173
+ */
174
+ async sendShippingUpdate(accessToken, recipient, shippingInfo) {
175
+ try {
176
+ const statusText = {
177
+ preparing: "Đang chuẩn bị hàng",
178
+ shipped: "Đã giao cho đơn vị vận chuyển",
179
+ in_transit: "Đang vận chuyển",
180
+ delivered: "Đã giao hàng thành công",
181
+ };
182
+ const message = {
183
+ type: "transaction",
184
+ attachment: {
185
+ type: "template",
186
+ payload: {
187
+ template_type: "transaction",
188
+ elements: [
189
+ {
190
+ title: `Cập nhật giao hàng - ${statusText[shippingInfo.status]}`,
191
+ subtitle: `Đơn hàng #${shippingInfo.orderId} - Mã vận đơn: ${shippingInfo.trackingNumber}`,
192
+ default_action: {
193
+ type: "web_url",
194
+ url: `https://example.com/tracking/${shippingInfo.trackingNumber}`,
195
+ },
196
+ buttons: [
197
+ {
198
+ type: "web_url",
199
+ title: "Theo dõi đơn hàng",
200
+ url: `https://example.com/tracking/${shippingInfo.trackingNumber}`,
201
+ },
202
+ ],
203
+ },
204
+ ],
205
+ },
206
+ },
207
+ };
208
+ return this.sendTransactionMessage(accessToken, recipient, message);
209
+ }
210
+ catch (error) {
211
+ throw new common_1.ZaloSDKError(`Failed to send shipping update: ${error.message}`, -1, error);
212
+ }
213
+ }
214
+ /**
215
+ * Validate transaction message format
216
+ * @param message Transaction message to validate
217
+ */
218
+ validateTransactionMessage(message) {
219
+ if (!message.attachment) {
220
+ throw new common_1.ZaloSDKError("Transaction message must have attachment", -1);
221
+ }
222
+ if (!message.attachment.payload) {
223
+ throw new common_1.ZaloSDKError("Transaction message attachment must have payload", -1);
224
+ }
225
+ if (message.attachment.payload.template_type !== "transaction") {
226
+ throw new common_1.ZaloSDKError("Transaction message must use transaction template type", -1);
227
+ }
228
+ }
229
+ }
230
+ exports.TransactionService = TransactionService;
231
+ //# sourceMappingURL=transaction.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.service.js","sourceRoot":"","sources":["../../src/services/transaction.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { ZaloClient } from "../clients/zalo-client";
2
+ import { UserProfile, UserList, UserTag, UserTagList, UserNote, UserInteraction } from "../types/user-management";
3
+ /**
4
+ * Service for managing Zalo OA users
5
+ * Provides comprehensive user management capabilities including:
6
+ * - User profile management
7
+ * - User tagging and segmentation
8
+ * - User notes and interactions
9
+ * - User analytics and insights
10
+ */
11
+ export declare class UserManagementService {
12
+ private readonly client;
13
+ private readonly apiUrl;
14
+ constructor(client: ZaloClient);
15
+ /**
16
+ * Get user profile information
17
+ * @param accessToken OA access token
18
+ * @param userId User ID
19
+ * @returns User profile
20
+ */
21
+ getUserProfile(accessToken: string, userId: string): Promise<UserProfile>;
22
+ /**
23
+ * Get list of users who follow the OA
24
+ * @param accessToken OA access token
25
+ * @param offset Offset for pagination
26
+ * @param count Number of users to retrieve
27
+ * @returns User list
28
+ */
29
+ getFollowersList(accessToken: string, offset?: number, count?: number): Promise<UserList>;
30
+ /**
31
+ * Search users by phone number
32
+ * @param accessToken OA access token
33
+ * @param phoneNumber Phone number to search
34
+ * @returns User profile if found
35
+ */
36
+ searchUserByPhone(accessToken: string, phoneNumber: string): Promise<UserProfile | null>;
37
+ /**
38
+ * Get user tags
39
+ * @param accessToken OA access token
40
+ * @param userId User ID
41
+ * @returns User tags
42
+ */
43
+ getUserTags(accessToken: string, userId: string): Promise<UserTag[]>;
44
+ /**
45
+ * Tag user with specific tags
46
+ * @param accessToken OA access token
47
+ * @param userId User ID
48
+ * @param tagNames Array of tag names
49
+ * @returns Tag result
50
+ */
51
+ tagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
52
+ success: boolean;
53
+ }>;
54
+ /**
55
+ * Remove tags from user
56
+ * @param accessToken OA access token
57
+ * @param userId User ID
58
+ * @param tagNames Array of tag names to remove
59
+ * @returns Untag result
60
+ */
61
+ untagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
62
+ success: boolean;
63
+ }>;
64
+ /**
65
+ * Get all available tags
66
+ * @param accessToken OA access token
67
+ * @returns List of all tags
68
+ */
69
+ getAllTags(accessToken: string): Promise<UserTagList>;
70
+ /**
71
+ * Create new tag
72
+ * @param accessToken OA access token
73
+ * @param tagName Tag name
74
+ * @returns Created tag
75
+ */
76
+ createTag(accessToken: string, tagName: string): Promise<UserTag>;
77
+ /**
78
+ * Delete tag
79
+ * @param accessToken OA access token
80
+ * @param tagName Tag name to delete
81
+ * @returns Deletion result
82
+ */
83
+ deleteTag(accessToken: string, tagName: string): Promise<{
84
+ success: boolean;
85
+ }>;
86
+ /**
87
+ * Add note to user
88
+ * @param accessToken OA access token
89
+ * @param userId User ID
90
+ * @param note Note content
91
+ * @returns Note result
92
+ */
93
+ addUserNote(accessToken: string, userId: string, note: string): Promise<{
94
+ success: boolean;
95
+ }>;
96
+ /**
97
+ * Get user notes
98
+ * @param accessToken OA access token
99
+ * @param userId User ID
100
+ * @returns User notes
101
+ */
102
+ getUserNotes(accessToken: string, userId: string): Promise<UserNote[]>;
103
+ /**
104
+ * Get user interaction history
105
+ * @param accessToken OA access token
106
+ * @param userId User ID
107
+ * @param offset Offset for pagination
108
+ * @param count Number of interactions to retrieve
109
+ * @returns User interactions
110
+ */
111
+ getUserInteractions(accessToken: string, userId: string, offset?: number, count?: number): Promise<{
112
+ data: UserInteraction[];
113
+ total: number;
114
+ }>;
115
+ private handleUserManagementError;
116
+ }
117
+ //# sourceMappingURL=user-management.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-management.service.d.ts","sourceRoot":"","sources":["../../src/services/user-management.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,OAAO,EACP,WAAW,EACX,QAAQ,EACR,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAE/B,MAAM,EAAE,UAAU;IAE/C;;;;;OAKG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAgBvB;;;;;;OAMG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,QAAQ,CAAC;IAiBpB;;;;;OAKG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAgB9B;;;;;OAKG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgB1E;;;;;;OAMG;IACG,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAiBhC;;;;;;OAMG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAiBhC;;;;OAIG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAa3D;;;;;OAKG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBvE;;;;;OAKG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAgBhC;;;;;;OAMG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAiBhC;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgB5E;;;;;;;OAOG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBtD,OAAO,CAAC,yBAAyB;CAWlC"}