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
JavaScript
"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