@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
package/docs/WEBHOOK_EVENTS.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Webhook Events Documentation
|
|
2
2
|
|
|
3
|
+
> Source of truth: The full, strongly-typed webhook definitions live in `src/types/webhook.ts`.
|
|
4
|
+
>
|
|
5
|
+
> • GitHub: https://github.com/warriorteam/redai-zalo-sdk/blob/main/src/types/webhook.ts
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
- Overview
|
|
9
|
+
- Event Categories
|
|
10
|
+
- Types & Enums Summary
|
|
11
|
+
- Message Events (examples)
|
|
12
|
+
- User Action Events (examples)
|
|
13
|
+
- Shop Events (examples)
|
|
14
|
+
- OA Message Events (examples)
|
|
15
|
+
- User Interaction Events (examples)
|
|
16
|
+
- Consent Events (examples)
|
|
17
|
+
- Anonymous User Events (examples)
|
|
18
|
+
- Type Guards and Utilities
|
|
19
|
+
- Webhook Handler Setup
|
|
20
|
+
- Best Practices
|
|
21
|
+
- Migration from Legacy Types
|
|
22
|
+
|
|
23
|
+
## Types & Enums Summary
|
|
24
|
+
|
|
25
|
+
- Union types
|
|
26
|
+
- `WebhookEvent` – Tập hợp tất cả event types
|
|
27
|
+
- `MessageWebhookEvent`, `UserActionWebhookEvent`, `ShopWebhookEvent`, `SystemWebhookEvent`, `AnonymousWebhookEvent`, `CallWebhookEvent`, `ZNSWebhookEvent`, `GroupWebhookEvent`, `WidgetWebhookEvent`
|
|
28
|
+
- Handler map
|
|
29
|
+
- `WebhookHandlers` – Bản đồ event_name -> handler function có type an toàn
|
|
30
|
+
- Enums
|
|
31
|
+
- `WebhookEventName` – Tên event chuẩn (string enum)
|
|
32
|
+
- `AttachmentType` – Loại attachment: image, file, audio, video, gif, link, location, sticker
|
|
33
|
+
- Type guards chính (đều export từ package)
|
|
34
|
+
- `isMessageEvent`, `isFollowEvent`, `isUserActionEvent`, `isShopEvent`, `isOAMessageEvent`, `isAnonymousEvent`, `isCallEvent`, `isTemplateEvent`, `isBusinessCardEvent`, `isFeedbackEvent`, `isZNSEvent`, `isGroupEvent`, `isJourneyEvent`, `isReactionEvent`, `isConsentEvent`, `isUpdateUserInfoEvent`, `hasAttachments`
|
|
35
|
+
|
|
36
|
+
- Message shape
|
|
37
|
+
- `message.msg_id: string` — ID của tin nhắn
|
|
38
|
+
- `message.text?: string` — Nội dung text (nếu là text)
|
|
39
|
+
- `message.attachments?: Attachment[]` — Có mặt khi là tin nhắn đa phương tiện (image, gif, video, file, link, location, sticker)
|
|
40
|
+
- `message.quote_msg_id?: string` — ID của tin nhắn gốc nếu đây là tin nhắn được gửi bằng thao tác “Trả lời” (reply)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
3
44
|
This document describes the webhook event types and DTOs for Zalo Official Account webhooks.
|
|
4
45
|
|
|
5
46
|
## Overview
|
|
@@ -39,6 +80,9 @@ const textEvent: UserSendTextEvent = {
|
|
|
39
80
|
text: "Hello from user",
|
|
40
81
|
},
|
|
41
82
|
};
|
|
83
|
+
// Optional: reply to an existing message
|
|
84
|
+
quote_msg_id: "96d3cdf3af150460909",
|
|
85
|
+
|
|
42
86
|
```
|
|
43
87
|
|
|
44
88
|
### User Send Image Event
|
|
@@ -403,6 +447,8 @@ const oaTextEvent: OASendTextEvent = {
|
|
|
403
447
|
message: {
|
|
404
448
|
msg_id: "oa_message_123",
|
|
405
449
|
text: "Hello from Official Account",
|
|
450
|
+
// Optional: reply to an existing message
|
|
451
|
+
quote_msg_id: "96d3cdf3af150460909",
|
|
406
452
|
},
|
|
407
453
|
};
|
|
408
454
|
```
|
|
@@ -641,6 +687,8 @@ const anonymousTextEvent: AnonymousSendTextEvent = {
|
|
|
641
687
|
message: {
|
|
642
688
|
msg_id: "message_123",
|
|
643
689
|
text: "Anonymous message",
|
|
690
|
+
// Optional: reply to an existing message
|
|
691
|
+
quote_msg_id: "96d3cdf3af150460909",
|
|
644
692
|
conversation_id: "conversation_123",
|
|
645
693
|
},
|
|
646
694
|
};
|
|
@@ -661,6 +709,8 @@ const anonymousImageEvent: AnonymousSendImageEvent = {
|
|
|
661
709
|
message: {
|
|
662
710
|
msg_id: "message_123",
|
|
663
711
|
text: "Anonymous image",
|
|
712
|
+
// Optional: reply to an existing message
|
|
713
|
+
quote_msg_id: "96d3cdf3af150460909",
|
|
664
714
|
conversation_id: "conversation_123",
|
|
665
715
|
attachments: [
|
|
666
716
|
{
|
|
@@ -689,6 +739,8 @@ const anonymousFileEvent: AnonymousSendFileEvent = {
|
|
|
689
739
|
recipient: { id: "579745863508352884" },
|
|
690
740
|
message: {
|
|
691
741
|
msg_id: "message_123",
|
|
742
|
+
// Optional: reply to an existing message
|
|
743
|
+
quote_msg_id: "96d3cdf3af150460909",
|
|
692
744
|
conversation_id: "conversation_123",
|
|
693
745
|
attachments: [
|
|
694
746
|
{
|
|
@@ -716,19 +768,19 @@ import {
|
|
|
716
768
|
isFollowEvent,
|
|
717
769
|
hasAttachments,
|
|
718
770
|
WebhookEvent,
|
|
719
|
-
} from "redai-zalo-sdk";
|
|
771
|
+
} from "@warriorteam/redai-zalo-sdk";
|
|
720
772
|
|
|
721
773
|
function handleWebhook(event: WebhookEvent) {
|
|
722
774
|
if (isMessageEvent(event)) {
|
|
723
775
|
console.log("Message event:", event.event_name);
|
|
724
776
|
|
|
725
|
-
if (hasAttachments(event.message)) {
|
|
777
|
+
if ("message" in event && hasAttachments(event.message)) {
|
|
726
778
|
console.log("Has attachments:", event.message.attachments.length);
|
|
727
779
|
}
|
|
728
780
|
}
|
|
729
781
|
|
|
730
782
|
if (isFollowEvent(event)) {
|
|
731
|
-
console.log("
|
|
783
|
+
console.log("Follower event:", event.event_name);
|
|
732
784
|
}
|
|
733
785
|
}
|
|
734
786
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@warriorteam/redai-zalo-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { ZaloClient } from "../clients/zalo-client";
|
|
2
|
-
/**
|
|
3
|
-
* Service for managing Zalo OA user tags
|
|
4
|
-
* Provides comprehensive tag management capabilities
|
|
5
|
-
*/
|
|
6
|
-
export declare class TagService {
|
|
7
|
-
private readonly client;
|
|
8
|
-
private readonly apiUrl;
|
|
9
|
-
constructor(client: ZaloClient);
|
|
10
|
-
/**
|
|
11
|
-
* Get all tags of the OA
|
|
12
|
-
* @param accessToken OA access token
|
|
13
|
-
* @returns List of all tags
|
|
14
|
-
*/
|
|
15
|
-
getAllTags(accessToken: string): Promise<{
|
|
16
|
-
error: number;
|
|
17
|
-
message: string;
|
|
18
|
-
data?: Array<{
|
|
19
|
-
tag_name: string;
|
|
20
|
-
tag_id?: string;
|
|
21
|
-
user_count?: number;
|
|
22
|
-
}>;
|
|
23
|
-
}>;
|
|
24
|
-
/**
|
|
25
|
-
* Get tags of a specific user
|
|
26
|
-
* @param accessToken OA access token
|
|
27
|
-
* @param userId User ID
|
|
28
|
-
* @returns User's tags
|
|
29
|
-
*/
|
|
30
|
-
getUserTags(accessToken: string, userId: string): Promise<{
|
|
31
|
-
error: number;
|
|
32
|
-
message: string;
|
|
33
|
-
data?: Array<{
|
|
34
|
-
tag_name: string;
|
|
35
|
-
tag_id?: string;
|
|
36
|
-
}>;
|
|
37
|
-
}>;
|
|
38
|
-
/**
|
|
39
|
-
* Create a new tag
|
|
40
|
-
* @param accessToken OA access token
|
|
41
|
-
* @param tagName Tag name
|
|
42
|
-
* @returns Created tag information
|
|
43
|
-
*/
|
|
44
|
-
createTag(accessToken: string, tagName: string): Promise<{
|
|
45
|
-
error: number;
|
|
46
|
-
message: string;
|
|
47
|
-
data?: {
|
|
48
|
-
tag_name: string;
|
|
49
|
-
tag_id?: string;
|
|
50
|
-
};
|
|
51
|
-
}>;
|
|
52
|
-
/**
|
|
53
|
-
* Delete a tag
|
|
54
|
-
* @param accessToken OA access token
|
|
55
|
-
* @param tagName Tag name to delete
|
|
56
|
-
* @returns Deletion result
|
|
57
|
-
*/
|
|
58
|
-
deleteTag(accessToken: string, tagName: string): Promise<{
|
|
59
|
-
error: number;
|
|
60
|
-
message: string;
|
|
61
|
-
}>;
|
|
62
|
-
/**
|
|
63
|
-
* Tag a user with specific tags
|
|
64
|
-
* @param accessToken OA access token
|
|
65
|
-
* @param userId User ID
|
|
66
|
-
* @param tagNames Array of tag names
|
|
67
|
-
* @returns Tagging result
|
|
68
|
-
*/
|
|
69
|
-
tagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
|
|
70
|
-
error: number;
|
|
71
|
-
message: string;
|
|
72
|
-
}>;
|
|
73
|
-
/**
|
|
74
|
-
* Remove tags from a user
|
|
75
|
-
* @param accessToken OA access token
|
|
76
|
-
* @param userId User ID
|
|
77
|
-
* @param tagNames Array of tag names to remove
|
|
78
|
-
* @returns Untagging result
|
|
79
|
-
*/
|
|
80
|
-
untagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
|
|
81
|
-
error: number;
|
|
82
|
-
message: string;
|
|
83
|
-
}>;
|
|
84
|
-
/**
|
|
85
|
-
* Get users by tag
|
|
86
|
-
* @param accessToken OA access token
|
|
87
|
-
* @param tagName Tag name
|
|
88
|
-
* @param offset Offset for pagination
|
|
89
|
-
* @param count Number of users to retrieve
|
|
90
|
-
* @returns Users with the specified tag
|
|
91
|
-
*/
|
|
92
|
-
getUsersByTag(accessToken: string, tagName: string, offset?: number, count?: number): Promise<{
|
|
93
|
-
error: number;
|
|
94
|
-
message: string;
|
|
95
|
-
data?: {
|
|
96
|
-
users: Array<{
|
|
97
|
-
user_id: string;
|
|
98
|
-
user_id_by_app?: string;
|
|
99
|
-
display_name: string;
|
|
100
|
-
avatar?: string;
|
|
101
|
-
user_is_follower: boolean;
|
|
102
|
-
}>;
|
|
103
|
-
total: number;
|
|
104
|
-
};
|
|
105
|
-
}>;
|
|
106
|
-
/**
|
|
107
|
-
* Bulk tag multiple users
|
|
108
|
-
* @param accessToken OA access token
|
|
109
|
-
* @param userIds Array of user IDs
|
|
110
|
-
* @param tagNames Array of tag names
|
|
111
|
-
* @returns Bulk tagging result
|
|
112
|
-
*/
|
|
113
|
-
bulkTagUsers(accessToken: string, userIds: string[], tagNames: string[]): Promise<{
|
|
114
|
-
error: number;
|
|
115
|
-
message: string;
|
|
116
|
-
data?: {
|
|
117
|
-
successful_users: string[];
|
|
118
|
-
failed_users: Array<{
|
|
119
|
-
user_id: string;
|
|
120
|
-
error: string;
|
|
121
|
-
}>;
|
|
122
|
-
};
|
|
123
|
-
}>;
|
|
124
|
-
/**
|
|
125
|
-
* Bulk untag multiple users
|
|
126
|
-
* @param accessToken OA access token
|
|
127
|
-
* @param userIds Array of user IDs
|
|
128
|
-
* @param tagNames Array of tag names to remove
|
|
129
|
-
* @returns Bulk untagging result
|
|
130
|
-
*/
|
|
131
|
-
bulkUntagUsers(accessToken: string, userIds: string[], tagNames: string[]): Promise<{
|
|
132
|
-
error: number;
|
|
133
|
-
message: string;
|
|
134
|
-
data?: {
|
|
135
|
-
successful_users: string[];
|
|
136
|
-
failed_users: Array<{
|
|
137
|
-
user_id: string;
|
|
138
|
-
error: string;
|
|
139
|
-
}>;
|
|
140
|
-
};
|
|
141
|
-
}>;
|
|
142
|
-
private handleTagError;
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=tag.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tag.service.d.ts","sourceRoot":"","sources":["../../src/services/tag.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TagService = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Service for managing Zalo OA user tags
|
|
6
|
-
* Provides comprehensive tag management capabilities
|
|
7
|
-
*/
|
|
8
|
-
class TagService {
|
|
9
|
-
constructor(client) {
|
|
10
|
-
this.client = client;
|
|
11
|
-
this.apiUrl = "https://openapi.zalo.me/v3.0/oa";
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Get all tags of the OA
|
|
15
|
-
* @param accessToken OA access token
|
|
16
|
-
* @returns List of all tags
|
|
17
|
-
*/
|
|
18
|
-
async getAllTags(accessToken) {
|
|
19
|
-
try {
|
|
20
|
-
const response = await this.client.apiGet(`${this.apiUrl}/tag/gettagsofoa`, accessToken);
|
|
21
|
-
return response;
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
throw this.handleTagError(error, "Failed to get all tags");
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get tags of a specific user
|
|
29
|
-
* @param accessToken OA access token
|
|
30
|
-
* @param userId User ID
|
|
31
|
-
* @returns User's tags
|
|
32
|
-
*/
|
|
33
|
-
async getUserTags(accessToken, userId) {
|
|
34
|
-
try {
|
|
35
|
-
const response = await this.client.apiGet(`${this.apiUrl}/tag/gettagsofuser`, accessToken, {
|
|
36
|
-
user_id: userId,
|
|
37
|
-
});
|
|
38
|
-
return response;
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
throw this.handleTagError(error, "Failed to get user tags");
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Create a new tag
|
|
46
|
-
* @param accessToken OA access token
|
|
47
|
-
* @param tagName Tag name
|
|
48
|
-
* @returns Created tag information
|
|
49
|
-
*/
|
|
50
|
-
async createTag(accessToken, tagName) {
|
|
51
|
-
try {
|
|
52
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/create`, accessToken, {
|
|
53
|
-
tag_name: tagName,
|
|
54
|
-
});
|
|
55
|
-
return response;
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
throw this.handleTagError(error, "Failed to create tag");
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Delete a tag
|
|
63
|
-
* @param accessToken OA access token
|
|
64
|
-
* @param tagName Tag name to delete
|
|
65
|
-
* @returns Deletion result
|
|
66
|
-
*/
|
|
67
|
-
async deleteTag(accessToken, tagName) {
|
|
68
|
-
try {
|
|
69
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/delete`, accessToken, {
|
|
70
|
-
tag_name: tagName,
|
|
71
|
-
});
|
|
72
|
-
return response;
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
throw this.handleTagError(error, "Failed to delete tag");
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Tag a user with specific tags
|
|
80
|
-
* @param accessToken OA access token
|
|
81
|
-
* @param userId User ID
|
|
82
|
-
* @param tagNames Array of tag names
|
|
83
|
-
* @returns Tagging result
|
|
84
|
-
*/
|
|
85
|
-
async tagUser(accessToken, userId, tagNames) {
|
|
86
|
-
try {
|
|
87
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/taguser`, accessToken, {
|
|
88
|
-
user_id: userId,
|
|
89
|
-
tag_names: tagNames,
|
|
90
|
-
});
|
|
91
|
-
return response;
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
throw this.handleTagError(error, "Failed to tag user");
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Remove tags from a user
|
|
99
|
-
* @param accessToken OA access token
|
|
100
|
-
* @param userId User ID
|
|
101
|
-
* @param tagNames Array of tag names to remove
|
|
102
|
-
* @returns Untagging result
|
|
103
|
-
*/
|
|
104
|
-
async untagUser(accessToken, userId, tagNames) {
|
|
105
|
-
try {
|
|
106
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/rmtaguser`, accessToken, {
|
|
107
|
-
user_id: userId,
|
|
108
|
-
tag_names: tagNames,
|
|
109
|
-
});
|
|
110
|
-
return response;
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
throw this.handleTagError(error, "Failed to untag user");
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Get users by tag
|
|
118
|
-
* @param accessToken OA access token
|
|
119
|
-
* @param tagName Tag name
|
|
120
|
-
* @param offset Offset for pagination
|
|
121
|
-
* @param count Number of users to retrieve
|
|
122
|
-
* @returns Users with the specified tag
|
|
123
|
-
*/
|
|
124
|
-
async getUsersByTag(accessToken, tagName, offset = 0, count = 50) {
|
|
125
|
-
try {
|
|
126
|
-
const response = await this.client.apiGet(`${this.apiUrl}/tag/getusersoftag`, accessToken, {
|
|
127
|
-
tag_name: tagName,
|
|
128
|
-
offset,
|
|
129
|
-
count,
|
|
130
|
-
});
|
|
131
|
-
return response;
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
throw this.handleTagError(error, "Failed to get users by tag");
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Bulk tag multiple users
|
|
139
|
-
* @param accessToken OA access token
|
|
140
|
-
* @param userIds Array of user IDs
|
|
141
|
-
* @param tagNames Array of tag names
|
|
142
|
-
* @returns Bulk tagging result
|
|
143
|
-
*/
|
|
144
|
-
async bulkTagUsers(accessToken, userIds, tagNames) {
|
|
145
|
-
try {
|
|
146
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/bulktagusers`, accessToken, {
|
|
147
|
-
user_ids: userIds,
|
|
148
|
-
tag_names: tagNames,
|
|
149
|
-
});
|
|
150
|
-
return response;
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
throw this.handleTagError(error, "Failed to bulk tag users");
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Bulk untag multiple users
|
|
158
|
-
* @param accessToken OA access token
|
|
159
|
-
* @param userIds Array of user IDs
|
|
160
|
-
* @param tagNames Array of tag names to remove
|
|
161
|
-
* @returns Bulk untagging result
|
|
162
|
-
*/
|
|
163
|
-
async bulkUntagUsers(accessToken, userIds, tagNames) {
|
|
164
|
-
try {
|
|
165
|
-
const response = await this.client.apiPost(`${this.apiUrl}/tag/bulkuntagusers`, accessToken, {
|
|
166
|
-
user_ids: userIds,
|
|
167
|
-
tag_names: tagNames,
|
|
168
|
-
});
|
|
169
|
-
return response;
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
throw this.handleTagError(error, "Failed to bulk untag users");
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
handleTagError(error, defaultMessage) {
|
|
176
|
-
if (error.response?.data) {
|
|
177
|
-
const errorData = error.response.data;
|
|
178
|
-
return new Error(`${defaultMessage}: ${errorData.message || errorData.error || "Unknown error"}`);
|
|
179
|
-
}
|
|
180
|
-
return new Error(`${defaultMessage}: ${error.message || "Unknown error"}`);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
exports.TagService = TagService;
|
|
184
|
-
//# sourceMappingURL=tag.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tag.service.js","sourceRoot":"","sources":["../../src/services/tag.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|