redai-automation-web-sdk
Version:
TypeScript SDK for RedAI Automation Web API - Zalo Personal automation, messaging, advanced sticker search, and bulk operations. 100% compatible with automation-web backend. v1.8.0: Added SessionProxyService for managing proxy assignments to sessions with
451 lines • 19.9 kB
TypeScript
/**
* Zalo Personal Webhook Events SDK
* Chuẩn hóa types cho tất cả webhook events từ automation-web
* Source: automation-web/src/shared/types/zalo-webhook-events.types.ts
*/
/**
* Thread Type enum
*/
export declare enum ZaloThreadType {
USER = "user",
GROUP = "group"
}
/**
* Event Type enum - Chuẩn hóa tất cả event types
*/
export declare enum ZaloWebhookEventType {
TEXT_MESSAGE_SENT_TO_USER = "text-message-sent-to-user",// Gửi tin nhắn text cho user cá nhân
TEXT_MESSAGE_SENT_TO_GROUP = "text-message-sent-to-group",// Gửi tin nhắn text vào nhóm
TEXT_MESSAGE_RECEIVED_FROM_USER = "text-message-received-from-user",// Nhận tin nhắn text từ user cá nhân
TEXT_MESSAGE_RECEIVED_FROM_GROUP = "text-message-received-from-group",// Nhận tin nhắn text từ nhóm
IMAGE_MESSAGE_SENT_TO_USER = "image-message-sent-to-user",// Gửi hình ảnh cho user cá nhân
IMAGE_MESSAGE_SENT_TO_GROUP = "image-message-sent-to-group",// Gửi hình ảnh vào nhóm
IMAGE_MESSAGE_RECEIVED_FROM_USER = "image-message-received-from-user",// Nhận hình ảnh từ user cá nhân
IMAGE_MESSAGE_RECEIVED_FROM_GROUP = "image-message-received-from-group",// Nhận hình ảnh từ nhóm
VIDEO_MESSAGE_SENT_TO_USER = "video-message-sent-to-user",// Gửi video cho user cá nhân
VIDEO_MESSAGE_SENT_TO_GROUP = "video-message-sent-to-group",// Gửi video vào nhóm
VIDEO_MESSAGE_RECEIVED_FROM_USER = "video-message-received-from-user",// Nhận video từ user cá nhân
VIDEO_MESSAGE_RECEIVED_FROM_GROUP = "video-message-received-from-group",// Nhận video từ nhóm
VOICE_MESSAGE_SENT_TO_USER = "voice-message-sent-to-user",// Gửi voice/audio cho user cá nhân
VOICE_MESSAGE_SENT_TO_GROUP = "voice-message-sent-to-group",// Gửi voice/audio vào nhóm
VOICE_MESSAGE_RECEIVED_FROM_USER = "voice-message-received-from-user",// Nhận voice/audio từ user cá nhân
VOICE_MESSAGE_RECEIVED_FROM_GROUP = "voice-message-received-from-group",// Nhận voice/audio từ nhóm
FILE_MESSAGE_SENT_TO_USER = "file-message-sent-to-user",// Gửi file cho user cá nhân
FILE_MESSAGE_SENT_TO_GROUP = "file-message-sent-to-group",// Gửi file vào nhóm
FILE_MESSAGE_RECEIVED_FROM_USER = "file-message-received-from-user",// Nhận file từ user cá nhân
FILE_MESSAGE_RECEIVED_FROM_GROUP = "file-message-received-from-group",// Nhận file từ nhóm
STICKER_MESSAGE_SENT_TO_USER = "sticker-message-sent-to-user",// Gửi sticker cho user cá nhân
STICKER_MESSAGE_SENT_TO_GROUP = "sticker-message-sent-to-group",// Gửi sticker vào nhóm
STICKER_MESSAGE_RECEIVED_FROM_USER = "sticker-message-received-from-user",// Nhận sticker từ user cá nhân
STICKER_MESSAGE_RECEIVED_FROM_GROUP = "sticker-message-received-from-group",// Nhận sticker từ nhóm
LOCATION_MESSAGE_SENT_TO_USER = "location-message-sent-to-user",// Gửi vị trí cho user cá nhân
LOCATION_MESSAGE_SENT_TO_GROUP = "location-message-sent-to-group",// Gửi vị trí vào nhóm
LOCATION_MESSAGE_RECEIVED_FROM_USER = "location-message-received-from-user",// Nhận vị trí từ user cá nhân
LOCATION_MESSAGE_RECEIVED_FROM_GROUP = "location-message-received-from-group",// Nhận vị trí từ nhóm
GIF_MESSAGE_SENT_TO_USER = "gif-message-sent-to-user",// Gửi GIF cho user cá nhân
GIF_MESSAGE_SENT_TO_GROUP = "gif-message-sent-to-group",// Gửi GIF vào nhóm
GIF_MESSAGE_RECEIVED_FROM_USER = "gif-message-received-from-user",// Nhận GIF từ user cá nhân
GIF_MESSAGE_RECEIVED_FROM_GROUP = "gif-message-received-from-group",// Nhận GIF từ nhóm
LINK_MESSAGE_SENT_TO_USER = "link-message-sent-to-user",// Gửi link cho user cá nhân
LINK_MESSAGE_SENT_TO_GROUP = "link-message-sent-to-group",// Gửi link vào nhóm
LINK_MESSAGE_RECEIVED_FROM_USER = "link-message-received-from-user",// Nhận link từ user cá nhân
LINK_MESSAGE_RECEIVED_FROM_GROUP = "link-message-received-from-group",// Nhận link từ nhóm
DOODLE_MESSAGE_SENT_TO_USER = "doodle-message-sent-to-user",// Gửi doodle/vẽ cho user cá nhân
DOODLE_MESSAGE_SENT_TO_GROUP = "doodle-message-sent-to-group",// Gửi doodle/vẽ vào nhóm
DOODLE_MESSAGE_RECEIVED_FROM_USER = "doodle-message-received-from-user",// Nhận doodle/vẽ từ user cá nhân
DOODLE_MESSAGE_RECEIVED_FROM_GROUP = "doodle-message-received-from-group",// Nhận doodle/vẽ từ nhóm
RECOMMENDED_MESSAGE_SENT_TO_USER = "recommended-message-sent-to-user",
RECOMMENDED_MESSAGE_SENT_TO_GROUP = "recommended-message-sent-to-group",
RECOMMENDED_MESSAGE_RECEIVED_FROM_USER = "recommended-message-received-from-user",
RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP = "recommended-message-received-from-group",
OLD_MESSAGES = "old-messages",// Lấy tin nhắn cũ từ lịch sử
TYPING_BY_SELF_IN_USER = "typing-by-self-in-user",// Mình đang soạn tin trong chat cá nhân
TYPING_BY_SELF_IN_GROUP = "typing-by-self-in-group",// Mình đang soạn tin trong nhóm
TYPING_BY_OTHER_IN_USER = "typing-by-other-in-user",// Người khác đang soạn tin trong chat cá nhân
TYPING_BY_OTHER_IN_GROUP = "typing-by-other-in-group",// Người khác đang soạn tin trong nhóm
SEEN_MESSAGES_BY_SELF_IN_USER = "seen-messages-by-self-in-user",// Mình đã xem tin nhắn trong chat cá nhân
SEEN_MESSAGES_BY_SELF_IN_GROUP = "seen-messages-by-self-in-group",// Mình đã xem tin nhắn trong nhóm
SEEN_MESSAGES_BY_OTHER_IN_USER = "seen-messages-by-other-in-user",// Người khác đã xem tin nhắn trong chat cá nhân
SEEN_MESSAGES_BY_OTHER_IN_GROUP = "seen-messages-by-other-in-group",// Người khác đã xem tin nhắn trong nhóm
DELIVERED_MESSAGES_BY_SELF_IN_USER = "delivered-messages-by-self-in-user",// Tin nhắn của mình đã được gửi đến user cá nhân
DELIVERED_MESSAGES_BY_SELF_IN_GROUP = "delivered-messages-by-self-in-group",// Tin nhắn của mình đã được gửi đến nhóm
DELIVERED_MESSAGES_BY_OTHER_IN_USER = "delivered-messages-by-other-in-user",// Tin nhắn của người khác đã được gửi đến mình (chat cá nhân)
DELIVERED_MESSAGES_BY_OTHER_IN_GROUP = "delivered-messages-by-other-in-group",// Tin nhắn của người khác đã được gửi đến nhóm
REACTION_BY_SELF_IN_USER = "reaction-by-self-in-user",// Mình react tin nhắn trong chat cá nhân
REACTION_BY_SELF_IN_GROUP = "reaction-by-self-in-group",// Mình react tin nhắn trong nhóm
REACTION_BY_OTHER_IN_USER = "reaction-by-other-in-user",// Người khác react tin nhắn trong chat cá nhân
REACTION_BY_OTHER_IN_GROUP = "reaction-by-other-in-group",// Người khác react tin nhắn trong nhóm
OLD_REACTIONS_BY_SELF_IN_USER = "old-reactions-by-self-in-user",// Lấy reaction cũ của mình trong chat cá nhân
OLD_REACTIONS_BY_SELF_IN_GROUP = "old-reactions-by-self-in-group",// Lấy reaction cũ của mình trong nhóm
OLD_REACTIONS_BY_OTHER_IN_USER = "old-reactions-by-other-in-user",// Lấy reaction cũ của người khác trong chat cá nhân
OLD_REACTIONS_BY_OTHER_IN_GROUP = "old-reactions-by-other-in-group",// Lấy reaction cũ của người khác trong nhóm
FRIEND_EVENT_ADD = "friend-event-add",// Thêm bạn bè
FRIEND_EVENT_REMOVE = "friend-event-remove",// Xóa bạn bè
FRIEND_EVENT_REQUEST = "friend-event-request",// Gửi lời mời kết bạn
FRIEND_EVENT_UNDO_REQUEST = "friend-event-undo-request",// Hủy lời mời kết bạn
FRIEND_EVENT_REJECT_REQUEST = "friend-event-reject-request",// Từ chối lời mời kết bạn
FRIEND_EVENT_SEEN_REQUEST = "friend-event-seen-request",// Đã xem lời mời kết bạn
FRIEND_EVENT_BLOCK = "friend-event-block",// Chặn bạn bè
FRIEND_EVENT_UNBLOCK = "friend-event-unblock",// Bỏ chặn bạn bè
FRIEND_EVENT_BLOCK_CALL = "friend-event-block-call",// Chặn cuộc gọi từ bạn bè
FRIEND_EVENT_UNBLOCK_CALL = "friend-event-unblock-call",// Bỏ chặn cuộc gọi từ bạn bè
FRIEND_EVENT_PIN_UNPIN = "friend-event-pin-unpin",// Ghim/bỏ ghim bạn bè
FRIEND_EVENT_PIN_CREATE = "friend-event-pin-create",// Tạo ghim bạn bè
FRIEND_EVENT_UNKNOWN = "friend-event-unknown",// Sự kiện bạn bè không xác định
GROUP_EVENT_JOIN_REQUEST = "group-event-join-request",// Yêu cầu tham gia nhóm
GROUP_EVENT_JOIN = "group-event-join",// Tham gia nhóm
GROUP_EVENT_LEAVE = "group-event-leave",// Rời khỏi nhóm
GROUP_EVENT_REMOVE_MEMBER = "group-event-remove-member",// Xóa thành viên khỏi nhóm
GROUP_EVENT_BLOCK_MEMBER = "group-event-block-member",// Chặn thành viên trong nhóm
GROUP_EVENT_UPDATE_SETTING = "group-event-update-setting",// Cập nhật cài đặt nhóm
GROUP_EVENT_UPDATE = "group-event-update",// Cập nhật thông tin nhóm
GROUP_EVENT_NEW_LINK = "group-event-new-link",// Tạo link mời nhóm mới
GROUP_EVENT_ADD_ADMIN = "group-event-add-admin",// Thêm admin nhóm
GROUP_EVENT_REMOVE_ADMIN = "group-event-remove-admin",// Xóa admin nhóm
GROUP_EVENT_NEW_PIN_TOPIC = "group-event-new-pin-topic",// Tạo chủ đề ghim mới
GROUP_EVENT_UPDATE_PIN_TOPIC = "group-event-update-pin-topic",// Cập nhật chủ đề ghim
GROUP_EVENT_REORDER_PIN_TOPIC = "group-event-reorder-pin-topic",// Sắp xếp lại chủ đề ghim
GROUP_EVENT_UPDATE_BOARD = "group-event-update-board",// Cập nhật bảng nhóm
GROUP_EVENT_REMOVE_BOARD = "group-event-remove-board",// Xóa bảng nhóm
GROUP_EVENT_UPDATE_TOPIC = "group-event-update-topic",// Cập nhật chủ đề
GROUP_EVENT_UNPIN_TOPIC = "group-event-unpin-topic",// Bỏ ghim chủ đề
GROUP_EVENT_REMOVE_TOPIC = "group-event-remove-topic",// Xóa chủ đề
GROUP_EVENT_ACCEPT_REMIND = "group-event-accept-remind",// Chấp nhận nhắc nhở
GROUP_EVENT_REJECT_REMIND = "group-event-reject-remind",// Từ chối nhắc nhở
GROUP_EVENT_REMIND_TOPIC = "group-event-remind-topic",// Nhắc nhở về chủ đề
GROUP_EVENT_UPDATE_AVATAR = "group-event-update-avatar",// Cập nhật avatar nhóm
GROUP_EVENT_UNKNOWN = "group-event-unknown",// Sự kiện nhóm không xác định
UNDO_BY_SELF_IN_USER = "undo-by-self-in-user",// Mình thu hồi tin nhắn trong chat cá nhân
UNDO_BY_SELF_IN_GROUP = "undo-by-self-in-group",// Mình thu hồi tin nhắn trong nhóm
UNDO_BY_OTHER_IN_USER = "undo-by-other-in-user",// Người khác thu hồi tin nhắn trong chat cá nhân
UNDO_BY_OTHER_IN_GROUP = "undo-by-other-in-group",// Người khác thu hồi tin nhắn trong nhóm
CONNECTION_STATUS_CONNECTED = "connection-status-connected",// Đã kết nối thành công
CONNECTION_STATUS_DISCONNECTED = "connection-status-disconnected",// Mất kết nối
CONNECTION_STATUS_RECONNECTING = "connection-status-reconnecting",// Đang kết nối lại
CONNECTION_STATUS_LOGGED_OUT = "connection-status-logged-out",// Đã đăng xuất
UPLOAD_ATTACHMENT_IN_PROGRESS = "upload-attachment-in-progress",// Đang upload file
UPLOAD_ATTACHMENT_COMPLETED = "upload-attachment-completed",// Upload file thành công
UPLOAD_ATTACHMENT_FAILED = "upload-attachment-failed",// Upload file thất bại
CIPHER_KEY_UPDATED_IN_USER = "cipher-key-updated-in-user",// Cập nhật cipher key trong chat cá nhân
CIPHER_KEY_UPDATED_IN_GROUP = "cipher-key-updated-in-group",// Cập nhật cipher key trong nhóm
CIPHER_KEY_EXPIRED_IN_USER = "cipher-key-expired-in-user",// Cipher key hết hạn trong chat cá nhân
CIPHER_KEY_EXPIRED_IN_GROUP = "cipher-key-expired-in-group",// Cipher key hết hạn trong nhóm
ERROR_SYSTEM = "error-system",// Lỗi hệ thống
ERROR_NETWORK = "error-network",// Lỗi mạng
ERROR_AUTHENTICATION = "error-authentication",// Lỗi xác thực
ERROR_VALIDATION = "error-validation",// Lỗi validation dữ liệu
ERROR_BUSINESS_LOGIC = "error-business-logic",// Lỗi logic nghiệp vụ
ERROR_UNKNOWN = "error-unknown"
}
/**
* Base webhook event interface
*/
export interface BaseZaloWebhookEvent {
sessionId: string;
userUuid: string;
timestamp: number;
eventType: ZaloWebhookEventType;
metadata?: Record<string, any>;
}
/**
* Attachment content interface
*/
export interface ZaloAttachmentContent {
title: string;
description: string;
href: string;
thumb: string;
childnumber: number;
action: string;
params: string;
type: string;
}
/**
* Message mention interface
*/
export interface ZaloMessageMention {
uid: string;
name: string;
startIndex: number;
length: number;
}
/**
* Message quote interface
*/
export interface ZaloMessageQuote {
ownerId: number;
cliMsgId: number;
globalMsgId: number;
cliMsgType: number;
ts: number;
msg: string;
attach: string;
fromD: string;
ttl: number;
}
/**
* Complete message data từ SDK - FULL FIELDS
*/
export interface ZaloMessageData {
actionId: string;
msgId: string;
cliMsgId: string;
msgType: string;
uidFrom: string;
idTo: string;
dName: string;
ts: string;
status: number;
content: string | ZaloAttachmentContent | Record<string, any>;
notify: string;
ttl: number;
userId: string;
uin: string;
realMsgId: string;
topOut: string;
topOutTimeOut: string;
topOutImprTimeOut: string;
propertyExt?: {
color: number;
size: number;
type: number;
subType: number;
ext: string;
};
paramsExt: {
countUnread: number;
containType: number;
platformType: number;
};
cmd: number;
st: number;
at: number;
mentions?: ZaloMessageMention[];
quote?: ZaloMessageQuote;
}
/**
* Message Type enum từ SDK - đồng nhất với automation-web
*/
export declare enum ZaloMessageType {
TEXT = "webchat",
VOICE = "chat.voice",
PHOTO = "chat.photo",
STICKER = "chat.sticker",
DOODLE = "chat.doodle",
RECOMMENDED = "chat.recommended",
LINK = "chat.link",
VIDEO = "chat.video.msg",
FILE = "share.file",
GIF = "chat.gif",
LOCATION = "chat.location.new"
}
/**
* Message Category enum
*/
export declare enum ZaloMessageCategory {
TEXT = "text",
MEDIA = "media",
FILE = "file",
SOCIAL = "social",
OTHER = "other"
}
/**
* Base message event data - chứa tất cả fields từ SDK
*/
export interface BaseMessageEventData extends ZaloMessageData {
threadId: string;
threadType: ZaloThreadType;
isSelf: boolean;
messageType: ZaloMessageType;
messageCategory: ZaloMessageCategory;
hasAttachment: boolean;
}
/**
* TEXT message data - chỉ chứa text content
*/
export interface ZaloTextMessageData extends BaseMessageEventData {
messageType: ZaloMessageType.TEXT;
messageCategory: ZaloMessageCategory.TEXT;
hasAttachment: false;
content: string;
}
/**
* IMAGE message data - chứa thông tin hình ảnh
*/
export interface ZaloImageMessageData extends BaseMessageEventData {
messageType: ZaloMessageType.PHOTO;
messageCategory: ZaloMessageCategory.MEDIA;
hasAttachment: true;
content: ZaloAttachmentContent & {
type: 'image';
width?: number;
height?: number;
fileSize?: number;
mimeType?: string;
};
}
/**
* VIDEO message data - chứa thông tin video
*/
export interface ZaloVideoMessageData extends BaseMessageEventData {
messageType: ZaloMessageType.VIDEO;
messageCategory: ZaloMessageCategory.MEDIA;
hasAttachment: true;
content: ZaloAttachmentContent & {
type: 'video';
duration?: number;
width?: number;
height?: number;
fileSize?: number;
mimeType?: string;
};
}
/**
* VOICE message data - chứa thông tin voice/audio
*/
export interface ZaloVoiceMessageData extends BaseMessageEventData {
messageType: ZaloMessageType.VOICE;
messageCategory: ZaloMessageCategory.MEDIA;
hasAttachment: true;
content: ZaloAttachmentContent & {
type: 'voice' | 'audio';
duration?: number;
fileSize?: number;
mimeType?: string;
};
}
/**
* FILE message data - chứa thông tin file
*/
export interface ZaloFileMessageData extends BaseMessageEventData {
messageType: ZaloMessageType.FILE;
messageCategory: ZaloMessageCategory.FILE;
hasAttachment: true;
content: ZaloAttachmentContent & {
type: 'file';
fileName?: string;
fileSize?: number;
mimeType?: string;
extension?: string;
};
}
/**
* STICKER message data - chứa thông tin sticker
*/
export interface ZaloStickerMessageData extends BaseMessageEventData {
messageType: ZaloMessageType.STICKER;
messageCategory: ZaloMessageCategory.SOCIAL;
hasAttachment: true;
content: ZaloAttachmentContent & {
type: 'sticker';
stickerId?: string;
stickerPackId?: string;
width?: number;
height?: number;
};
}
/**
* TYPING event data - chứa thông tin typing status
*/
export interface ZaloTypingEventData {
uid: string;
ts: string;
isPC: number;
gid?: string;
threadId: string;
threadType: ZaloThreadType;
fromId: string;
fromName: string;
isTyping: boolean;
}
/**
* REACTION event data - chứa thông tin reaction
*/
export interface ZaloReactionEventData {
msgId: string;
uidFrom: string;
dName: string;
ts: string;
content: {
rIcon: ZaloReactionType;
rType: number;
};
realMsgId: string;
groupId?: string;
threadId: string;
threadType: ZaloThreadType;
fromId: string;
fromName: string;
reaction: string;
timestamp: number;
}
/**
* Reaction types enum từ SDK
*/
export declare enum ZaloReactionType {
LIKE = "/-heart",
LOVE = "/-heart",
HAHA = ":))",
WOW = ":-o",
SAD = ":(",
ANGRY = ":-@",
NONE = ""
}
/**
* UNDO event data - chứa thông tin thu hồi tin nhắn
*/
export interface ZaloUndoEventData {
msgId: string;
cliMsgId: string;
uidFrom: string;
idTo: string;
dName: string;
ts: string;
realMsgId: string;
groupId?: string;
threadId: string;
threadType: ZaloThreadType;
fromId: string;
fromName: string;
undoMsgId: string;
timestamp: number;
}
/**
* CONNECTION STATUS event data - chứa thông tin trạng thái kết nối
*/
export interface ZaloConnectionStatusEventData {
status: ZaloConnectionStatus;
reason?: string;
timestamp: number;
sessionInfo?: {
sessionId: string;
userUuid: string;
userId?: string;
};
}
/**
* Connection Status enum
*/
export declare enum ZaloConnectionStatus {
CONNECTED = "connected",
DISCONNECTED = "disconnected",
RECONNECTING = "reconnecting",
LOGGED_OUT = "logged_out"
}
/**
* Simplified webhook event for SDK usage
* Updated to match automation-web WebhookJobData interface
*/
export interface WebhookEvent extends BaseZaloWebhookEvent {
eventData: ZaloMessageData | ZaloTypingEventData | ZaloReactionEventData | ZaloUndoEventData | any;
}
/**
* Webhook event handler function type
*/
export type WebhookEventHandler<T extends WebhookEvent = WebhookEvent> = (event: T) => void | Promise<void>;
export declare const WebhookEventType: typeof ZaloWebhookEventType;
export type MessageEventData = ZaloMessageData;
export type BaseWebhookEvent = BaseZaloWebhookEvent;
export type TypingEventData = ZaloTypingEventData;
export type ReactionEventData = ZaloReactionEventData;
//# sourceMappingURL=webhook.types.d.ts.map