@warriorteam/redai-zalo-sdk 1.32.17 → 1.33.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/dist/clients/zalo-client.d.ts +4 -0
- package/dist/clients/zalo-client.d.ts.map +1 -1
- package/dist/clients/zalo-client.js +14 -0
- package/dist/clients/zalo-client.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/services/anonymous-message.service.d.ts +190 -0
- package/dist/services/anonymous-message.service.d.ts.map +1 -0
- package/dist/services/anonymous-message.service.js +253 -0
- package/dist/services/anonymous-message.service.js.map +1 -0
- package/dist/services/message-reaction.service.d.ts +154 -0
- package/dist/services/message-reaction.service.d.ts.map +1 -0
- package/dist/services/message-reaction.service.js +213 -0
- package/dist/services/message-reaction.service.js.map +1 -0
- package/dist/services/miniapp-message.service.d.ts +127 -0
- package/dist/services/miniapp-message.service.d.ts.map +1 -0
- package/dist/services/miniapp-message.service.js +174 -0
- package/dist/services/miniapp-message.service.js.map +1 -0
- package/dist/types/message.d.ts +88 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/zalo-sdk.d.ts +6 -0
- package/dist/zalo-sdk.d.ts.map +1 -1
- package/dist/zalo-sdk.js +8 -0
- package/dist/zalo-sdk.js.map +1 -1
- package/package.json +18 -4
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { ZaloClient } from "../clients/zalo-client";
|
|
2
|
+
import { MessageRecipient, SenderAction, MessageReactionResponse, ReactIcon } from "../types/message";
|
|
3
|
+
/**
|
|
4
|
+
* Request thả biểu tượng cảm xúc vào tin nhắn
|
|
5
|
+
*/
|
|
6
|
+
export interface MessageReactionRequest {
|
|
7
|
+
recipient: MessageRecipient;
|
|
8
|
+
sender_action: SenderAction;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Service xử lý API thả biểu tượng cảm xúc vào tin nhắn của Zalo Official Account
|
|
12
|
+
*
|
|
13
|
+
* Bao gồm chức năng:
|
|
14
|
+
* - Thả biểu tượng cảm xúc vào tin nhắn
|
|
15
|
+
* - Thu hồi biểu tượng cảm xúc
|
|
16
|
+
*
|
|
17
|
+
* ĐIỀU KIỆN SỬ DỤNG:
|
|
18
|
+
*
|
|
19
|
+
* 1. QUYỀN TRUY CẬP:
|
|
20
|
+
* - Cần quyền: Gửi tin nhắn / Thả biểu tượng cảm xúc vào tin nhắn
|
|
21
|
+
*
|
|
22
|
+
* 2. GIỚI HẠN:
|
|
23
|
+
* - Một message_id chỉ được thả tối đa 50 biểu tượng cảm xúc
|
|
24
|
+
* - API này KHÔNG bị tính vào quota chủ động hàng tháng
|
|
25
|
+
*
|
|
26
|
+
* 3. CÁC BIỂU TƯỢNG CẢM XÚC HỖ TRỢ:
|
|
27
|
+
* - :> (Thích - Like)
|
|
28
|
+
* - --b (Haha)
|
|
29
|
+
* - :-(( (Buồn - Sad)
|
|
30
|
+
* - /-strong (Mạnh mẽ - Strong)
|
|
31
|
+
* - /-heart (Yêu thích - Love)
|
|
32
|
+
* - :-h (Ngạc nhiên - Wow)
|
|
33
|
+
* - :o (Wow)
|
|
34
|
+
* - /-remove (Thu hồi biểu tượng cảm xúc)
|
|
35
|
+
*/
|
|
36
|
+
export declare class MessageReactionService {
|
|
37
|
+
private readonly client;
|
|
38
|
+
private readonly endpoint;
|
|
39
|
+
constructor(client: ZaloClient);
|
|
40
|
+
/**
|
|
41
|
+
* Thả biểu tượng cảm xúc vào tin nhắn
|
|
42
|
+
*
|
|
43
|
+
* @param accessToken Access token của Official Account
|
|
44
|
+
* @param userId ID của người nhận
|
|
45
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
46
|
+
* @param reactIcon Biểu tượng cảm xúc
|
|
47
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* // Thả icon tim
|
|
52
|
+
* const result = await reactionService.reactToMessage(
|
|
53
|
+
* accessToken,
|
|
54
|
+
* '186729651760683225',
|
|
55
|
+
* '789f573aecf8a9a4f0eb',
|
|
56
|
+
* '/-heart'
|
|
57
|
+
* );
|
|
58
|
+
*
|
|
59
|
+
* // Thu hồi biểu tượng cảm xúc
|
|
60
|
+
* const removeResult = await reactionService.reactToMessage(
|
|
61
|
+
* accessToken,
|
|
62
|
+
* '186729651760683225',
|
|
63
|
+
* '789f573aecf8a9a4f0eb',
|
|
64
|
+
* '/-remove'
|
|
65
|
+
* );
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
reactToMessage(accessToken: string, userId: string, messageId: string, reactIcon: ReactIcon): Promise<MessageReactionResponse>;
|
|
69
|
+
/**
|
|
70
|
+
* Thả icon "Thích" (Like) vào tin nhắn
|
|
71
|
+
*
|
|
72
|
+
* @param accessToken Access token của Official Account
|
|
73
|
+
* @param userId ID của người nhận
|
|
74
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
75
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
76
|
+
*/
|
|
77
|
+
likeMessage(accessToken: string, userId: string, messageId: string): Promise<MessageReactionResponse>;
|
|
78
|
+
/**
|
|
79
|
+
* Thả icon "Haha" vào tin nhắn
|
|
80
|
+
*
|
|
81
|
+
* @param accessToken Access token của Official Account
|
|
82
|
+
* @param userId ID của người nhận
|
|
83
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
84
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
85
|
+
*/
|
|
86
|
+
hahaMessage(accessToken: string, userId: string, messageId: string): Promise<MessageReactionResponse>;
|
|
87
|
+
/**
|
|
88
|
+
* Thả icon "Buồn" (Sad) vào tin nhắn
|
|
89
|
+
*
|
|
90
|
+
* @param accessToken Access token của Official Account
|
|
91
|
+
* @param userId ID của người nhận
|
|
92
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
93
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
94
|
+
*/
|
|
95
|
+
sadMessage(accessToken: string, userId: string, messageId: string): Promise<MessageReactionResponse>;
|
|
96
|
+
/**
|
|
97
|
+
* Thả icon "Mạnh mẽ" (Strong) vào tin nhắn
|
|
98
|
+
*
|
|
99
|
+
* @param accessToken Access token của Official Account
|
|
100
|
+
* @param userId ID của người nhận
|
|
101
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
102
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
103
|
+
*/
|
|
104
|
+
strongMessage(accessToken: string, userId: string, messageId: string): Promise<MessageReactionResponse>;
|
|
105
|
+
/**
|
|
106
|
+
* Thả icon "Yêu thích" (Love) vào tin nhắn
|
|
107
|
+
*
|
|
108
|
+
* @param accessToken Access token của Official Account
|
|
109
|
+
* @param userId ID của người nhận
|
|
110
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
111
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
112
|
+
*/
|
|
113
|
+
loveMessage(accessToken: string, userId: string, messageId: string): Promise<MessageReactionResponse>;
|
|
114
|
+
/**
|
|
115
|
+
* Thả icon "Ngạc nhiên" (Wow) vào tin nhắn
|
|
116
|
+
*
|
|
117
|
+
* @param accessToken Access token của Official Account
|
|
118
|
+
* @param userId ID của người nhận
|
|
119
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
120
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
121
|
+
*/
|
|
122
|
+
wowMessage(accessToken: string, userId: string, messageId: string): Promise<MessageReactionResponse>;
|
|
123
|
+
/**
|
|
124
|
+
* Thu hồi biểu tượng cảm xúc khỏi tin nhắn
|
|
125
|
+
*
|
|
126
|
+
* @param accessToken Access token của Official Account
|
|
127
|
+
* @param userId ID của người nhận
|
|
128
|
+
* @param messageId message_id của tin nhắn cần thu hồi cảm xúc
|
|
129
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
130
|
+
*/
|
|
131
|
+
removeReaction(accessToken: string, userId: string, messageId: string): Promise<MessageReactionResponse>;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Enum các loại biểu tượng cảm xúc hỗ trợ
|
|
135
|
+
*/
|
|
136
|
+
export declare enum ReactionIcon {
|
|
137
|
+
/** Thích (Like) */
|
|
138
|
+
LIKE = ":>",
|
|
139
|
+
/** Haha */
|
|
140
|
+
HAHA = "--b",
|
|
141
|
+
/** Buồn (Sad) */
|
|
142
|
+
SAD = ":-((",
|
|
143
|
+
/** Mạnh mẽ (Strong) */
|
|
144
|
+
STRONG = "/-strong",
|
|
145
|
+
/** Yêu thích (Love) */
|
|
146
|
+
HEART = "/-heart",
|
|
147
|
+
/** Ngạc nhiên (Wow) */
|
|
148
|
+
WOW_H = ":-h",
|
|
149
|
+
/** Wow */
|
|
150
|
+
WOW_O = ":o",
|
|
151
|
+
/** Thu hồi biểu tượng cảm xúc */
|
|
152
|
+
REMOVE = "/-remove"
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=message-reaction.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-reaction.service.d.ts","sourceRoot":"","sources":["../../src/services/message-reaction.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,SAAS,EACV,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;gBAEzC,MAAM,EAAE,UAAU;IAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,uBAAuB,CAAC;IAsEnC;;;;;;;OAOG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;IAInC;;;;;;;OAOG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;IAInC;;;;;;;OAOG;IACG,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;IAInC;;;;;;;OAOG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;IAInC;;;;;;;OAOG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;IAInC;;;;;;;OAOG;IACG,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;IAInC;;;;;;;OAOG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;CAGpC;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,mBAAmB;IACnB,IAAI,OAAO;IACX,WAAW;IACX,IAAI,QAAQ;IACZ,iBAAiB;IACjB,GAAG,SAAS;IACZ,uBAAuB;IACvB,MAAM,aAAa;IACnB,uBAAuB;IACvB,KAAK,YAAY;IACjB,uBAAuB;IACvB,KAAK,QAAQ;IACb,UAAU;IACV,KAAK,OAAO;IACZ,iCAAiC;IACjC,MAAM,aAAa;CACpB"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReactionIcon = exports.MessageReactionService = void 0;
|
|
4
|
+
const common_1 = require("../types/common");
|
|
5
|
+
/**
|
|
6
|
+
* Service xử lý API thả biểu tượng cảm xúc vào tin nhắn của Zalo Official Account
|
|
7
|
+
*
|
|
8
|
+
* Bao gồm chức năng:
|
|
9
|
+
* - Thả biểu tượng cảm xúc vào tin nhắn
|
|
10
|
+
* - Thu hồi biểu tượng cảm xúc
|
|
11
|
+
*
|
|
12
|
+
* ĐIỀU KIỆN SỬ DỤNG:
|
|
13
|
+
*
|
|
14
|
+
* 1. QUYỀN TRUY CẬP:
|
|
15
|
+
* - Cần quyền: Gửi tin nhắn / Thả biểu tượng cảm xúc vào tin nhắn
|
|
16
|
+
*
|
|
17
|
+
* 2. GIỚI HẠN:
|
|
18
|
+
* - Một message_id chỉ được thả tối đa 50 biểu tượng cảm xúc
|
|
19
|
+
* - API này KHÔNG bị tính vào quota chủ động hàng tháng
|
|
20
|
+
*
|
|
21
|
+
* 3. CÁC BIỂU TƯỢNG CẢM XÚC HỖ TRỢ:
|
|
22
|
+
* - :> (Thích - Like)
|
|
23
|
+
* - --b (Haha)
|
|
24
|
+
* - :-(( (Buồn - Sad)
|
|
25
|
+
* - /-strong (Mạnh mẽ - Strong)
|
|
26
|
+
* - /-heart (Yêu thích - Love)
|
|
27
|
+
* - :-h (Ngạc nhiên - Wow)
|
|
28
|
+
* - :o (Wow)
|
|
29
|
+
* - /-remove (Thu hồi biểu tượng cảm xúc)
|
|
30
|
+
*/
|
|
31
|
+
class MessageReactionService {
|
|
32
|
+
constructor(client) {
|
|
33
|
+
this.client = client;
|
|
34
|
+
this.endpoint = "https://openapi.zalo.me/v2.0/oa/message";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Thả biểu tượng cảm xúc vào tin nhắn
|
|
38
|
+
*
|
|
39
|
+
* @param accessToken Access token của Official Account
|
|
40
|
+
* @param userId ID của người nhận
|
|
41
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
42
|
+
* @param reactIcon Biểu tượng cảm xúc
|
|
43
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Thả icon tim
|
|
48
|
+
* const result = await reactionService.reactToMessage(
|
|
49
|
+
* accessToken,
|
|
50
|
+
* '186729651760683225',
|
|
51
|
+
* '789f573aecf8a9a4f0eb',
|
|
52
|
+
* '/-heart'
|
|
53
|
+
* );
|
|
54
|
+
*
|
|
55
|
+
* // Thu hồi biểu tượng cảm xúc
|
|
56
|
+
* const removeResult = await reactionService.reactToMessage(
|
|
57
|
+
* accessToken,
|
|
58
|
+
* '186729651760683225',
|
|
59
|
+
* '789f573aecf8a9a4f0eb',
|
|
60
|
+
* '/-remove'
|
|
61
|
+
* );
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
async reactToMessage(accessToken, userId, messageId, reactIcon) {
|
|
65
|
+
try {
|
|
66
|
+
// Validate inputs
|
|
67
|
+
if (!userId || userId.trim().length === 0) {
|
|
68
|
+
throw new common_1.ZaloSDKError("User ID không được để trống", -1);
|
|
69
|
+
}
|
|
70
|
+
if (!messageId || messageId.trim().length === 0) {
|
|
71
|
+
throw new common_1.ZaloSDKError("Message ID không được để trống", -1);
|
|
72
|
+
}
|
|
73
|
+
// Danh sách các react icon hợp lệ
|
|
74
|
+
const validIcons = [
|
|
75
|
+
":>",
|
|
76
|
+
"--b",
|
|
77
|
+
":-((",
|
|
78
|
+
"/-strong",
|
|
79
|
+
"/-heart",
|
|
80
|
+
":-h",
|
|
81
|
+
":o",
|
|
82
|
+
"/-remove",
|
|
83
|
+
];
|
|
84
|
+
if (!validIcons.includes(reactIcon)) {
|
|
85
|
+
throw new common_1.ZaloSDKError(`Biểu tượng cảm xúc không hợp lệ. Các giá trị hợp lệ: ${validIcons.join(", ")}`, -1);
|
|
86
|
+
}
|
|
87
|
+
const request = {
|
|
88
|
+
recipient: {
|
|
89
|
+
user_id: userId,
|
|
90
|
+
},
|
|
91
|
+
sender_action: {
|
|
92
|
+
react_icon: reactIcon,
|
|
93
|
+
react_message_id: messageId,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
const result = await this.client.apiPost(this.endpoint, accessToken, request);
|
|
97
|
+
if (result.error !== 0) {
|
|
98
|
+
throw new common_1.ZaloSDKError(result.message || "Failed to react to message", result.error, result);
|
|
99
|
+
}
|
|
100
|
+
if (!result.data) {
|
|
101
|
+
throw new common_1.ZaloSDKError("No response data received", -1);
|
|
102
|
+
}
|
|
103
|
+
return result.data;
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
if (error instanceof common_1.ZaloSDKError) {
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
throw new common_1.ZaloSDKError(`Failed to react to message: ${error.message}`, -1, error);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Thả icon "Thích" (Like) vào tin nhắn
|
|
114
|
+
*
|
|
115
|
+
* @param accessToken Access token của Official Account
|
|
116
|
+
* @param userId ID của người nhận
|
|
117
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
118
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
119
|
+
*/
|
|
120
|
+
async likeMessage(accessToken, userId, messageId) {
|
|
121
|
+
return this.reactToMessage(accessToken, userId, messageId, ":>");
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Thả icon "Haha" vào tin nhắn
|
|
125
|
+
*
|
|
126
|
+
* @param accessToken Access token của Official Account
|
|
127
|
+
* @param userId ID của người nhận
|
|
128
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
129
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
130
|
+
*/
|
|
131
|
+
async hahaMessage(accessToken, userId, messageId) {
|
|
132
|
+
return this.reactToMessage(accessToken, userId, messageId, "--b");
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Thả icon "Buồn" (Sad) vào tin nhắn
|
|
136
|
+
*
|
|
137
|
+
* @param accessToken Access token của Official Account
|
|
138
|
+
* @param userId ID của người nhận
|
|
139
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
140
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
141
|
+
*/
|
|
142
|
+
async sadMessage(accessToken, userId, messageId) {
|
|
143
|
+
return this.reactToMessage(accessToken, userId, messageId, ":-((");
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Thả icon "Mạnh mẽ" (Strong) vào tin nhắn
|
|
147
|
+
*
|
|
148
|
+
* @param accessToken Access token của Official Account
|
|
149
|
+
* @param userId ID của người nhận
|
|
150
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
151
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
152
|
+
*/
|
|
153
|
+
async strongMessage(accessToken, userId, messageId) {
|
|
154
|
+
return this.reactToMessage(accessToken, userId, messageId, "/-strong");
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Thả icon "Yêu thích" (Love) vào tin nhắn
|
|
158
|
+
*
|
|
159
|
+
* @param accessToken Access token của Official Account
|
|
160
|
+
* @param userId ID của người nhận
|
|
161
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
162
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
163
|
+
*/
|
|
164
|
+
async loveMessage(accessToken, userId, messageId) {
|
|
165
|
+
return this.reactToMessage(accessToken, userId, messageId, "/-heart");
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Thả icon "Ngạc nhiên" (Wow) vào tin nhắn
|
|
169
|
+
*
|
|
170
|
+
* @param accessToken Access token của Official Account
|
|
171
|
+
* @param userId ID của người nhận
|
|
172
|
+
* @param messageId message_id của tin nhắn cần thả cảm xúc
|
|
173
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
174
|
+
*/
|
|
175
|
+
async wowMessage(accessToken, userId, messageId) {
|
|
176
|
+
return this.reactToMessage(accessToken, userId, messageId, ":-h");
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Thu hồi biểu tượng cảm xúc khỏi tin nhắn
|
|
180
|
+
*
|
|
181
|
+
* @param accessToken Access token của Official Account
|
|
182
|
+
* @param userId ID của người nhận
|
|
183
|
+
* @param messageId message_id của tin nhắn cần thu hồi cảm xúc
|
|
184
|
+
* @returns Thông tin tin nhắn phản hồi
|
|
185
|
+
*/
|
|
186
|
+
async removeReaction(accessToken, userId, messageId) {
|
|
187
|
+
return this.reactToMessage(accessToken, userId, messageId, "/-remove");
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.MessageReactionService = MessageReactionService;
|
|
191
|
+
/**
|
|
192
|
+
* Enum các loại biểu tượng cảm xúc hỗ trợ
|
|
193
|
+
*/
|
|
194
|
+
var ReactionIcon;
|
|
195
|
+
(function (ReactionIcon) {
|
|
196
|
+
/** Thích (Like) */
|
|
197
|
+
ReactionIcon["LIKE"] = ":>";
|
|
198
|
+
/** Haha */
|
|
199
|
+
ReactionIcon["HAHA"] = "--b";
|
|
200
|
+
/** Buồn (Sad) */
|
|
201
|
+
ReactionIcon["SAD"] = ":-((";
|
|
202
|
+
/** Mạnh mẽ (Strong) */
|
|
203
|
+
ReactionIcon["STRONG"] = "/-strong";
|
|
204
|
+
/** Yêu thích (Love) */
|
|
205
|
+
ReactionIcon["HEART"] = "/-heart";
|
|
206
|
+
/** Ngạc nhiên (Wow) */
|
|
207
|
+
ReactionIcon["WOW_H"] = ":-h";
|
|
208
|
+
/** Wow */
|
|
209
|
+
ReactionIcon["WOW_O"] = ":o";
|
|
210
|
+
/** Thu hồi biểu tượng cảm xúc */
|
|
211
|
+
ReactionIcon["REMOVE"] = "/-remove";
|
|
212
|
+
})(ReactionIcon || (exports.ReactionIcon = ReactionIcon = {}));
|
|
213
|
+
//# sourceMappingURL=message-reaction.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-reaction.service.js","sourceRoot":"","sources":["../../src/services/message-reaction.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { ZaloClient } from "../clients/zalo-client";
|
|
2
|
+
import { MessageRecipient, MiniAppMessageRequest, MiniAppMessageResponse } from "../types/message";
|
|
3
|
+
/**
|
|
4
|
+
* Request gửi tin nhắn miniapp
|
|
5
|
+
*/
|
|
6
|
+
export interface MiniAppSendMessageRequest {
|
|
7
|
+
recipient: MessageRecipient;
|
|
8
|
+
message: MiniAppMessageRequest;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Service xử lý API gửi tin nhắn miniapp của Zalo Official Account
|
|
12
|
+
*
|
|
13
|
+
* Bao gồm chức năng:
|
|
14
|
+
* - Gửi tin nhắn miniapp với template tùy chỉnh
|
|
15
|
+
*
|
|
16
|
+
* ĐIỀU KIỆN SỬ DỤNG:
|
|
17
|
+
*
|
|
18
|
+
* 1. QUYỀN TRUY CẬP:
|
|
19
|
+
* - Cần quyền: Gửi tin và thông báo qua OA
|
|
20
|
+
*
|
|
21
|
+
* 2. THÔNG TIN BẮT BUỘC:
|
|
22
|
+
* - access_token: Token của OA
|
|
23
|
+
* - miniapp_message_token: Token được sinh ra từ miniapp, đại diện cho miniapp
|
|
24
|
+
* - user_id: Phải khớp với user đã tương tác với Miniapp
|
|
25
|
+
* - template_type: Token của template miniapp
|
|
26
|
+
* - template_data: Các thuộc tính của mẫu tin (được quy định theo từng template_type)
|
|
27
|
+
*
|
|
28
|
+
* 3. QUOTA (HẠN MỨC):
|
|
29
|
+
* API này có thể trả về thông tin quota trong response:
|
|
30
|
+
* - reply: Tin Tư vấn miễn phí trong hạn mức 8 tin 48 giờ
|
|
31
|
+
* - sub_quota: Tin Tư vấn miễn phí theo gói dịch vụ OA
|
|
32
|
+
* - purchase_quota: Tin trong hạn mức gói tính năng lẻ
|
|
33
|
+
* - reward_quota: Tin trong hạn mức Redeem code
|
|
34
|
+
*
|
|
35
|
+
* Các loại quota không có thông tin chi tiết:
|
|
36
|
+
* - Không có quota info: Tin không tính quota (ví dụ: tin trong 48h không còn hạn mức)
|
|
37
|
+
*/
|
|
38
|
+
export declare class MiniAppMessageService {
|
|
39
|
+
private readonly client;
|
|
40
|
+
private readonly endpoint;
|
|
41
|
+
constructor(client: ZaloClient);
|
|
42
|
+
/**
|
|
43
|
+
* Gửi tin nhắn miniapp đến người dùng
|
|
44
|
+
*
|
|
45
|
+
* @param accessToken Access token của Official Account
|
|
46
|
+
* @param miniappMessageToken Token được sinh ra từ miniapp
|
|
47
|
+
* @param userId ID của người nhận (phải khớp với user đã tương tác với Miniapp)
|
|
48
|
+
* @param templateType Token của template miniapp
|
|
49
|
+
* @param templateData Các thuộc tính của mẫu tin (tuỳ theo từng template_type)
|
|
50
|
+
* @returns Thông tin tin nhắn đã gửi (bao gồm quota info nếu có)
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const result = await miniappService.sendMessage(
|
|
55
|
+
* accessToken,
|
|
56
|
+
* 'miniapp_message_token',
|
|
57
|
+
* '4153814862349165539',
|
|
58
|
+
* 'FB0001',
|
|
59
|
+
* {
|
|
60
|
+
* customer_name: 'Tùng Nguyễn',
|
|
61
|
+
* queue_number: '12',
|
|
62
|
+
* note: 'Khách hàng thanh toán bằng thẻ',
|
|
63
|
+
* buttons: [
|
|
64
|
+
* {
|
|
65
|
+
* title: 'Chi tiết đơn hàng',
|
|
66
|
+
* image_icon: 'https://stc-zmp.zadn.vn/oa/basket.png',
|
|
67
|
+
* url: 'https://zalo.me/s/194839900003483517/'
|
|
68
|
+
* },
|
|
69
|
+
* {
|
|
70
|
+
* title: 'Đánh giá',
|
|
71
|
+
* image_icon: 'https://stc-zmp.zadn.vn/oa/star.png',
|
|
72
|
+
* url: 'https://zalo.me/s/194839900003483517/'
|
|
73
|
+
* }
|
|
74
|
+
* ]
|
|
75
|
+
* }
|
|
76
|
+
* );
|
|
77
|
+
*
|
|
78
|
+
* // Kiểm tra quota
|
|
79
|
+
* if (result.quota) {
|
|
80
|
+
* console.log('Quota type:', result.quota.quota_type);
|
|
81
|
+
* console.log('Remaining:', result.quota.remain);
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
sendMessage(accessToken: string, miniappMessageToken: string, userId: string, templateType: string, templateData: Record<string, any>): Promise<MiniAppMessageResponse>;
|
|
86
|
+
/**
|
|
87
|
+
* Gửi tin nhắn miniapp với template queue notification
|
|
88
|
+
* (Template thông báo số thứ tự trong hàng đợi)
|
|
89
|
+
*
|
|
90
|
+
* @param accessToken Access token của Official Account
|
|
91
|
+
* @param miniappMessageToken Token từ miniapp
|
|
92
|
+
* @param userId ID của người nhận
|
|
93
|
+
* @param customerName Tên khách hàng
|
|
94
|
+
* @param queueNumber Số thứ tự trong hàng đợi
|
|
95
|
+
* @param note Ghi chú thêm
|
|
96
|
+
* @param buttons Danh sách các button kèm theo
|
|
97
|
+
* @returns Thông tin tin nhắn đã gửi
|
|
98
|
+
*/
|
|
99
|
+
sendQueueNotification(accessToken: string, miniappMessageToken: string, userId: string, customerName: string, queueNumber: string, note: string, buttons?: Array<{
|
|
100
|
+
title: string;
|
|
101
|
+
image_icon: string;
|
|
102
|
+
url: string;
|
|
103
|
+
}>): Promise<MiniAppMessageResponse>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Enum các loại quota (hạn mức) khi gửi tin nhắn miniapp
|
|
107
|
+
*/
|
|
108
|
+
export declare enum MiniAppQuotaType {
|
|
109
|
+
/** Tin Tư vấn miễn phí trong hạn mức 8 tin 48 giờ */
|
|
110
|
+
REPLY = "reply",
|
|
111
|
+
/** Tin Tư vấn miễn phí theo gói dịch vụ OA */
|
|
112
|
+
SUB_QUOTA = "sub_quota",
|
|
113
|
+
/** Tin trong hạn mức gói tính năng lẻ */
|
|
114
|
+
PURCHASE_QUOTA = "purchase_quota",
|
|
115
|
+
/** Tin trong hạn mức Redeem code */
|
|
116
|
+
REWARD_QUOTA = "reward_quota"
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Enum các loại owner sở hữu Quota Package
|
|
120
|
+
*/
|
|
121
|
+
export declare enum QuotaOwnerType {
|
|
122
|
+
/** Thực thể sở hữu là OA */
|
|
123
|
+
OA = "OA",
|
|
124
|
+
/** Thực thể sở hữu là App */
|
|
125
|
+
APP = "App"
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=miniapp-message.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miniapp-message.service.d.ts","sourceRoot":"","sources":["../../src/services/miniapp-message.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;gBAEpD,MAAM,EAAE,UAAU;IAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,OAAO,CAAC,sBAAsB,CAAC;IAoElC;;;;;;;;;;;;OAYG;IACG,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,GACD,OAAO,CAAC,sBAAsB,CAAC;CAmBnC;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,qDAAqD;IACrD,KAAK,UAAU;IACf,8CAA8C;IAC9C,SAAS,cAAc;IACvB,yCAAyC;IACzC,cAAc,mBAAmB;IACjC,oCAAoC;IACpC,YAAY,iBAAiB;CAC9B;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,4BAA4B;IAC5B,EAAE,OAAO;IACT,6BAA6B;IAC7B,GAAG,QAAQ;CACZ"}
|