UNPKG

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.1: Updated GroupInfo interface to match backend controller with complete gro

697 lines 49.1 kB
"use strict"; /** * Job Types Index * Export tất cả job/queue types * 100% khớp với automation-web job structure */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GROUP_EVENT_TYPES = exports.FRIEND_EVENT_TYPES = exports.MESSAGE_EVENT_TYPES = void 0; exports.isMessageEvent = isMessageEvent; exports.isTypingEvent = isTypingEvent; exports.isReactionEvent = isReactionEvent; exports.isFriendEvent = isFriendEvent; exports.isGroupEvent = isGroupEvent; exports.isSystemEvent = isSystemEvent; exports.isSelfEvent = isSelfEvent; exports.isOtherEvent = isOtherEvent; exports.isUserThreadEvent = isUserThreadEvent; exports.isGroupThreadEvent = isGroupThreadEvent; exports.getEventCategory = getEventCategory; exports.getThreadTypeFromEvent = getThreadTypeFromEvent; exports.getActorTypeFromEvent = getActorTypeFromEvent; exports.isMessageReceivedFromUser = isMessageReceivedFromUser; exports.isMessageReceivedFromGroup = isMessageReceivedFromGroup; exports.isMessageSentToGroup = isMessageSentToGroup; exports.isMessageSentToUser = isMessageSentToUser; // ==================== BASE TYPES ==================== __exportStar(require("./webhook-job.types"), exports); // ==================== MESSAGE JOB TYPES ==================== __exportStar(require("./message-job.types"), exports); // ==================== EVENT JOB TYPES ==================== __exportStar(require("./event-job.types"), exports); // ==================== FRIEND & GROUP JOB TYPES ==================== __exportStar(require("./friend-group-job.types"), exports); // ==================== SYSTEM JOB TYPES ==================== __exportStar(require("./system-job.types"), exports); const webhook_job_types_1 = require("./webhook-job.types"); // ==================== HELPER FUNCTIONS ==================== /** * Type guard to check if event is a message event */ function isMessageEvent(event) { return exports.MESSAGE_EVENT_TYPES.includes(event.eventType); } /** * Type guard to check if event is a typing event */ function isTypingEvent(event) { return event.eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_USER || event.eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_GROUP || event.eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_USER || event.eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_GROUP; } /** * Type guard to check if event is a reaction event */ function isReactionEvent(event) { return event.eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_USER || event.eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_GROUP || event.eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_USER || event.eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_GROUP; } /** * Type guard to check if event is a friend event */ function isFriendEvent(event) { return exports.FRIEND_EVENT_TYPES.includes(event.eventType); } /** * Type guard to check if event is a group event */ function isGroupEvent(event) { return exports.GROUP_EVENT_TYPES.includes(event.eventType); } /** * Type guard to check if event is a system event */ function isSystemEvent(event) { return event.eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_CONNECTED || event.eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_DISCONNECTED || event.eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_RECONNECTING || event.eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_LOGGED_OUT || event.eventType === webhook_job_types_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT_IN_PROGRESS || event.eventType === webhook_job_types_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT_COMPLETED || event.eventType === webhook_job_types_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT_FAILED || event.eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_USER || event.eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_GROUP || event.eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_USER || event.eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_GROUP || event.eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_SYSTEM || event.eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_NETWORK || event.eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_AUTHENTICATION || event.eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_VALIDATION || event.eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_BUSINESS_LOGIC || event.eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_UNKNOWN || event.eventType === webhook_job_types_1.ZaloWebhookEventType.OLD_MESSAGES; } /** * Type guard to check if event is sent by self */ function isSelfEvent(event) { const eventType = event.eventType; // Message events sent by self return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_GROUP || // Typing events by self eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_GROUP || // Seen events by self eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_GROUP || // Delivered events by self eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_GROUP || // Reaction events by self eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_GROUP || // Undo events by self eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_GROUP; } /** * Type guard to check if event is from other users */ function isOtherEvent(event) { const eventType = event.eventType; // Message events received from others return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP || // Typing events by others eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_GROUP || // Seen events by others eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_GROUP || // Delivered events by others eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_GROUP || // Reaction events by others eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_GROUP || // Undo events by others eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_GROUP; } /** * Type guard to check if event is in user thread */ function isUserThreadEvent(event) { const eventType = event.eventType; // Message events in user threads return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_USER || // Other events in user threads eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_USER; } /** * Type guard to check if event is in group thread */ function isGroupThreadEvent(event) { const eventType = event.eventType; // Message events in group threads return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP || // Other events in group threads eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_GROUP || // Group events exports.GROUP_EVENT_TYPES.includes(eventType); } /** * Get event category from event type */ function getEventCategory(eventType) { // Message events if (exports.MESSAGE_EVENT_TYPES.includes(eventType)) return 'message'; // Typing events if (eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_GROUP) { return 'typing'; } // Seen events if (eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_GROUP) { return 'seen'; } // Delivered events if (eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_GROUP) { return 'delivered'; } // Reaction events if (eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.OLD_REACTIONS_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.OLD_REACTIONS_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.OLD_REACTIONS_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.OLD_REACTIONS_BY_OTHER_IN_GROUP) { return 'reaction'; } // Undo events if (eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_GROUP) { return 'undo'; } // Friend events if (exports.FRIEND_EVENT_TYPES.includes(eventType)) return 'friend'; // Group events if (exports.GROUP_EVENT_TYPES.includes(eventType)) return 'group'; // Connection events if (eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_CONNECTED || eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_DISCONNECTED || eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_RECONNECTING || eventType === webhook_job_types_1.ZaloWebhookEventType.CONNECTION_STATUS_LOGGED_OUT) { return 'connection'; } // Upload events if (eventType === webhook_job_types_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT_IN_PROGRESS || eventType === webhook_job_types_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT_COMPLETED || eventType === webhook_job_types_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT_FAILED) { return 'upload'; } // Cipher events if (eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_GROUP) { return 'cipher'; } // Error events if (eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_SYSTEM || eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_NETWORK || eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_AUTHENTICATION || eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_VALIDATION || eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_BUSINESS_LOGIC || eventType === webhook_job_types_1.ZaloWebhookEventType.ERROR_UNKNOWN) { return 'error'; } // Old messages if (eventType === webhook_job_types_1.ZaloWebhookEventType.OLD_MESSAGES) return 'old-messages'; return 'unknown'; } /** * Get thread type from event type */ function getThreadTypeFromEvent(eventType) { // User thread events if (eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_USER) { return 'user'; } // Group thread events if (eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_UPDATED_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.CIPHER_KEY_EXPIRED_IN_GROUP || exports.GROUP_EVENT_TYPES.includes(eventType)) { return 'group'; } return 'unknown'; } /** * Get actor type from event type (self or other) */ function getActorTypeFromEvent(eventType) { // Self events (sent by self) if (eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_SELF_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_SELF_IN_GROUP) { return 'self'; } // Other events (received from others) if (eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.TYPING_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.SEEN_MESSAGES_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DELIVERED_MESSAGES_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.REACTION_BY_OTHER_IN_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.UNDO_BY_OTHER_IN_GROUP) { return 'other'; } return 'unknown'; } // ==================== MESSAGE DIRECTION TYPE GUARDS ==================== /** * Type guard to check if event is a message received from user to self * Tin nhắn được gửi từ user tới mình */ function isMessageReceivedFromUser(event) { const eventType = event.eventType; return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_USER; } /** * Type guard to check if event is a message received from group (sent by others) * Tin nhắn được gửi từ người khác tới group */ function isMessageReceivedFromGroup(event) { const eventType = event.eventType; return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP; } /** * Type guard to check if event is a message sent from self to group * Tin nhắn được gửi từ mình tới group */ function isMessageSentToGroup(event) { const eventType = event.eventType; return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_GROUP; } /** * Type guard to check if event is a message sent from self to user * Tin nhắn được chính mình gửi tới người khác */ function isMessageSentToUser(event) { const eventType = event.eventType; return eventType === webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER || eventType === webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_USER; } // ==================== CONSTANTS ==================== /** * All message event types */ exports.MESSAGE_EVENT_TYPES = [ webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP, webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_USER, webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_GROUP, webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_USER, webhook_job_types_1.ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP, ]; /** * All friend event types */ exports.FRIEND_EVENT_TYPES = [ webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_ADD, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_REMOVE, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_REQUEST, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_UNDO_REQUEST, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_REJECT_REQUEST, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_SEEN_REQUEST, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_BLOCK, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_UNBLOCK, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_BLOCK_CALL, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_UNBLOCK_CALL, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_PIN_UNPIN, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_PIN_CREATE, webhook_job_types_1.ZaloWebhookEventType.FRIEND_EVENT_UNKNOWN, ]; /** * All group event types */ exports.GROUP_EVENT_TYPES = [ webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_JOIN_REQUEST, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_JOIN, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_LEAVE, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_REMOVE_MEMBER, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_BLOCK_MEMBER, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UPDATE_SETTING, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UPDATE, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_NEW_LINK, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_ADD_ADMIN, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_REMOVE_ADMIN, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_NEW_PIN_TOPIC, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UPDATE_PIN_TOPIC, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_REORDER_PIN_TOPIC, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UPDATE_BOARD, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_REMOVE_BOARD, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UPDATE_TOPIC, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UNPIN_TOPIC, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_REMOVE_TOPIC, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_ACCEPT_REMIND, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_REJECT_REMIND, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_REMIND_TOPIC, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UPDATE_AVATAR, webhook_job_types_1.ZaloWebhookEventType.GROUP_EVENT_UNKNOWN, ]; //# sourceMappingURL=index.js.map