@warriorteam/redai-zalo-sdk 1.3.0 → 1.4.1
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/README.md +565 -550
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/services/article.service.d.ts +1 -1
- package/dist/services/article.service.d.ts.map +1 -1
- package/dist/services/article.service.js +24 -16
- package/dist/services/article.service.js.map +1 -1
- package/dist/services/auth.service.d.ts +1 -0
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +23 -9
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/consultation.service.d.ts +63 -16
- package/dist/services/consultation.service.d.ts.map +1 -1
- package/dist/services/consultation.service.js +264 -49
- package/dist/services/consultation.service.js.map +1 -1
- package/dist/services/general-message.service.d.ts +2 -25
- package/dist/services/general-message.service.d.ts.map +1 -1
- package/dist/services/general-message.service.js +11 -112
- package/dist/services/general-message.service.js.map +1 -1
- package/dist/services/group-management.service.d.ts +1 -1
- package/dist/services/group-management.service.d.ts.map +1 -1
- package/dist/services/group-management.service.js +59 -27
- package/dist/services/group-management.service.js.map +1 -1
- package/dist/services/group-message.service.d.ts +1 -1
- package/dist/services/group-message.service.d.ts.map +1 -1
- package/dist/services/group-message.service.js +49 -23
- package/dist/services/group-message.service.js.map +1 -1
- package/dist/services/message-management.service.d.ts +21 -2
- package/dist/services/message-management.service.d.ts.map +1 -1
- package/dist/services/message-management.service.js +83 -7
- package/dist/services/message-management.service.js.map +1 -1
- package/dist/services/oa.service.d.ts +1 -0
- package/dist/services/oa.service.d.ts.map +1 -1
- package/dist/services/oa.service.js +23 -5
- package/dist/services/oa.service.js.map +1 -1
- package/dist/services/user.service.d.ts +108 -18
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +260 -59
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/video-upload.service.d.ts +1 -1
- package/dist/services/video-upload.service.d.ts.map +1 -1
- package/dist/services/video-upload.service.js +11 -8
- package/dist/services/video-upload.service.js.map +1 -1
- package/dist/services/zns.service.d.ts +88 -21
- package/dist/services/zns.service.d.ts.map +1 -1
- package/dist/services/zns.service.js +157 -42
- package/dist/services/zns.service.js.map +1 -1
- package/dist/types/group.d.ts +5 -5
- package/dist/types/group.d.ts.map +1 -1
- package/dist/types/user.d.ts +155 -12
- package/dist/types/user.d.ts.map +1 -1
- package/dist/types/user.js.map +1 -1
- package/dist/types/webhook.d.ts +8 -0
- package/dist/types/webhook.d.ts.map +1 -1
- package/dist/types/webhook.js.map +1 -1
- package/dist/types/zns.d.ts +67 -33
- package/dist/types/zns.d.ts.map +1 -1
- package/dist/zalo-sdk.d.ts +3 -11
- package/dist/zalo-sdk.d.ts.map +1 -1
- package/dist/zalo-sdk.js +0 -10
- package/dist/zalo-sdk.js.map +1 -1
- package/docs/CONSULTATION_SERVICE.md +512 -330
- package/docs/GROUP_MANAGEMENT.md +2 -2
- package/docs/USER_MANAGEMENT.md +481 -1248
- package/docs/WEBHOOK_EVENTS.md +55 -3
- package/package.json +1 -1
- package/dist/services/tag.service.d.ts +0 -144
- package/dist/services/tag.service.d.ts.map +0 -1
- package/dist/services/tag.service.js +0 -184
- package/dist/services/tag.service.js.map +0 -1
- package/dist/services/user-management.service.d.ts +0 -117
- package/dist/services/user-management.service.d.ts.map +0 -1
- package/dist/services/user-management.service.js +0 -239
- package/dist/services/user-management.service.js.map +0 -1
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserManagementService = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Service for managing Zalo OA users
|
|
6
|
-
* Provides comprehensive user management capabilities including:
|
|
7
|
-
* - User profile management
|
|
8
|
-
* - User tagging and segmentation
|
|
9
|
-
* - User notes and interactions
|
|
10
|
-
* - User analytics and insights
|
|
11
|
-
*/
|
|
12
|
-
class UserManagementService {
|
|
13
|
-
constructor(client) {
|
|
14
|
-
this.client = client;
|
|
15
|
-
this.apiUrl = "https://openapi.zalo.me/v3.0/oa";
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Get user profile information
|
|
19
|
-
* @param accessToken OA access token
|
|
20
|
-
* @param userId User ID
|
|
21
|
-
* @returns User profile
|
|
22
|
-
*/
|
|
23
|
-
async getUserProfile(accessToken, userId) {
|
|
24
|
-
try {
|
|
25
|
-
const response = await this.client.apiGet(`${this.apiUrl}/getprofile`, accessToken, {
|
|
26
|
-
user_id: userId,
|
|
27
|
-
});
|
|
28
|
-
return response;
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
throw this.handleUserManagementError(error, "Failed to get user profile");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Get list of users who follow the OA
|
|
36
|
-
* @param accessToken OA access token
|
|
37
|
-
* @param offset Offset for pagination
|
|
38
|
-
* @param count Number of users to retrieve
|
|
39
|
-
* @returns User list
|
|
40
|
-
*/
|
|
41
|
-
async getFollowersList(accessToken, offset = 0, count = 50) {
|
|
42
|
-
try {
|
|
43
|
-
const response = await this.client.apiGet(`${this.apiUrl}/getfollowers`, accessToken, {
|
|
44
|
-
offset,
|
|
45
|
-
count,
|
|
46
|
-
});
|
|
47
|
-
return response;
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
throw this.handleUserManagementError(error, "Failed to get followers list");
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Search users by phone number
|
|
55
|
-
* @param accessToken OA access token
|
|
56
|
-
* @param phoneNumber Phone number to search
|
|
57
|
-
* @returns User profile if found
|
|
58
|
-
*/
|
|
59
|
-
async searchUserByPhone(accessToken, phoneNumber) {
|
|
60
|
-
try {
|
|
61
|
-
const response = await this.client.apiGet(`${this.apiUrl}/searchuser`, accessToken, {
|
|
62
|
-
phone: phoneNumber,
|
|
63
|
-
});
|
|
64
|
-
return response.data;
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
throw this.handleUserManagementError(error, "Failed to search user by phone");
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Get user tags
|
|
72
|
-
* @param accessToken OA access token
|
|
73
|
-
* @param userId User ID
|
|
74
|
-
* @returns User tags
|
|
75
|
-
*/
|
|
76
|
-
async getUserTags(accessToken, userId) {
|
|
77
|
-
try {
|
|
78
|
-
const response = await this.client.apiGet(`${this.apiUrl}/tag/gettagsofuser`, accessToken, {
|
|
79
|
-
user_id: userId,
|
|
80
|
-
});
|
|
81
|
-
return response.data;
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
throw this.handleUserManagementError(error, "Failed to get user tags");
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Tag user with specific tags
|
|
89
|
-
* @param accessToken OA access token
|
|
90
|
-
* @param userId User ID
|
|
91
|
-
* @param tagNames Array of tag names
|
|
92
|
-
* @returns Tag result
|
|
93
|
-
*/
|
|
94
|
-
async tagUser(accessToken, userId, tagNames) {
|
|
95
|
-
try {
|
|
96
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/taguser`, accessToken, {
|
|
97
|
-
user_id: userId,
|
|
98
|
-
tag_names: tagNames,
|
|
99
|
-
});
|
|
100
|
-
return response;
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
throw this.handleUserManagementError(error, "Failed to tag user");
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Remove tags from user
|
|
108
|
-
* @param accessToken OA access token
|
|
109
|
-
* @param userId User ID
|
|
110
|
-
* @param tagNames Array of tag names to remove
|
|
111
|
-
* @returns Untag result
|
|
112
|
-
*/
|
|
113
|
-
async untagUser(accessToken, userId, tagNames) {
|
|
114
|
-
try {
|
|
115
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/rmtaguser`, accessToken, {
|
|
116
|
-
user_id: userId,
|
|
117
|
-
tag_names: tagNames,
|
|
118
|
-
});
|
|
119
|
-
return response;
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
throw this.handleUserManagementError(error, "Failed to untag user");
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Get all available tags
|
|
127
|
-
* @param accessToken OA access token
|
|
128
|
-
* @returns List of all tags
|
|
129
|
-
*/
|
|
130
|
-
async getAllTags(accessToken) {
|
|
131
|
-
try {
|
|
132
|
-
const response = await this.client.apiGet(`${this.apiUrl}/tag/gettagsofoa`, accessToken);
|
|
133
|
-
return response;
|
|
134
|
-
}
|
|
135
|
-
catch (error) {
|
|
136
|
-
throw this.handleUserManagementError(error, "Failed to get all tags");
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Create new tag
|
|
141
|
-
* @param accessToken OA access token
|
|
142
|
-
* @param tagName Tag name
|
|
143
|
-
* @returns Created tag
|
|
144
|
-
*/
|
|
145
|
-
async createTag(accessToken, tagName) {
|
|
146
|
-
try {
|
|
147
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/create`, accessToken, {
|
|
148
|
-
tag_name: tagName,
|
|
149
|
-
});
|
|
150
|
-
return response;
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
throw this.handleUserManagementError(error, "Failed to create tag");
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Delete tag
|
|
158
|
-
* @param accessToken OA access token
|
|
159
|
-
* @param tagName Tag name to delete
|
|
160
|
-
* @returns Deletion result
|
|
161
|
-
*/
|
|
162
|
-
async deleteTag(accessToken, tagName) {
|
|
163
|
-
try {
|
|
164
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/delete`, accessToken, {
|
|
165
|
-
tag_name: tagName,
|
|
166
|
-
});
|
|
167
|
-
return response;
|
|
168
|
-
}
|
|
169
|
-
catch (error) {
|
|
170
|
-
throw this.handleUserManagementError(error, "Failed to delete tag");
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Add note to user
|
|
175
|
-
* @param accessToken OA access token
|
|
176
|
-
* @param userId User ID
|
|
177
|
-
* @param note Note content
|
|
178
|
-
* @returns Note result
|
|
179
|
-
*/
|
|
180
|
-
async addUserNote(accessToken, userId, note) {
|
|
181
|
-
try {
|
|
182
|
-
const response = await this.client.apiPost(`${this.apiUrl}/user/addnote`, accessToken, {
|
|
183
|
-
user_id: userId,
|
|
184
|
-
note,
|
|
185
|
-
});
|
|
186
|
-
return response;
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
throw this.handleUserManagementError(error, "Failed to add user note");
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Get user notes
|
|
194
|
-
* @param accessToken OA access token
|
|
195
|
-
* @param userId User ID
|
|
196
|
-
* @returns User notes
|
|
197
|
-
*/
|
|
198
|
-
async getUserNotes(accessToken, userId) {
|
|
199
|
-
try {
|
|
200
|
-
const response = await this.client.apiGet(`${this.apiUrl}/user/getnotes`, accessToken, {
|
|
201
|
-
user_id: userId,
|
|
202
|
-
});
|
|
203
|
-
return response.data;
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
throw this.handleUserManagementError(error, "Failed to get user notes");
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Get user interaction history
|
|
211
|
-
* @param accessToken OA access token
|
|
212
|
-
* @param userId User ID
|
|
213
|
-
* @param offset Offset for pagination
|
|
214
|
-
* @param count Number of interactions to retrieve
|
|
215
|
-
* @returns User interactions
|
|
216
|
-
*/
|
|
217
|
-
async getUserInteractions(accessToken, userId, offset = 0, count = 50) {
|
|
218
|
-
try {
|
|
219
|
-
const response = await this.client.apiGet(`${this.apiUrl}/user/getinteractions`, accessToken, {
|
|
220
|
-
user_id: userId,
|
|
221
|
-
offset,
|
|
222
|
-
count,
|
|
223
|
-
});
|
|
224
|
-
return response;
|
|
225
|
-
}
|
|
226
|
-
catch (error) {
|
|
227
|
-
throw this.handleUserManagementError(error, "Failed to get user interactions");
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
handleUserManagementError(error, defaultMessage) {
|
|
231
|
-
if (error.response?.data) {
|
|
232
|
-
const errorData = error.response.data;
|
|
233
|
-
return new Error(`${defaultMessage}: ${errorData.message || errorData.error || "Unknown error"}`);
|
|
234
|
-
}
|
|
235
|
-
return new Error(`${defaultMessage}: ${error.message || "Unknown error"}`);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
exports.UserManagementService = UserManagementService;
|
|
239
|
-
//# sourceMappingURL=user-management.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-management.service.js","sourceRoot":"","sources":["../../src/services/user-management.service.ts"],"names":[],"mappings":"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"}
|