@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.
- package/LICENSE +21 -0
- package/README.md +448 -0
- package/dist/clients/base-client.d.ts +67 -0
- package/dist/clients/base-client.d.ts.map +1 -0
- package/dist/clients/base-client.js +297 -0
- package/dist/clients/base-client.js.map +1 -0
- package/dist/clients/zalo-client.d.ts +131 -0
- package/dist/clients/zalo-client.d.ts.map +1 -0
- package/dist/clients/zalo-client.js +215 -0
- package/dist/clients/zalo-client.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/services/article.service.d.ts +144 -0
- package/dist/services/article.service.d.ts.map +1 -0
- package/dist/services/article.service.js +518 -0
- package/dist/services/article.service.js.map +1 -0
- package/dist/services/auth.service.d.ts +55 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +269 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/consultation.service.d.ts +73 -0
- package/dist/services/consultation.service.d.ts.map +1 -0
- package/dist/services/consultation.service.js +208 -0
- package/dist/services/consultation.service.js.map +1 -0
- package/dist/services/general-message.service.d.ts +85 -0
- package/dist/services/general-message.service.d.ts.map +1 -0
- package/dist/services/general-message.service.js +248 -0
- package/dist/services/general-message.service.js.map +1 -0
- package/dist/services/group-management.service.d.ts +220 -0
- package/dist/services/group-management.service.d.ts.map +1 -0
- package/dist/services/group-management.service.js +562 -0
- package/dist/services/group-management.service.js.map +1 -0
- package/dist/services/group-message.service.d.ts +102 -0
- package/dist/services/group-message.service.d.ts.map +1 -0
- package/dist/services/group-message.service.js +233 -0
- package/dist/services/group-message.service.js.map +1 -0
- package/dist/services/message-management.service.d.ts +135 -0
- package/dist/services/message-management.service.d.ts.map +1 -0
- package/dist/services/message-management.service.js +237 -0
- package/dist/services/message-management.service.js.map +1 -0
- package/dist/services/oa.service.d.ts +67 -0
- package/dist/services/oa.service.d.ts.map +1 -0
- package/dist/services/oa.service.js +223 -0
- package/dist/services/oa.service.js.map +1 -0
- package/dist/services/promotion.service.d.ts +114 -0
- package/dist/services/promotion.service.d.ts.map +1 -0
- package/dist/services/promotion.service.js +247 -0
- package/dist/services/promotion.service.js.map +1 -0
- package/dist/services/tag.service.d.ts +144 -0
- package/dist/services/tag.service.d.ts.map +1 -0
- package/dist/services/tag.service.js +184 -0
- package/dist/services/tag.service.js.map +1 -0
- package/dist/services/transaction.service.d.ts +110 -0
- package/dist/services/transaction.service.d.ts.map +1 -0
- package/dist/services/transaction.service.js +231 -0
- package/dist/services/transaction.service.js.map +1 -0
- package/dist/services/user-management.service.d.ts +117 -0
- package/dist/services/user-management.service.d.ts.map +1 -0
- package/dist/services/user-management.service.js +239 -0
- package/dist/services/user-management.service.js.map +1 -0
- package/dist/services/user.service.d.ts +84 -0
- package/dist/services/user.service.d.ts.map +1 -0
- package/dist/services/user.service.js +323 -0
- package/dist/services/user.service.js.map +1 -0
- package/dist/services/video-upload.service.d.ts +83 -0
- package/dist/services/video-upload.service.d.ts.map +1 -0
- package/dist/services/video-upload.service.js +267 -0
- package/dist/services/video-upload.service.js.map +1 -0
- package/dist/services/zns.service.d.ts +116 -0
- package/dist/services/zns.service.d.ts.map +1 -0
- package/dist/services/zns.service.js +234 -0
- package/dist/services/zns.service.js.map +1 -0
- package/dist/types/article.d.ts +352 -0
- package/dist/types/article.d.ts.map +1 -0
- package/dist/types/article.js +70 -0
- package/dist/types/article.js.map +1 -0
- package/dist/types/auth.d.ts +233 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +39 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/common.d.ts +237 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +42 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/group.d.ts +523 -0
- package/dist/types/group.d.ts.map +1 -0
- package/dist/types/group.js +6 -0
- package/dist/types/group.js.map +1 -0
- package/dist/types/message.d.ts +333 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +17 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/oa.d.ts +285 -0
- package/dist/types/oa.d.ts.map +1 -0
- package/dist/types/oa.js +25 -0
- package/dist/types/oa.js.map +1 -0
- package/dist/types/social.d.ts +427 -0
- package/dist/types/social.d.ts.map +1 -0
- package/dist/types/social.js +6 -0
- package/dist/types/social.js.map +1 -0
- package/dist/types/user-management.d.ts +280 -0
- package/dist/types/user-management.d.ts.map +1 -0
- package/dist/types/user-management.js +6 -0
- package/dist/types/user-management.js.map +1 -0
- package/dist/types/user.d.ts +365 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +17 -0
- package/dist/types/user.js.map +1 -0
- package/dist/types/webhook.d.ts +1972 -0
- package/dist/types/webhook.d.ts.map +1 -0
- package/dist/types/webhook.js +419 -0
- package/dist/types/webhook.js.map +1 -0
- package/dist/types/zns.d.ts +277 -0
- package/dist/types/zns.d.ts.map +1 -0
- package/dist/types/zns.js +6 -0
- package/dist/types/zns.js.map +1 -0
- package/dist/zalo-sdk.d.ts +228 -0
- package/dist/zalo-sdk.d.ts.map +1 -0
- package/dist/zalo-sdk.js +307 -0
- package/dist/zalo-sdk.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZNSService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Service for Zalo Notification Service (ZNS)
|
|
6
|
+
*
|
|
7
|
+
* Requirements for using ZNS API:
|
|
8
|
+
* - Official Account must be approved and have ZNS sending permission
|
|
9
|
+
* - Valid Official Account access token
|
|
10
|
+
* - ZNS template must be approved before use
|
|
11
|
+
* - Recipient phone number must be in correct format and valid
|
|
12
|
+
* - Template data must match defined parameters
|
|
13
|
+
* - Comply with message quantity limits according to service package
|
|
14
|
+
*
|
|
15
|
+
* Reference: https://developers.zalo.me/docs/zalo-notification-service/
|
|
16
|
+
*/
|
|
17
|
+
class ZNSService {
|
|
18
|
+
constructor(client) {
|
|
19
|
+
this.client = client;
|
|
20
|
+
this.znsApiUrl = "https://business.openapi.zalo.me/message";
|
|
21
|
+
this.templateApiUrl = "https://business.openapi.zalo.me/template";
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Send ZNS message
|
|
25
|
+
* @param accessToken OA access token
|
|
26
|
+
* @param message ZNS message data
|
|
27
|
+
* @returns Send result
|
|
28
|
+
*/
|
|
29
|
+
async sendMessage(accessToken, message) {
|
|
30
|
+
try {
|
|
31
|
+
const response = await this.client.apiPost(`${this.znsApiUrl}/template`, accessToken, message);
|
|
32
|
+
return response;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw this.handleZNSError(error, "Failed to send ZNS message");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Send ZNS message with phone hash
|
|
40
|
+
* @param accessToken OA access token
|
|
41
|
+
* @param message ZNS message with hashed phone
|
|
42
|
+
* @returns Send result
|
|
43
|
+
*/
|
|
44
|
+
async sendHashPhoneMessage(accessToken, message) {
|
|
45
|
+
try {
|
|
46
|
+
const response = await this.client.apiPost(`${this.znsApiUrl}/template/hashphone`, accessToken, message);
|
|
47
|
+
return response;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw this.handleZNSError(error, "Failed to send ZNS hash phone message");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Send ZNS message in development mode
|
|
55
|
+
* @param accessToken OA access token
|
|
56
|
+
* @param message ZNS dev mode message
|
|
57
|
+
* @returns Send result
|
|
58
|
+
*/
|
|
59
|
+
async sendDevModeMessage(accessToken, message) {
|
|
60
|
+
try {
|
|
61
|
+
const response = await this.client.apiPost(`${this.znsApiUrl}/template/dev`, accessToken, message);
|
|
62
|
+
return response;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
throw this.handleZNSError(error, "Failed to send ZNS dev mode message");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Send ZNS message with RSA encryption
|
|
70
|
+
* @param accessToken OA access token
|
|
71
|
+
* @param message ZNS RSA message
|
|
72
|
+
* @returns Send result
|
|
73
|
+
*/
|
|
74
|
+
async sendRsaMessage(accessToken, message) {
|
|
75
|
+
try {
|
|
76
|
+
const response = await this.client.apiPost(`${this.znsApiUrl}/template/rsa`, accessToken, message);
|
|
77
|
+
return response;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
throw this.handleZNSError(error, "Failed to send ZNS RSA message");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Send ZNS journey message
|
|
85
|
+
* @param accessToken OA access token
|
|
86
|
+
* @param message ZNS journey message
|
|
87
|
+
* @returns Send result
|
|
88
|
+
*/
|
|
89
|
+
async sendJourneyMessage(accessToken, message) {
|
|
90
|
+
try {
|
|
91
|
+
const response = await this.client.apiPost(`${this.znsApiUrl}/template/journey`, accessToken, message);
|
|
92
|
+
return response;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw this.handleZNSError(error, "Failed to send ZNS journey message");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get ZNS message status
|
|
100
|
+
* @param accessToken OA access token
|
|
101
|
+
* @param messageId Message ID
|
|
102
|
+
* @returns Message status info
|
|
103
|
+
*/
|
|
104
|
+
async getMessageStatus(accessToken, messageId) {
|
|
105
|
+
try {
|
|
106
|
+
const response = await this.client.apiGet(`${this.znsApiUrl}/status`, accessToken, {
|
|
107
|
+
message_id: messageId,
|
|
108
|
+
});
|
|
109
|
+
return response;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
throw this.handleZNSError(error, "Failed to get ZNS message status");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get ZNS quota information
|
|
117
|
+
* @param accessToken OA access token
|
|
118
|
+
* @returns Quota information
|
|
119
|
+
*/
|
|
120
|
+
async getQuotaInfo(accessToken) {
|
|
121
|
+
try {
|
|
122
|
+
const response = await this.client.apiGet(`${this.znsApiUrl}/quota`, accessToken);
|
|
123
|
+
return response;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
throw this.handleZNSError(error, "Failed to get ZNS quota info");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get ZNS template list
|
|
131
|
+
* @param accessToken OA access token
|
|
132
|
+
* @param offset Offset for pagination
|
|
133
|
+
* @param limit Limit for pagination
|
|
134
|
+
* @returns Template list
|
|
135
|
+
*/
|
|
136
|
+
async getTemplateList(accessToken, offset = 0, limit = 10) {
|
|
137
|
+
try {
|
|
138
|
+
const response = await this.client.apiGet(`${this.templateApiUrl}/all`, accessToken, {
|
|
139
|
+
offset,
|
|
140
|
+
limit,
|
|
141
|
+
});
|
|
142
|
+
return response;
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
throw this.handleZNSError(error, "Failed to get ZNS template list");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get ZNS template details
|
|
150
|
+
* @param accessToken OA access token
|
|
151
|
+
* @param templateId Template ID
|
|
152
|
+
* @returns Template details
|
|
153
|
+
*/
|
|
154
|
+
async getTemplateDetails(accessToken, templateId) {
|
|
155
|
+
try {
|
|
156
|
+
const response = await this.client.apiGet(`${this.templateApiUrl}/info`, accessToken, {
|
|
157
|
+
template_id: templateId,
|
|
158
|
+
});
|
|
159
|
+
return response;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
throw this.handleZNSError(error, "Failed to get ZNS template details");
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Create ZNS template
|
|
167
|
+
* @param accessToken OA access token
|
|
168
|
+
* @param templateData Template creation data
|
|
169
|
+
* @returns Created template
|
|
170
|
+
*/
|
|
171
|
+
async createTemplate(accessToken, templateData) {
|
|
172
|
+
try {
|
|
173
|
+
const response = await this.client.apiPost(`${this.templateApiUrl}/create`, accessToken, templateData);
|
|
174
|
+
return response;
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
throw this.handleZNSError(error, "Failed to create ZNS template");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Update ZNS template
|
|
182
|
+
* @param accessToken OA access token
|
|
183
|
+
* @param templateData Template update data
|
|
184
|
+
* @returns Updated template
|
|
185
|
+
*/
|
|
186
|
+
async updateTemplate(accessToken, templateData) {
|
|
187
|
+
try {
|
|
188
|
+
const response = await this.client.apiPost(`${this.templateApiUrl}/update`, accessToken, templateData);
|
|
189
|
+
return response;
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
throw this.handleZNSError(error, "Failed to update ZNS template");
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Delete ZNS template
|
|
197
|
+
* @param accessToken OA access token
|
|
198
|
+
* @param templateId Template ID
|
|
199
|
+
* @returns Deletion result
|
|
200
|
+
*/
|
|
201
|
+
async deleteTemplate(accessToken, templateId) {
|
|
202
|
+
try {
|
|
203
|
+
const response = await this.client.apiPost(`${this.templateApiUrl}/delete`, accessToken, { template_id: templateId });
|
|
204
|
+
return response;
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
throw this.handleZNSError(error, "Failed to delete ZNS template");
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Upload image for ZNS template
|
|
212
|
+
* @param accessToken OA access token
|
|
213
|
+
* @param imageFile Image file
|
|
214
|
+
* @returns Upload result
|
|
215
|
+
*/
|
|
216
|
+
async uploadImage(accessToken, imageFile, filename = "image.jpg") {
|
|
217
|
+
try {
|
|
218
|
+
const response = await this.client.apiUploadFile(`${this.templateApiUrl}/upload_image`, accessToken, imageFile, filename);
|
|
219
|
+
return response;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
throw this.handleZNSError(error, "Failed to upload ZNS image");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
handleZNSError(error, defaultMessage) {
|
|
226
|
+
if (error.response?.data) {
|
|
227
|
+
const errorData = error.response.data;
|
|
228
|
+
return new Error(`${defaultMessage}: ${errorData.message || errorData.error || "Unknown error"}`);
|
|
229
|
+
}
|
|
230
|
+
return new Error(`${defaultMessage}: ${error.message || "Unknown error"}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
exports.ZNSService = ZNSService;
|
|
234
|
+
//# sourceMappingURL=zns.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zns.service.js","sourceRoot":"","sources":["../../src/services/zns.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for Zalo Official Account Article Management
|
|
3
|
+
* Based on Zalo Article API v2.0
|
|
4
|
+
*/
|
|
5
|
+
import { ZaloApiResponse } from "./common";
|
|
6
|
+
/**
|
|
7
|
+
* Article cover configuration
|
|
8
|
+
*/
|
|
9
|
+
export interface ArticleCover {
|
|
10
|
+
/** Cover type: photo or video */
|
|
11
|
+
cover_type: 'photo' | 'video';
|
|
12
|
+
/** Photo URL (required when cover_type is 'photo') */
|
|
13
|
+
photo_url?: string;
|
|
14
|
+
/** Video ID (required when cover_type is 'video') */
|
|
15
|
+
video_id?: string;
|
|
16
|
+
/** Cover view orientation for video */
|
|
17
|
+
cover_view?: 'horizontal' | 'vertical' | 'square';
|
|
18
|
+
/** Cover status */
|
|
19
|
+
status: 'show' | 'hide';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Article body content item
|
|
23
|
+
*/
|
|
24
|
+
export interface ArticleBodyItem {
|
|
25
|
+
/** Content type */
|
|
26
|
+
type: 'text' | 'image' | 'video' | 'product';
|
|
27
|
+
/** Text content (for type: text) */
|
|
28
|
+
content?: string;
|
|
29
|
+
/** Image URL (for type: image) */
|
|
30
|
+
url?: string;
|
|
31
|
+
/** Video ID (for type: video) */
|
|
32
|
+
video_id?: string;
|
|
33
|
+
/** Product ID (for type: product) */
|
|
34
|
+
id?: string;
|
|
35
|
+
/** Additional properties for video */
|
|
36
|
+
width?: number;
|
|
37
|
+
height?: number;
|
|
38
|
+
thumbnail?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Normal article creation request
|
|
42
|
+
*/
|
|
43
|
+
export interface ArticleNormalRequest {
|
|
44
|
+
type: 'normal';
|
|
45
|
+
title: string;
|
|
46
|
+
author: string;
|
|
47
|
+
cover: ArticleCover;
|
|
48
|
+
description: string;
|
|
49
|
+
body: ArticleBodyItem[];
|
|
50
|
+
related_medias?: string[];
|
|
51
|
+
tracking_link?: string;
|
|
52
|
+
status?: 'show' | 'hide';
|
|
53
|
+
comment?: 'show' | 'hide';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Video article creation request
|
|
57
|
+
*/
|
|
58
|
+
export interface ArticleVideoRequest {
|
|
59
|
+
type: 'video';
|
|
60
|
+
title: string;
|
|
61
|
+
description: string;
|
|
62
|
+
video_id: string;
|
|
63
|
+
avatar: string;
|
|
64
|
+
status?: 'show' | 'hide';
|
|
65
|
+
comment?: 'show' | 'hide';
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Article creation request (union type)
|
|
69
|
+
*/
|
|
70
|
+
export type ArticleRequest = ArticleNormalRequest | ArticleVideoRequest;
|
|
71
|
+
/**
|
|
72
|
+
* Article creation response
|
|
73
|
+
*/
|
|
74
|
+
export interface ArticleResponse {
|
|
75
|
+
/** Token for tracking article creation progress */
|
|
76
|
+
token: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Article process check response
|
|
80
|
+
*/
|
|
81
|
+
export interface ArticleProcessResponse {
|
|
82
|
+
/** Article ID if creation is successful */
|
|
83
|
+
article_id?: string;
|
|
84
|
+
/** Process status */
|
|
85
|
+
status: 'processing' | 'success' | 'failed';
|
|
86
|
+
/** Error message if failed */
|
|
87
|
+
error_message?: string;
|
|
88
|
+
/** Creation timestamp */
|
|
89
|
+
created_time: number;
|
|
90
|
+
/** Last update timestamp */
|
|
91
|
+
updated_time: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Article verification response
|
|
95
|
+
*/
|
|
96
|
+
export interface ArticleVerifyResponse {
|
|
97
|
+
/** Article ID */
|
|
98
|
+
id: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Article cite information
|
|
102
|
+
*/
|
|
103
|
+
export interface ArticleCite {
|
|
104
|
+
url: string;
|
|
105
|
+
description: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Article detail (normal type)
|
|
109
|
+
*/
|
|
110
|
+
export interface ArticleDetailNormal {
|
|
111
|
+
id: string;
|
|
112
|
+
type: 'normal';
|
|
113
|
+
title: string;
|
|
114
|
+
author: string;
|
|
115
|
+
cover: ArticleCover;
|
|
116
|
+
description: string;
|
|
117
|
+
body: ArticleBodyItem[];
|
|
118
|
+
related_medias: string[];
|
|
119
|
+
tracking_link: string;
|
|
120
|
+
status: 'show' | 'hide';
|
|
121
|
+
comment: 'show' | 'hide';
|
|
122
|
+
cite?: ArticleCite;
|
|
123
|
+
link_view: string;
|
|
124
|
+
total_view: number;
|
|
125
|
+
total_share: number;
|
|
126
|
+
total_like: number;
|
|
127
|
+
total_comment: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Article detail (video type)
|
|
131
|
+
*/
|
|
132
|
+
export interface ArticleDetailVideo {
|
|
133
|
+
id: string;
|
|
134
|
+
type: 'video';
|
|
135
|
+
title: string;
|
|
136
|
+
description: string;
|
|
137
|
+
video_id: string;
|
|
138
|
+
avatar: string;
|
|
139
|
+
status: 'show' | 'hide';
|
|
140
|
+
comment: 'show' | 'hide';
|
|
141
|
+
link_view: string;
|
|
142
|
+
total_view: number;
|
|
143
|
+
total_share: number;
|
|
144
|
+
total_like: number;
|
|
145
|
+
total_comment: number;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Article detail (union type)
|
|
149
|
+
*/
|
|
150
|
+
export type ArticleDetail = ArticleDetailNormal | ArticleDetailVideo;
|
|
151
|
+
/**
|
|
152
|
+
* Article list request
|
|
153
|
+
*/
|
|
154
|
+
export interface ArticleListRequest {
|
|
155
|
+
/** Starting position */
|
|
156
|
+
offset: number;
|
|
157
|
+
/** Number of articles to return (max 100) */
|
|
158
|
+
limit: number;
|
|
159
|
+
/** Article type filter */
|
|
160
|
+
type: 'normal' | 'video';
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Article list item
|
|
164
|
+
*/
|
|
165
|
+
export interface ArticleListItem {
|
|
166
|
+
id: string;
|
|
167
|
+
type: 'normal' | 'video';
|
|
168
|
+
title: string;
|
|
169
|
+
description: string;
|
|
170
|
+
status: 'show' | 'hide';
|
|
171
|
+
comment: 'show' | 'hide';
|
|
172
|
+
link_view: string;
|
|
173
|
+
total_view: number;
|
|
174
|
+
total_share: number;
|
|
175
|
+
total_like: number;
|
|
176
|
+
total_comment: number;
|
|
177
|
+
create_time: number;
|
|
178
|
+
update_time: number;
|
|
179
|
+
author?: string;
|
|
180
|
+
cover?: ArticleCover;
|
|
181
|
+
body?: ArticleBodyItem[];
|
|
182
|
+
related_medias?: string[];
|
|
183
|
+
tracking_link?: string;
|
|
184
|
+
cite?: ArticleCite;
|
|
185
|
+
video_id?: string;
|
|
186
|
+
avatar?: string;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Article list response data
|
|
190
|
+
*/
|
|
191
|
+
export interface ArticleListData {
|
|
192
|
+
offset: number;
|
|
193
|
+
count: number;
|
|
194
|
+
total: number;
|
|
195
|
+
articles: ArticleListItem[];
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Article list response
|
|
199
|
+
*/
|
|
200
|
+
export type ArticleListResponse = ZaloApiResponse<ArticleListData>;
|
|
201
|
+
/**
|
|
202
|
+
* Normal article update request
|
|
203
|
+
*/
|
|
204
|
+
export interface ArticleUpdateNormalRequest {
|
|
205
|
+
id: string;
|
|
206
|
+
type: 'normal';
|
|
207
|
+
title: string;
|
|
208
|
+
author: string;
|
|
209
|
+
cover: ArticleCover;
|
|
210
|
+
description: string;
|
|
211
|
+
body: ArticleBodyItem[];
|
|
212
|
+
related_medias?: string[];
|
|
213
|
+
tracking_link?: string;
|
|
214
|
+
status?: 'show' | 'hide';
|
|
215
|
+
comment?: 'show' | 'hide';
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Video article update request
|
|
219
|
+
*/
|
|
220
|
+
export interface ArticleUpdateVideoRequest {
|
|
221
|
+
id: string;
|
|
222
|
+
type: 'video';
|
|
223
|
+
title: string;
|
|
224
|
+
description: string;
|
|
225
|
+
video_id: string;
|
|
226
|
+
avatar: string;
|
|
227
|
+
status?: 'show' | 'hide';
|
|
228
|
+
comment?: 'show' | 'hide';
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Article update request (union type)
|
|
232
|
+
*/
|
|
233
|
+
export type ArticleUpdateRequest = ArticleUpdateNormalRequest | ArticleUpdateVideoRequest;
|
|
234
|
+
/**
|
|
235
|
+
* Article update response
|
|
236
|
+
*/
|
|
237
|
+
export interface ArticleUpdateResponse {
|
|
238
|
+
/** Token for tracking article update progress */
|
|
239
|
+
token: string;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Article removal request
|
|
243
|
+
*/
|
|
244
|
+
export interface ArticleRemoveRequest {
|
|
245
|
+
/** Article ID to remove */
|
|
246
|
+
id: string;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Article removal response
|
|
250
|
+
*/
|
|
251
|
+
export interface ArticleRemoveResponse {
|
|
252
|
+
/** Success message */
|
|
253
|
+
message: string;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Video upload response
|
|
257
|
+
*/
|
|
258
|
+
export interface VideoUploadResponse {
|
|
259
|
+
/** Token for tracking video upload progress */
|
|
260
|
+
token: string;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Video status response
|
|
264
|
+
*/
|
|
265
|
+
export interface VideoStatusResponse {
|
|
266
|
+
/** Video ID (available when processing is complete) */
|
|
267
|
+
video_id?: string;
|
|
268
|
+
/** Video name */
|
|
269
|
+
video_name?: string;
|
|
270
|
+
/** Video size in bytes */
|
|
271
|
+
video_size?: number;
|
|
272
|
+
/** Processing status */
|
|
273
|
+
status: number;
|
|
274
|
+
/** Status message */
|
|
275
|
+
status_message: string;
|
|
276
|
+
/** Conversion progress percentage */
|
|
277
|
+
convert_percent: number;
|
|
278
|
+
/** Conversion error code */
|
|
279
|
+
convert_error_code: number;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Article validation error
|
|
283
|
+
*/
|
|
284
|
+
export interface ArticleValidationError {
|
|
285
|
+
field: string;
|
|
286
|
+
message: string;
|
|
287
|
+
code: string;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Video file validation constraints
|
|
291
|
+
*/
|
|
292
|
+
export interface VideoFileConstraints {
|
|
293
|
+
/** Maximum file size in bytes (50MB) */
|
|
294
|
+
maxSize: number;
|
|
295
|
+
/** Allowed file extensions */
|
|
296
|
+
allowedExtensions: string[];
|
|
297
|
+
/** Allowed MIME types */
|
|
298
|
+
allowedMimeTypes: string[];
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Article validation constants
|
|
302
|
+
*/
|
|
303
|
+
export declare const ARTICLE_CONSTRAINTS: {
|
|
304
|
+
readonly TITLE_MAX_LENGTH: 150;
|
|
305
|
+
readonly AUTHOR_MAX_LENGTH: 50;
|
|
306
|
+
readonly DESCRIPTION_MAX_LENGTH: 300;
|
|
307
|
+
readonly IMAGE_MAX_SIZE: number;
|
|
308
|
+
readonly VIDEO_MAX_SIZE: number;
|
|
309
|
+
readonly LIST_MAX_LIMIT: 100;
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* Video upload constraints
|
|
313
|
+
*/
|
|
314
|
+
export declare const VIDEO_CONSTRAINTS: VideoFileConstraints;
|
|
315
|
+
/**
|
|
316
|
+
* Article status enum
|
|
317
|
+
*/
|
|
318
|
+
export declare enum ArticleStatus {
|
|
319
|
+
SHOW = "show",
|
|
320
|
+
HIDE = "hide"
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Comment status enum
|
|
324
|
+
*/
|
|
325
|
+
export declare enum CommentStatus {
|
|
326
|
+
SHOW = "show",
|
|
327
|
+
HIDE = "hide"
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Article type enum
|
|
331
|
+
*/
|
|
332
|
+
export declare enum ArticleType {
|
|
333
|
+
NORMAL = "normal",
|
|
334
|
+
VIDEO = "video"
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Cover type enum
|
|
338
|
+
*/
|
|
339
|
+
export declare enum CoverType {
|
|
340
|
+
PHOTO = "photo",
|
|
341
|
+
VIDEO = "video"
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Body item type enum
|
|
345
|
+
*/
|
|
346
|
+
export declare enum BodyItemType {
|
|
347
|
+
TEXT = "text",
|
|
348
|
+
IMAGE = "image",
|
|
349
|
+
VIDEO = "video",
|
|
350
|
+
PRODUCT = "product"
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=article.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../src/types/article.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Types for Zalo Official Account Article Management
|
|
4
|
+
* Based on Zalo Article API v2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BodyItemType = exports.CoverType = exports.ArticleType = exports.CommentStatus = exports.ArticleStatus = exports.VIDEO_CONSTRAINTS = exports.ARTICLE_CONSTRAINTS = void 0;
|
|
8
|
+
// ==================== CONSTANTS ====================
|
|
9
|
+
/**
|
|
10
|
+
* Article validation constants
|
|
11
|
+
*/
|
|
12
|
+
exports.ARTICLE_CONSTRAINTS = {
|
|
13
|
+
TITLE_MAX_LENGTH: 150,
|
|
14
|
+
AUTHOR_MAX_LENGTH: 50,
|
|
15
|
+
DESCRIPTION_MAX_LENGTH: 300,
|
|
16
|
+
IMAGE_MAX_SIZE: 1024 * 1024, // 1MB
|
|
17
|
+
VIDEO_MAX_SIZE: 50 * 1024 * 1024, // 50MB
|
|
18
|
+
LIST_MAX_LIMIT: 100,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Video upload constraints
|
|
22
|
+
*/
|
|
23
|
+
exports.VIDEO_CONSTRAINTS = {
|
|
24
|
+
maxSize: 50 * 1024 * 1024, // 50MB
|
|
25
|
+
allowedExtensions: ['.mp4', '.avi'],
|
|
26
|
+
allowedMimeTypes: ['video/mp4', 'video/avi', 'video/x-msvideo'],
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Article status enum
|
|
30
|
+
*/
|
|
31
|
+
var ArticleStatus;
|
|
32
|
+
(function (ArticleStatus) {
|
|
33
|
+
ArticleStatus["SHOW"] = "show";
|
|
34
|
+
ArticleStatus["HIDE"] = "hide";
|
|
35
|
+
})(ArticleStatus || (exports.ArticleStatus = ArticleStatus = {}));
|
|
36
|
+
/**
|
|
37
|
+
* Comment status enum
|
|
38
|
+
*/
|
|
39
|
+
var CommentStatus;
|
|
40
|
+
(function (CommentStatus) {
|
|
41
|
+
CommentStatus["SHOW"] = "show";
|
|
42
|
+
CommentStatus["HIDE"] = "hide";
|
|
43
|
+
})(CommentStatus || (exports.CommentStatus = CommentStatus = {}));
|
|
44
|
+
/**
|
|
45
|
+
* Article type enum
|
|
46
|
+
*/
|
|
47
|
+
var ArticleType;
|
|
48
|
+
(function (ArticleType) {
|
|
49
|
+
ArticleType["NORMAL"] = "normal";
|
|
50
|
+
ArticleType["VIDEO"] = "video";
|
|
51
|
+
})(ArticleType || (exports.ArticleType = ArticleType = {}));
|
|
52
|
+
/**
|
|
53
|
+
* Cover type enum
|
|
54
|
+
*/
|
|
55
|
+
var CoverType;
|
|
56
|
+
(function (CoverType) {
|
|
57
|
+
CoverType["PHOTO"] = "photo";
|
|
58
|
+
CoverType["VIDEO"] = "video";
|
|
59
|
+
})(CoverType || (exports.CoverType = CoverType = {}));
|
|
60
|
+
/**
|
|
61
|
+
* Body item type enum
|
|
62
|
+
*/
|
|
63
|
+
var BodyItemType;
|
|
64
|
+
(function (BodyItemType) {
|
|
65
|
+
BodyItemType["TEXT"] = "text";
|
|
66
|
+
BodyItemType["IMAGE"] = "image";
|
|
67
|
+
BodyItemType["VIDEO"] = "video";
|
|
68
|
+
BodyItemType["PRODUCT"] = "product";
|
|
69
|
+
})(BodyItemType || (exports.BodyItemType = BodyItemType = {}));
|
|
70
|
+
//# sourceMappingURL=article.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/types/article.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA4VH,sDAAsD;AAEtD;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,gBAAgB,EAAE,GAAG;IACrB,iBAAiB,EAAE,EAAE;IACrB,sBAAsB,EAAE,GAAG;IAC3B,cAAc,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM;IACnC,cAAc,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IACzC,cAAc,EAAE,GAAG;CACX,CAAC;AAEX;;GAEG;AACU,QAAA,iBAAiB,GAAyB;IACrD,OAAO,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IAClC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,iBAAiB,CAAC;CACvD,CAAC;AAEX;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAED;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAED;;GAEG;AACH,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED;;GAEG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,4BAAe,CAAA;AACjB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED;;GAEG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,+BAAe,CAAA;IACf,mCAAmB,CAAA;AACrB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB"}
|