UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS with Full Type Safety, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0 with Multip

1,343 lines (1,330 loc) 438 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { ARTICLE_CONSTRAINTS: () => ARTICLE_CONSTRAINTS, AnonymousMessageService: () => AnonymousMessageService, ArticleService: () => ArticleService, ArticleStatus: () => ArticleStatus, ArticleType: () => ArticleType, AttachmentType: () => AttachmentType, AuthMethod: () => AuthMethod, AuthScope: () => AuthScope, AuthService: () => AuthService, BROADCAST_AGE_CODES: () => BROADCAST_AGE_CODES, BROADCAST_CITY_CODES: () => BROADCAST_CITY_CODES, BROADCAST_GENDER_CODES: () => BROADCAST_GENDER_CODES, BROADCAST_LOCATION_CODES: () => BROADCAST_LOCATION_CODES, BROADCAST_PLATFORM_CODES: () => BROADCAST_PLATFORM_CODES, BaseClient: () => BaseClient, BodyItemType: () => BodyItemType, BroadcastService: () => BroadcastService, CommentStatus: () => CommentStatus, ConsoleLogger: () => ConsoleLogger, ConsultationService: () => ConsultationService, CoverType: () => CoverType, GMFProductType: () => GMFProductType, GeneralMessageService: () => GeneralMessageService, GroupManagementService: () => GroupManagementService, GroupMessageService: () => GroupMessageService, MessageManagementService: () => MessageManagementService, MessageReactionIconEnum: () => ReactionIcon, MessageReactionService: () => MessageReactionService, MiniAppMessageService: () => MiniAppMessageService, MiniAppQuotaType: () => MiniAppQuotaType, OAService: () => OAService, OA_PRODUCTS: () => OA_PRODUCTS, PRODUCT_INFO: () => PRODUCT_INFO, PromotionService: () => PromotionService, PurchaseErrorCode: () => PurchaseErrorCode, PurchaseService: () => PurchaseService, QuotaOwnerType: () => QuotaOwnerType, QuotaType: () => QuotaType, TransactionService: () => TransactionService, UserInfoFieldType: () => UserInfoFieldType, UserService: () => UserService, VIDEO_CONSTRAINTS: () => VIDEO_CONSTRAINTS, VideoUploadService: () => VideoUploadService, VideoUploadStatus: () => VideoUploadStatus, WebhookEventName: () => WebhookEventName, ZNSButtonType: () => ZNSButtonType, ZNSParamType: () => ZNSParamType, ZNSService: () => ZNSService, ZNSTemplateTag: () => ZNSTemplateTag, ZNSTemplateType: () => ZNSTemplateType, ZNSValidation: () => ZNSValidation, ZNS_BUTTON_TYPES: () => ZNS_BUTTON_TYPES, ZNS_PARAM_TYPES: () => ZNS_PARAM_TYPES, ZNS_TEMPLATE_TAGS: () => ZNS_TEMPLATE_TAGS, ZNS_TEMPLATE_TAG_COMPATIBILITY: () => ZNS_TEMPLATE_TAG_COMPATIBILITY, ZNS_TEMPLATE_TYPES: () => ZNS_TEMPLATE_TYPES, ZaloClient: () => ZaloClient, ZaloSDK: () => ZaloSDK, ZaloSDKError: () => ZaloSDKError, default: () => ZaloSDK, getMessageDirection: () => getMessageDirection, getWebhookEventAppId: () => getWebhookEventAppId, getWebhookEventIdentifiers: () => getWebhookEventIdentifiers, getWebhookEventOaId: () => getWebhookEventOaId, getWebhookEventRecipientId: () => getWebhookEventRecipientId, getWebhookEventSenderId: () => getWebhookEventSenderId, hasAttachments: () => hasAttachments, isAnonymousEvent: () => isAnonymousEvent, isBusinessCardEvent: () => isBusinessCardEvent, isCallEvent: () => isCallEvent, isConsentEvent: () => isConsentEvent, isExtensionEvent: () => isExtensionEvent, isFeedbackEvent: () => isFeedbackEvent, isFollowEvent: () => isFollowEvent, isFromGroup: () => isFromGroup, isFromPersonal: () => isFromPersonal, isGroupEvent: () => isGroupEvent, isGroupMessageEvent: () => isGroupMessageEvent, isJourneyEvent: () => isJourneyEvent, isMessageEvent: () => isMessageEvent, isOAMessageEvent: () => isOAMessageEvent, isOASendFileEvent: () => isOASendFileEvent, isOASendGifEvent: () => isOASendGifEvent, isOASendGroupFileEvent: () => isOASendGroupFileEvent, isOASendGroupGifEvent: () => isOASendGroupGifEvent, isOASendGroupImageEvent: () => isOASendGroupImageEvent, isOASendGroupStickerEvent: () => isOASendGroupStickerEvent, isOASendGroupTextEvent: () => isOASendGroupTextEvent, isOASendImageEvent: () => isOASendImageEvent, isOASendStickerEvent: () => isOASendStickerEvent, isOASendTextEvent: () => isOASendTextEvent, isOAToGroupMessageEvent: () => isOAToGroupMessageEvent, isOAToUserMessageEvent: () => isOAToUserMessageEvent, isPermissionEvent: () => isPermissionEvent, isProductOrderRequest: () => isProductOrderRequest, isQuotaTemplateEvent: () => isQuotaTemplateEvent, isReactionEvent: () => isReactionEvent, isRedeemOrderRequest: () => isRedeemOrderRequest, isShopEvent: () => isShopEvent, isSystemEvent: () => isSystemEvent, isTemplateEvent: () => isTemplateEvent, isUpdateUserInfoEvent: () => isUpdateUserInfoEvent, isUserActionEvent: () => isUserActionEvent, isUserGroupMessageEvent: () => isUserGroupMessageEvent, isUserMessageEvent: () => isUserMessageEvent, isUserSendGroupAudioEvent: () => isUserSendGroupAudioEvent, isUserSendGroupFileEvent: () => isUserSendGroupFileEvent, isUserSendGroupImageEvent: () => isUserSendGroupImageEvent, isUserSendGroupTextEvent: () => isUserSendGroupTextEvent, isUserSendGroupVideoEvent: () => isUserSendGroupVideoEvent, isWidgetEvent: () => isWidgetEvent, isZNSEvent: () => isZNSEvent }); module.exports = __toCommonJS(index_exports); // src/types/common.ts var ZaloSDKError = class extends Error { constructor(message, code = -1, details) { super(message); this.name = "ZaloSDKError"; this.code = code; this.details = details; } }; var ConsoleLogger = class { constructor(enableDebug = false) { this.enableDebug = enableDebug; } debug(message, ...args) { if (this.enableDebug) { console.debug(`[ZALO-SDK:DEBUG] ${message}`, ...args); } } info(message, ...args) { console.info(`[ZALO-SDK:INFO] ${message}`, ...args); } warn(message, ...args) { console.warn(`[ZALO-SDK:WARN] ${message}`, ...args); } error(message, ...args) { console.error(`[ZALO-SDK:ERROR] ${message}`, ...args); } }; // src/types/auth.ts var AuthScope = /* @__PURE__ */ ((AuthScope2) => { AuthScope2["OA"] = "oa"; AuthScope2["SOCIAL"] = "social"; AuthScope2["ZNS"] = "zns"; return AuthScope2; })(AuthScope || {}); var AuthMethod = /* @__PURE__ */ ((AuthMethod2) => { AuthMethod2["AUTHORIZATION_CODE"] = "authorization_code"; AuthMethod2["REFRESH_TOKEN"] = "refresh_token"; return AuthMethod2; })(AuthMethod || {}); // src/types/oa.ts var GMFProductType = /* @__PURE__ */ ((GMFProductType2) => { GMFProductType2["GMF10"] = "gmf10"; GMFProductType2["GMF50"] = "gmf50"; GMFProductType2["GMF100"] = "gmf100"; return GMFProductType2; })(GMFProductType || {}); var QuotaType = /* @__PURE__ */ ((QuotaType3) => { QuotaType3["SUB_QUOTA"] = "sub_quota"; QuotaType3["PURCHASE_QUOTA"] = "purchase_quota"; QuotaType3["REWARD_QUOTA"] = "reward_quota"; return QuotaType3; })(QuotaType || {}); // src/types/user.ts var UserInfoFieldType = /* @__PURE__ */ ((UserInfoFieldType2) => { UserInfoFieldType2["TEXT"] = "text"; UserInfoFieldType2["NUMBER"] = "number"; UserInfoFieldType2["DATE"] = "date"; UserInfoFieldType2["SELECT"] = "select"; return UserInfoFieldType2; })(UserInfoFieldType || {}); // src/types/zns.ts var ZNSTemplateType = /* @__PURE__ */ ((ZNSTemplateType2) => { ZNSTemplateType2[ZNSTemplateType2["CUSTOM"] = 1] = "CUSTOM"; ZNSTemplateType2[ZNSTemplateType2["AUTHENTICATION"] = 2] = "AUTHENTICATION"; ZNSTemplateType2[ZNSTemplateType2["PAYMENT_REQUEST"] = 3] = "PAYMENT_REQUEST"; ZNSTemplateType2[ZNSTemplateType2["VOUCHER"] = 4] = "VOUCHER"; ZNSTemplateType2[ZNSTemplateType2["SERVICE_RATING"] = 5] = "SERVICE_RATING"; return ZNSTemplateType2; })(ZNSTemplateType || {}); var ZNSTemplateTag = /* @__PURE__ */ ((ZNSTemplateTag2) => { ZNSTemplateTag2["TRANSACTION"] = "1"; ZNSTemplateTag2["CUSTOMER_CARE"] = "2"; ZNSTemplateTag2["PROMOTION"] = "3"; return ZNSTemplateTag2; })(ZNSTemplateTag || {}); var ZNSButtonType = /* @__PURE__ */ ((ZNSButtonType2) => { ZNSButtonType2[ZNSButtonType2["ENTERPRISE_PAGE"] = 1] = "ENTERPRISE_PAGE"; ZNSButtonType2[ZNSButtonType2["PHONE"] = 2] = "PHONE"; ZNSButtonType2[ZNSButtonType2["OA_PAGE"] = 3] = "OA_PAGE"; ZNSButtonType2[ZNSButtonType2["ZALO_MINI_APP"] = 4] = "ZALO_MINI_APP"; ZNSButtonType2[ZNSButtonType2["DOWNLOAD_APP"] = 5] = "DOWNLOAD_APP"; ZNSButtonType2[ZNSButtonType2["PRODUCT_DISTRIBUTION"] = 6] = "PRODUCT_DISTRIBUTION"; ZNSButtonType2[ZNSButtonType2["OTHER_WEB_APP"] = 7] = "OTHER_WEB_APP"; ZNSButtonType2[ZNSButtonType2["OTHER_APP"] = 8] = "OTHER_APP"; ZNSButtonType2[ZNSButtonType2["OA_ARTICLE"] = 9] = "OA_ARTICLE"; ZNSButtonType2[ZNSButtonType2["COPY"] = 10] = "COPY"; ZNSButtonType2[ZNSButtonType2["PAY_NOW"] = 11] = "PAY_NOW"; ZNSButtonType2[ZNSButtonType2["VIEW_DETAILS"] = 12] = "VIEW_DETAILS"; return ZNSButtonType2; })(ZNSButtonType || {}); var ZNSParamType = /* @__PURE__ */ ((ZNSParamType2) => { ZNSParamType2["CUSTOMER_NAME"] = "1"; ZNSParamType2["PHONE_NUMBER"] = "2"; ZNSParamType2["ADDRESS"] = "3"; ZNSParamType2["CODE"] = "4"; ZNSParamType2["CUSTOM_LABEL"] = "5"; ZNSParamType2["TRANSACTION_STATUS"] = "6"; ZNSParamType2["CONTACT_INFO"] = "7"; ZNSParamType2["GENDER_TITLE"] = "8"; ZNSParamType2["PRODUCT_BRAND"] = "9"; ZNSParamType2["QUANTITY_AMOUNT"] = "10"; ZNSParamType2["TIME"] = "11"; ZNSParamType2["OTP"] = "12"; ZNSParamType2["URL"] = "13"; ZNSParamType2["CURRENCY"] = "14"; ZNSParamType2["BANK_TRANSFER_NOTE"] = "15"; return ZNSParamType2; })(ZNSParamType || {}); // src/types/article.ts var ARTICLE_CONSTRAINTS = { TITLE_MAX_LENGTH: 150, AUTHOR_MAX_LENGTH: 50, DESCRIPTION_MAX_LENGTH: 300, IMAGE_MAX_SIZE: 1024 * 1024, // 1MB VIDEO_MAX_SIZE: 50 * 1024 * 1024, // 50MB LIST_MAX_LIMIT: 10 // Zalo API maximum limit is 10 }; var VIDEO_CONSTRAINTS = { maxSize: 50 * 1024 * 1024, // 50MB allowedExtensions: [".mp4", ".avi"], allowedMimeTypes: ["video/mp4", "video/avi", "video/x-msvideo"] }; var ArticleStatus = /* @__PURE__ */ ((ArticleStatus2) => { ArticleStatus2["SHOW"] = "show"; ArticleStatus2["HIDE"] = "hide"; return ArticleStatus2; })(ArticleStatus || {}); var CommentStatus = /* @__PURE__ */ ((CommentStatus2) => { CommentStatus2["SHOW"] = "show"; CommentStatus2["HIDE"] = "hide"; return CommentStatus2; })(CommentStatus || {}); var ArticleType = /* @__PURE__ */ ((ArticleType2) => { ArticleType2["NORMAL"] = "normal"; ArticleType2["VIDEO"] = "video"; return ArticleType2; })(ArticleType || {}); var CoverType = /* @__PURE__ */ ((CoverType2) => { CoverType2["PHOTO"] = "photo"; CoverType2["VIDEO"] = "video"; return CoverType2; })(CoverType || {}); var BodyItemType = /* @__PURE__ */ ((BodyItemType2) => { BodyItemType2["TEXT"] = "text"; BodyItemType2["IMAGE"] = "image"; BodyItemType2["VIDEO"] = "video"; BodyItemType2["PRODUCT"] = "product"; return BodyItemType2; })(BodyItemType || {}); var VideoUploadStatus = /* @__PURE__ */ ((VideoUploadStatus2) => { VideoUploadStatus2[VideoUploadStatus2["UNKNOWN"] = 0] = "UNKNOWN"; VideoUploadStatus2[VideoUploadStatus2["SUCCESS"] = 1] = "SUCCESS"; VideoUploadStatus2[VideoUploadStatus2["LOCKED"] = 2] = "LOCKED"; VideoUploadStatus2[VideoUploadStatus2["PROCESSING"] = 3] = "PROCESSING"; VideoUploadStatus2[VideoUploadStatus2["FAILED"] = 4] = "FAILED"; VideoUploadStatus2[VideoUploadStatus2["DELETED"] = 5] = "DELETED"; return VideoUploadStatus2; })(VideoUploadStatus || {}); // src/types/broadcast.ts var BROADCAST_CITY_CODES = { "\u0110\u1ED3ng Th\xE1p": "0", "B\xECnh Ph\u01B0\u1EDBc": "1", "Ninh B\xECnh": "2", "B\u1EA1c Li\xEAu": "3", "H\u1ED3 Ch\xED Minh": "4", "V\u0129nh Long": "5", "L\xE2m \u0110\u1ED3ng": "6", "Y\xEAn B\xE1i": "7", "H\xE0 Nam": "8", "H\xE0 N\u1ED9i": "9", "H\u1EA3i D\u01B0\u01A1ng": "10", "H\u1EADu Giang": "11", "An Giang": "12", "Tr\xE0 Vinh": "13", "Ti\u1EC1n Giang": "14", "T\xE2y Ninh": "15", "\u0110\u1ED3ng Nai": "16", "\u0110\u1EAFk L\u1EAFk": "17", "B\xECnh \u0110\u1ECBnh": "18", "Kon Tum": "19", "\u0110\xE0 N\u1EB5ng": "20", "B\u1EAFc Giang": "21", "B\u1EAFc K\u1EA1n": "22", "\u0110i\u1EC7n Bi\xEAn": "23", "H\xF2a B\xECnh": "24", "Th\xE1i B\xECnh": "25", "V\u0129nh Ph\xFAc": "26", "H\xE0 Giang": "27", "Ki\xEAn Giang": "28", "B\xECnh D\u01B0\u01A1ng": "29", "B\xECnh Thu\u1EADn": "30", "\u0110\u1EAFk N\xF4ng": "31", "Kh\xE1nh H\xF2a": "32", "Gia Lai": "33", "Qu\u1EA3ng Nam": "34", "Qu\u1EA3ng Tr\u1ECB": "35", "H\xE0 T\u0129nh": "36", "H\u01B0ng Y\xEAn": "37", "Qu\u1EA3ng Ninh": "38", "Thanh H\xF3a": "39", "Ph\xFA Th\u1ECD": "40", "Lai Ch\xE2u": "41", "Th\xE1i Nguy\xEAn": "42", "Cao B\u1EB1ng": "43", "C\xE0 Mau": "44", "C\u1EA7n Th\u01A1": "45", "S\xF3c Tr\u0103ng": "46", "B\u1EBFn Tre": "47", "Long An": "48", "B\xE0 R\u1ECBa V\u0169ng T\xE0u": "49", "Ninh Thu\u1EADn": "50", "Ph\xFA Y\xEAn": "51", "Qu\xE3ng Ng\xE3i": "52", "Th\u1EEBa Thi\xEAn Hu\u1EBF": "53", "Qu\u1EA3ng B\xECnh": "54", "Ngh\u1EC7 An": "55", "Nam \u0110\u1ECBnh": "56", "H\u1EA3i Ph\xF2ng": "57", "L\u1EA1ng S\u01A1n": "58", "L\xE0o Cai": "59", "S\u01A1n La": "60", "B\u1EAFc Ninh": "61", "Tuy\xEAn Quang": "62", "Kh\xF4ng Thu\u1ED9c Vi\u1EC7t Nam": "63" }; var BROADCAST_AGE_CODES = { "0-12": "0", "13-17": "1", "18-24": "2", "25-34": "3", "35-44": "4", "45-54": "5", "55-64": "6", "65+": "7" }; var BROADCAST_GENDER_CODES = { "ALL": "0", "MALE": "1", "FEMALE": "2" }; var BROADCAST_LOCATION_CODES = { "NORTH": "0", "CENTRAL": "1", "SOUTH": "2" }; var BROADCAST_PLATFORM_CODES = { "IOS": "1", "ANDROID": "2", "WINDOWS_PHONE": "3" }; // src/types/purchase.ts function isProductOrderRequest(request) { return "product_id" in request; } function isRedeemOrderRequest(request) { return "redeem_code" in request; } var OA_PRODUCTS = { // Sản phẩm OA Subscription OA_ADVANCED_6M: 866836109767958100, OA_ADVANCED_12M: 1302963828004138500, OA_PREMIUM_6M: 757295129578622300, OA_PREMIUM_12M: 3071996459978069e3, // Sản phẩm Quota khởi tạo GMF GMF_10_MEMBERS: 739448264820568800, GMF_50_MEMBERS: 2405469629611791400, GMF_100_MEMBERS: 2275350247265190700, GMF_1000_MEMBERS: 36785572333921e5, // Sản phẩm Gói quota tin nhắn OA TRANSACTION_5K: 4609774892111012e3, TRANSACTION_50K: 2038298593847789600, TRANSACTION_500K: 2544831667685732e3 }; var PRODUCT_INFO = { // OA Subscription [OA_PRODUCTS.OA_ADVANCED_6M]: { id: OA_PRODUCTS.OA_ADVANCED_6M, name: "G\xF3i OA N\xE2ng cao 6 th\xE1ng", beneficiary: ["OA"], category: "subscription" }, [OA_PRODUCTS.OA_ADVANCED_12M]: { id: OA_PRODUCTS.OA_ADVANCED_12M, name: "G\xF3i OA N\xE2ng cao 12 th\xE1ng", beneficiary: ["OA"], category: "subscription" }, [OA_PRODUCTS.OA_PREMIUM_6M]: { id: OA_PRODUCTS.OA_PREMIUM_6M, name: "G\xF3i OA Premium 6 th\xE1ng", beneficiary: ["OA"], category: "subscription" }, [OA_PRODUCTS.OA_PREMIUM_12M]: { id: OA_PRODUCTS.OA_PREMIUM_12M, name: "G\xF3i OA Premium 12 th\xE1ng", beneficiary: ["OA"], category: "subscription" }, // GMF Products [OA_PRODUCTS.GMF_10_MEMBERS]: { id: OA_PRODUCTS.GMF_10_MEMBERS, name: "GMF t\u1ED1i \u0111a 10 th\xE0nh vi\xEAn", beneficiary: ["OA"], category: "gmf" }, [OA_PRODUCTS.GMF_50_MEMBERS]: { id: OA_PRODUCTS.GMF_50_MEMBERS, name: "GMF t\u1ED1i \u0111a 50 th\xE0nh vi\xEAn", beneficiary: ["OA"], category: "gmf" }, [OA_PRODUCTS.GMF_100_MEMBERS]: { id: OA_PRODUCTS.GMF_100_MEMBERS, name: "GMF t\u1ED1i \u0111a 100 th\xE0nh vi\xEAn", beneficiary: ["OA"], category: "gmf" }, [OA_PRODUCTS.GMF_1000_MEMBERS]: { id: OA_PRODUCTS.GMF_1000_MEMBERS, name: "GMF t\u1ED1i \u0111a 1000 th\xE0nh vi\xEAn", beneficiary: ["OA"], category: "gmf" }, // Transaction Quota [OA_PRODUCTS.TRANSACTION_5K]: { id: OA_PRODUCTS.TRANSACTION_5K, name: "G\xF3i 5k tin Giao d\u1ECBch (1 th\xE1ng)", beneficiary: ["APP", "OA"], category: "quota" }, [OA_PRODUCTS.TRANSACTION_50K]: { id: OA_PRODUCTS.TRANSACTION_50K, name: "G\xF3i 50k tin Giao d\u1ECBch (1 th\xE1ng)", beneficiary: ["APP", "OA"], category: "quota" }, [OA_PRODUCTS.TRANSACTION_500K]: { id: OA_PRODUCTS.TRANSACTION_500K, name: "G\xF3i 500k tin Giao d\u1ECBch (1 th\xE1ng)", beneficiary: ["APP", "OA"], category: "quota" } }; var PurchaseErrorCode = /* @__PURE__ */ ((PurchaseErrorCode2) => { PurchaseErrorCode2[PurchaseErrorCode2["INVALID_BENEFICIARY"] = 1001] = "INVALID_BENEFICIARY"; PurchaseErrorCode2[PurchaseErrorCode2["INVALID_PRODUCT_ID"] = 1002] = "INVALID_PRODUCT_ID"; PurchaseErrorCode2[PurchaseErrorCode2["INVALID_REDEEM_CODE"] = 1003] = "INVALID_REDEEM_CODE"; PurchaseErrorCode2[PurchaseErrorCode2["INVALID_VOUCHER_CODE"] = 1004] = "INVALID_VOUCHER_CODE"; PurchaseErrorCode2[PurchaseErrorCode2["PRODUCT_NOT_AVAILABLE"] = 1005] = "PRODUCT_NOT_AVAILABLE"; PurchaseErrorCode2[PurchaseErrorCode2["INSUFFICIENT_BALANCE"] = 1006] = "INSUFFICIENT_BALANCE"; PurchaseErrorCode2[PurchaseErrorCode2["ORDER_TIME_RESTRICTED"] = 1007] = "ORDER_TIME_RESTRICTED"; PurchaseErrorCode2[PurchaseErrorCode2["DUPLICATE_ORDER"] = 1008] = "DUPLICATE_ORDER"; PurchaseErrorCode2[PurchaseErrorCode2["PERMISSION_DENIED"] = 1009] = "PERMISSION_DENIED"; PurchaseErrorCode2[PurchaseErrorCode2["INVALID_ORDER_ID"] = 1010] = "INVALID_ORDER_ID"; PurchaseErrorCode2[PurchaseErrorCode2["INVALID_VERIFIED_TOKEN"] = 1011] = "INVALID_VERIFIED_TOKEN"; PurchaseErrorCode2[PurchaseErrorCode2["ORDER_EXPIRED"] = 1012] = "ORDER_EXPIRED"; PurchaseErrorCode2[PurchaseErrorCode2["ORDER_ALREADY_CONFIRMED"] = 1013] = "ORDER_ALREADY_CONFIRMED"; PurchaseErrorCode2[PurchaseErrorCode2["SYSTEM_ERROR"] = 9999] = "SYSTEM_ERROR"; return PurchaseErrorCode2; })(PurchaseErrorCode || {}); // src/constants/zns.constants.ts var ZNS_TEMPLATE_TYPES = { [1 /* CUSTOM */]: { value: 1 /* CUSTOM */, name: "ZNS t\xF9y ch\u1EC9nh", description: "Template t\xF9y ch\u1EC9nh cho c\xE1c m\u1EE5c \u0111\xEDch kh\xE1c nhau" }, [2 /* AUTHENTICATION */]: { value: 2 /* AUTHENTICATION */, name: "ZNS x\xE1c th\u1EF1c", description: "Template cho vi\u1EC7c x\xE1c th\u1EF1c OTP, m\xE3 PIN" }, [3 /* PAYMENT_REQUEST */]: { value: 3 /* PAYMENT_REQUEST */, name: "ZNS y\xEAu c\u1EA7u thanh to\xE1n", description: "Template y\xEAu c\u1EA7u thanh to\xE1n" }, [4 /* VOUCHER */]: { value: 4 /* VOUCHER */, name: "ZNS voucher", description: "Template g\u1EEDi voucher, khuy\u1EBFn m\xE3i" }, [5 /* SERVICE_RATING */]: { value: 5 /* SERVICE_RATING */, name: "ZNS \u0111\xE1nh gi\xE1 d\u1ECBch v\u1EE5", description: "Template y\xEAu c\u1EA7u \u0111\xE1nh gi\xE1 d\u1ECBch v\u1EE5" } }; var ZNS_TEMPLATE_TAGS = { ["1" /* TRANSACTION */]: { value: "1" /* TRANSACTION */, name: "Transaction", description: "Giao d\u1ECBch, thanh to\xE1n" }, ["2" /* CUSTOMER_CARE */]: { value: "2" /* CUSTOMER_CARE */, name: "Customer Care", description: "Ch\u0103m s\xF3c kh\xE1ch h\xE0ng" }, ["3" /* PROMOTION */]: { value: "3" /* PROMOTION */, name: "Promotion", description: "Khuy\u1EBFn m\xE3i, qu\u1EA3ng c\xE1o" } }; var ZNS_BUTTON_TYPES = { [1 /* ENTERPRISE_PAGE */]: { value: 1 /* ENTERPRISE_PAGE */, name: "Trang doanh nghi\u1EC7p", description: "\u0110\u1EBFn trang c\u1EE7a doanh nghi\u1EC7p ho\u1EB7c trang tra c\u1EE9u ho\xE1 \u0111\u01A1n \u0111i\u1EC7n t\u1EED" }, [2 /* PHONE */]: { value: 2 /* PHONE */, name: "Phone", description: "G\u1ECDi \u0111i\u1EC7n tho\u1EA1i" }, [3 /* OA_PAGE */]: { value: 3 /* OA_PAGE */, name: "Trang OA", description: "\u0110\u1EBFn trang th\xF4ng tin OA" }, [4 /* ZALO_MINI_APP */]: { value: 4 /* ZALO_MINI_APP */, name: "Zalo Mini App", description: "\u0110\u1EBFn \u1EE9ng d\u1EE5ng Zalo Mini App c\u1EE7a doanh nghi\u1EC7p" }, [5 /* DOWNLOAD_APP */]: { value: 5 /* DOWNLOAD_APP */, name: "T\u1EA3i App", description: "\u0110\u1EBFn trang t\u1EA3i \u1EE9ng d\u1EE5ng" }, [6 /* PRODUCT_DISTRIBUTION */]: { value: 6 /* PRODUCT_DISTRIBUTION */, name: "Ph\xE2n ph\u1ED1i s\u1EA3n ph\u1EA9m", description: "\u0110\u1EBFn trang ph\xE2n ph\u1ED1i s\u1EA3n ph\u1EA9m" }, [7 /* OTHER_WEB_APP */]: { value: 7 /* OTHER_WEB_APP */, name: "Web/App kh\xE1c", description: "\u0110\u1EBFn trang web/Zalo Mini App kh\xE1c" }, [8 /* OTHER_APP */]: { value: 8 /* OTHER_APP */, name: "App kh\xE1c", description: "\u0110\u1EBFn \u1EE9ng d\u1EE5ng kh\xE1c" }, [9 /* OA_ARTICLE */]: { value: 9 /* OA_ARTICLE */, name: "B\xE0i vi\u1EBFt OA", description: "\u0110\u1EBFn b\xE0i vi\u1EBFt c\u1EE7a OA" }, [10 /* COPY */]: { value: 10 /* COPY */, name: "Copy", description: "Sao ch\xE9p n\u1ED9i dung" }, [11 /* PAY_NOW */]: { value: 11 /* PAY_NOW */, name: "Thanh to\xE1n ngay", description: "Thanh to\xE1n ngay" }, [12 /* VIEW_DETAILS */]: { value: 12 /* VIEW_DETAILS */, name: "Xem chi ti\u1EBFt", description: "Xem chi ti\u1EBFt" } }; var ZNS_PARAM_TYPES = { ["1" /* CUSTOMER_NAME */]: { value: "1" /* CUSTOMER_NAME */, name: "T\xEAn kh\xE1ch h\xE0ng", maxLength: 30 }, ["2" /* PHONE_NUMBER */]: { value: "2" /* PHONE_NUMBER */, name: "S\u1ED1 \u0111i\u1EC7n tho\u1EA1i", maxLength: 15 }, ["3" /* ADDRESS */]: { value: "3" /* ADDRESS */, name: "\u0110\u1ECBa ch\u1EC9", maxLength: 200 }, ["4" /* CODE */]: { value: "4" /* CODE */, name: "M\xE3 s\u1ED1", maxLength: 30 }, ["5" /* CUSTOM_LABEL */]: { value: "5" /* CUSTOM_LABEL */, name: "Nh\xE3n t\xF9y ch\u1EC9nh", maxLength: 30 }, ["6" /* TRANSACTION_STATUS */]: { value: "6" /* TRANSACTION_STATUS */, name: "Tr\u1EA1ng th\xE1i giao d\u1ECBch", maxLength: 30 }, ["7" /* CONTACT_INFO */]: { value: "7" /* CONTACT_INFO */, name: "Th\xF4ng tin li\xEAn h\u1EC7", maxLength: 50 }, ["8" /* GENDER_TITLE */]: { value: "8" /* GENDER_TITLE */, name: "Gi\u1EDBi t\xEDnh / Danh x\u01B0ng", maxLength: 5 }, ["9" /* PRODUCT_BRAND */]: { value: "9" /* PRODUCT_BRAND */, name: "T\xEAn s\u1EA3n ph\u1EA9m / Th\u01B0\u01A1ng hi\u1EC7u", maxLength: 200 }, ["10" /* QUANTITY_AMOUNT */]: { value: "10" /* QUANTITY_AMOUNT */, name: "S\u1ED1 l\u01B0\u1EE3ng / S\u1ED1 ti\u1EC1n", maxLength: 20 }, ["11" /* TIME */]: { value: "11" /* TIME */, name: "Th\u1EDDi gian", maxLength: 20 }, ["12" /* OTP */]: { value: "12" /* OTP */, name: "OTP", maxLength: 10 }, ["13" /* URL */]: { value: "13" /* URL */, name: "URL", maxLength: 200 }, ["14" /* CURRENCY */]: { value: "14" /* CURRENCY */, name: "Ti\u1EC1n t\u1EC7 (VN\u0110)", maxLength: 12 }, ["15" /* BANK_TRANSFER_NOTE */]: { value: "15" /* BANK_TRANSFER_NOTE */, name: "Bank transfer note", maxLength: 90 } }; var ZNS_TEMPLATE_TAG_COMPATIBILITY = { [1 /* CUSTOM */]: [ "1" /* TRANSACTION */, "2" /* CUSTOMER_CARE */, "3" /* PROMOTION */ ], [2 /* AUTHENTICATION */]: [ "1" /* TRANSACTION */ ], [3 /* PAYMENT_REQUEST */]: [ "1" /* TRANSACTION */ ], [4 /* VOUCHER */]: [ "1" /* TRANSACTION */, "2" /* CUSTOMER_CARE */, "3" /* PROMOTION */ ], [5 /* SERVICE_RATING */]: [ "2" /* CUSTOMER_CARE */ ] }; var ZNSValidation = { /** * Kiểm tra template name hợp lệ */ isValidTemplateName: (name) => { return name.length >= 10 && name.length <= 60; }, /** * Kiểm tra note hợp lệ */ isValidNote: (note) => { return note.length >= 1 && note.length <= 400; }, /** * Kiểm tra tag có tương thích với template type không */ isTagCompatibleWithType: (templateType, tag) => { const compatibleTags = ZNS_TEMPLATE_TAG_COMPATIBILITY[templateType]; return compatibleTags ? compatibleTags.includes(tag) : false; }, /** * Kiểm tra param value có hợp lệ với type không */ isValidParamValue: (paramType, value) => { const typeInfo = ZNS_PARAM_TYPES[paramType]; return typeInfo ? value.length <= typeInfo.maxLength : false; } }; // src/types/webhook.ts var WebhookEventName = /* @__PURE__ */ ((WebhookEventName2) => { WebhookEventName2["USER_SEND_LOCATION"] = "user_send_location"; WebhookEventName2["USER_SEND_IMAGE"] = "user_send_image"; WebhookEventName2["USER_SEND_LINK"] = "user_send_link"; WebhookEventName2["USER_SEND_TEXT"] = "user_send_text"; WebhookEventName2["USER_SEND_STICKER"] = "user_send_sticker"; WebhookEventName2["USER_SEND_GIF"] = "user_send_gif"; WebhookEventName2["USER_SEND_AUDIO"] = "user_send_audio"; WebhookEventName2["USER_SEND_VIDEO"] = "user_send_video"; WebhookEventName2["USER_SEND_FILE"] = "user_send_file"; WebhookEventName2["USER_RECEIVED_MESSAGE"] = "user_received_message"; WebhookEventName2["USER_SEEN_MESSAGE"] = "user_seen_message"; WebhookEventName2["FOLLOW"] = "follow"; WebhookEventName2["UNFOLLOW"] = "unfollow"; WebhookEventName2["USER_SUBMIT_INFO"] = "user_submit_info"; WebhookEventName2["OA_SEND_TEXT"] = "oa_send_text"; WebhookEventName2["OA_SEND_IMAGE"] = "oa_send_image"; WebhookEventName2["OA_SEND_GIF"] = "oa_send_gif"; WebhookEventName2["OA_SEND_LIST"] = "oa_send_list"; WebhookEventName2["OA_SEND_FILE"] = "oa_send_file"; WebhookEventName2["OA_SEND_STICKER"] = "oa_send_sticker"; WebhookEventName2["USER_CLICK_CHATNOW"] = "user_click_chatnow"; WebhookEventName2["USER_REACTED_MESSAGE"] = "user_reacted_message"; WebhookEventName2["USER_REPLY_CONSENT"] = "user_reply_consent"; WebhookEventName2["OA_REACTED_MESSAGE"] = "oa_reacted_message"; WebhookEventName2["OA_SEND_CONSENT"] = "oa_send_consent"; WebhookEventName2["ANONYMOUS_SEND_TEXT"] = "anonymous_send_text"; WebhookEventName2["ANONYMOUS_SEND_IMAGE"] = "anonymous_send_image"; WebhookEventName2["ANONYMOUS_SEND_FILE"] = "anonymous_send_file"; WebhookEventName2["ANONYMOUS_SEND_STICKER"] = "anonymous_send_sticker"; WebhookEventName2["OA_SEND_ANONYMOUS_TEXT"] = "oa_send_anonymous_text"; WebhookEventName2["OA_SEND_ANONYMOUS_IMAGE"] = "oa_send_anonymous_image"; WebhookEventName2["OA_SEND_ANONYMOUS_FILE"] = "oa_send_anonymous_file"; WebhookEventName2["OA_SEND_ANONYMOUS_STICKER"] = "oa_send_anonymous_sticker"; WebhookEventName2["OA_CALL_USER"] = "oa_call_user"; WebhookEventName2["USER_CALL_OA"] = "user_call_oa"; WebhookEventName2["OA_SEND_TEMPLATE"] = "oa_send_template"; WebhookEventName2["USER_SEND_BUSINESS_CARD"] = "user_send_business_card"; WebhookEventName2["USER_FEEDBACK"] = "user_feedback"; WebhookEventName2["CHANGE_OA_DAILY_QUOTA"] = "change_oa_daily_quota"; WebhookEventName2["CHANGE_OA_TEMPLATE_TAGS"] = "change_oa_template_tags"; WebhookEventName2["CHANGE_TEMPLATE_QUALITY"] = "change_template_quality"; WebhookEventName2["CHANGE_TEMPLATE_QUOTA"] = "change_template_quota"; WebhookEventName2["CHANGE_TEMPLATE_STATUS"] = "change_template_status"; WebhookEventName2["EVENT_JOURNEY_TIME_OUT"] = "event_journey_time_out"; WebhookEventName2["EVENT_JOURNEY_ACKNOWLEDGED"] = "event_journey_acknowledged"; WebhookEventName2["ZNS_USER_RECEIVED_MESSAGE"] = "user_received_message"; WebhookEventName2["CREATE_GROUP"] = "create_group"; WebhookEventName2["USER_JOIN_GROUP"] = "user_join_group"; WebhookEventName2["USER_REQUEST_JOIN_GROUP"] = "user_request_join_group"; WebhookEventName2["REACT_REQUEST_JOIN_GROUP"] = "react_request_join_group"; WebhookEventName2["REJECT_REQUEST_JOIN_GROUP"] = "reject_request_join_group"; WebhookEventName2["ADD_GROUP_ADMIN"] = "add_group_admin"; WebhookEventName2["REMOVE_GROUP_ADMIN"] = "remove_group_admin"; WebhookEventName2["UPDATE_GROUP_INFO"] = "update_group_info"; WebhookEventName2["USER_OUT_GROUP"] = "user_out_group"; WebhookEventName2["OA_SEND_GROUP_TEXT"] = "oa_send_group_text"; WebhookEventName2["OA_SEND_GROUP_IMAGE"] = "oa_send_group_image"; WebhookEventName2["OA_SEND_GROUP_LINK"] = "oa_send_group_link"; WebhookEventName2["OA_SEND_GROUP_AUDIO"] = "oa_send_group_audio"; WebhookEventName2["OA_SEND_GROUP_LOCATION"] = "oa_send_group_location"; WebhookEventName2["OA_SEND_GROUP_VIDEO"] = "oa_send_group_video"; WebhookEventName2["OA_SEND_GROUP_BUSINESS_CARD"] = "oa_send_group_business_card"; WebhookEventName2["OA_SEND_GROUP_STICKER"] = "oa_send_group_sticker"; WebhookEventName2["OA_SEND_GROUP_GIF"] = "oa_send_group_gif"; WebhookEventName2["OA_SEND_GROUP_FILE"] = "oa_send_group_file"; WebhookEventName2["USER_SEND_GROUP_TEXT"] = "user_send_group_text"; WebhookEventName2["USER_SEND_GROUP_IMAGE"] = "user_send_group_image"; WebhookEventName2["USER_SEND_GROUP_LINK"] = "user_send_group_link"; WebhookEventName2["USER_SEND_GROUP_AUDIO"] = "user_send_group_audio"; WebhookEventName2["USER_SEND_GROUP_LOCATION"] = "user_send_group_location"; WebhookEventName2["USER_SEND_GROUP_VIDEO"] = "user_send_group_video"; WebhookEventName2["USER_SEND_GROUP_BUSINESS_CARD"] = "user_send_group_business_card"; WebhookEventName2["USER_SEND_GROUP_STICKER"] = "user_send_group_sticker"; WebhookEventName2["USER_SEND_GROUP_GIF"] = "user_send_group_gif"; WebhookEventName2["USER_SEND_GROUP_FILE"] = "user_send_group_file"; WebhookEventName2["WIDGET_INTERACTION_ACCEPTED"] = "widget_interaction_accepted"; WebhookEventName2["WIDGET_FAILED_TO_SYNC_USER_EXTERNAL_ID"] = "widget_failed_to_sync_user_external_id"; WebhookEventName2["PERMISSION_REVOKED"] = "permission_revoked"; WebhookEventName2["EXTENSION_PURCHASED"] = "extension_purchased"; WebhookEventName2["UPDATE_USER_INFO"] = "update_user_info"; WebhookEventName2["SHOP_HAS_ORDER"] = "shop_has_order"; WebhookEventName2["ADD_USER_TO_TAG"] = "add_user_to_tag"; return WebhookEventName2; })(WebhookEventName || {}); var AttachmentType = /* @__PURE__ */ ((AttachmentType2) => { AttachmentType2["LOCATION"] = "location"; AttachmentType2["IMAGE"] = "image"; AttachmentType2["LINK"] = "link"; AttachmentType2["STICKER"] = "sticker"; AttachmentType2["GIF"] = "gif"; AttachmentType2["AUDIO"] = "audio"; AttachmentType2["VIDEO"] = "video"; AttachmentType2["FILE"] = "file"; return AttachmentType2; })(AttachmentType || {}); function isMessageEvent(event) { return [ "user_send_location" /* USER_SEND_LOCATION */, "user_send_image" /* USER_SEND_IMAGE */, "user_send_link" /* USER_SEND_LINK */, "user_send_text" /* USER_SEND_TEXT */, "user_send_sticker" /* USER_SEND_STICKER */, "user_send_gif" /* USER_SEND_GIF */, "user_send_audio" /* USER_SEND_AUDIO */, "user_send_video" /* USER_SEND_VIDEO */, "user_send_file" /* USER_SEND_FILE */, "user_received_message" /* USER_RECEIVED_MESSAGE */, "user_seen_message" /* USER_SEEN_MESSAGE */, "oa_send_text" /* OA_SEND_TEXT */, "oa_send_image" /* OA_SEND_IMAGE */, "oa_send_gif" /* OA_SEND_GIF */, "oa_send_list" /* OA_SEND_LIST */, "oa_send_file" /* OA_SEND_FILE */, "oa_send_sticker" /* OA_SEND_STICKER */, "oa_send_anonymous_text" /* OA_SEND_ANONYMOUS_TEXT */, "oa_send_anonymous_image" /* OA_SEND_ANONYMOUS_IMAGE */, "oa_send_anonymous_file" /* OA_SEND_ANONYMOUS_FILE */, "oa_send_anonymous_sticker" /* OA_SEND_ANONYMOUS_STICKER */, "oa_send_template" /* OA_SEND_TEMPLATE */, "anonymous_send_text" /* ANONYMOUS_SEND_TEXT */, "anonymous_send_image" /* ANONYMOUS_SEND_IMAGE */, "anonymous_send_file" /* ANONYMOUS_SEND_FILE */, "anonymous_send_sticker" /* ANONYMOUS_SEND_STICKER */, "user_send_business_card" /* USER_SEND_BUSINESS_CARD */, "oa_send_group_text" /* OA_SEND_GROUP_TEXT */, "oa_send_group_image" /* OA_SEND_GROUP_IMAGE */, "oa_send_group_link" /* OA_SEND_GROUP_LINK */, "oa_send_group_audio" /* OA_SEND_GROUP_AUDIO */, "oa_send_group_location" /* OA_SEND_GROUP_LOCATION */, "oa_send_group_video" /* OA_SEND_GROUP_VIDEO */, "oa_send_group_business_card" /* OA_SEND_GROUP_BUSINESS_CARD */, "oa_send_group_sticker" /* OA_SEND_GROUP_STICKER */, "oa_send_group_gif" /* OA_SEND_GROUP_GIF */, "oa_send_group_file" /* OA_SEND_GROUP_FILE */, "user_send_group_text" /* USER_SEND_GROUP_TEXT */, "user_send_group_link" /* USER_SEND_GROUP_LINK */, "user_send_group_audio" /* USER_SEND_GROUP_AUDIO */, "user_send_group_location" /* USER_SEND_GROUP_LOCATION */, "user_send_group_video" /* USER_SEND_GROUP_VIDEO */, "user_send_group_business_card" /* USER_SEND_GROUP_BUSINESS_CARD */, "user_send_group_sticker" /* USER_SEND_GROUP_STICKER */, "user_send_group_gif" /* USER_SEND_GROUP_GIF */, "user_send_group_file" /* USER_SEND_GROUP_FILE */ ].includes(event.event_name); } function isFollowEvent(event) { return ["follow" /* FOLLOW */, "unfollow" /* UNFOLLOW */].includes( event.event_name ); } function isUserActionEvent(event) { return [ "follow" /* FOLLOW */, "unfollow" /* UNFOLLOW */, "user_submit_info" /* USER_SUBMIT_INFO */, "user_click_chatnow" /* USER_CLICK_CHATNOW */, "user_reacted_message" /* USER_REACTED_MESSAGE */, "user_reply_consent" /* USER_REPLY_CONSENT */, "user_send_business_card" /* USER_SEND_BUSINESS_CARD */, "user_feedback" /* USER_FEEDBACK */ ].includes(event.event_name); } function isShopEvent(event) { return event.event_name === "shop_has_order" /* SHOP_HAS_ORDER */; } function isOAMessageEvent(event) { return [ "oa_send_text" /* OA_SEND_TEXT */, "oa_send_image" /* OA_SEND_IMAGE */, "oa_send_gif" /* OA_SEND_GIF */, "oa_send_list" /* OA_SEND_LIST */, "oa_send_file" /* OA_SEND_FILE */, "oa_send_sticker" /* OA_SEND_STICKER */, "oa_send_anonymous_text" /* OA_SEND_ANONYMOUS_TEXT */, "oa_send_anonymous_image" /* OA_SEND_ANONYMOUS_IMAGE */, "oa_send_anonymous_file" /* OA_SEND_ANONYMOUS_FILE */, "oa_send_anonymous_sticker" /* OA_SEND_ANONYMOUS_STICKER */, "oa_send_template" /* OA_SEND_TEMPLATE */ ].includes(event.event_name); } function isAnonymousEvent(event) { return [ "anonymous_send_text" /* ANONYMOUS_SEND_TEXT */, "anonymous_send_image" /* ANONYMOUS_SEND_IMAGE */, "anonymous_send_file" /* ANONYMOUS_SEND_FILE */, "anonymous_send_sticker" /* ANONYMOUS_SEND_STICKER */ ].includes(event.event_name); } function isCallEvent(event) { return [ "oa_call_user" /* OA_CALL_USER */, "user_call_oa" /* USER_CALL_OA */ ].includes(event.event_name); } function isTemplateEvent(event) { return event.event_name === "oa_send_template" /* OA_SEND_TEMPLATE */; } function isBusinessCardEvent(event) { return event.event_name === "user_send_business_card" /* USER_SEND_BUSINESS_CARD */; } function isFeedbackEvent(event) { return event.event_name === "user_feedback" /* USER_FEEDBACK */; } function isZNSEvent(event) { return [ "change_oa_daily_quota" /* CHANGE_OA_DAILY_QUOTA */, "change_oa_template_tags" /* CHANGE_OA_TEMPLATE_TAGS */, "change_template_quality" /* CHANGE_TEMPLATE_QUALITY */, "change_template_quota" /* CHANGE_TEMPLATE_QUOTA */, "change_template_status" /* CHANGE_TEMPLATE_STATUS */, "event_journey_time_out" /* EVENT_JOURNEY_TIME_OUT */, "event_journey_acknowledged" /* EVENT_JOURNEY_ACKNOWLEDGED */, "user_received_message" /* ZNS_USER_RECEIVED_MESSAGE */ ].includes(event.event_name); } function isGroupEvent(event) { return [ "create_group" /* CREATE_GROUP */, "user_join_group" /* USER_JOIN_GROUP */, "user_request_join_group" /* USER_REQUEST_JOIN_GROUP */, "react_request_join_group" /* REACT_REQUEST_JOIN_GROUP */, "reject_request_join_group" /* REJECT_REQUEST_JOIN_GROUP */, "add_group_admin" /* ADD_GROUP_ADMIN */, "remove_group_admin" /* REMOVE_GROUP_ADMIN */, "update_group_info" /* UPDATE_GROUP_INFO */, "user_out_group" /* USER_OUT_GROUP */, "oa_send_group_text" /* OA_SEND_GROUP_TEXT */, "oa_send_group_image" /* OA_SEND_GROUP_IMAGE */, "oa_send_group_link" /* OA_SEND_GROUP_LINK */, "oa_send_group_audio" /* OA_SEND_GROUP_AUDIO */, "oa_send_group_location" /* OA_SEND_GROUP_LOCATION */, "oa_send_group_video" /* OA_SEND_GROUP_VIDEO */, "oa_send_group_business_card" /* OA_SEND_GROUP_BUSINESS_CARD */, "oa_send_group_sticker" /* OA_SEND_GROUP_STICKER */, "oa_send_group_gif" /* OA_SEND_GROUP_GIF */, "oa_send_group_file" /* OA_SEND_GROUP_FILE */, "user_send_group_text" /* USER_SEND_GROUP_TEXT */, "user_send_group_link" /* USER_SEND_GROUP_LINK */, "user_send_group_audio" /* USER_SEND_GROUP_AUDIO */, "user_send_group_location" /* USER_SEND_GROUP_LOCATION */, "user_send_group_video" /* USER_SEND_GROUP_VIDEO */, "user_send_group_business_card" /* USER_SEND_GROUP_BUSINESS_CARD */, "user_send_group_sticker" /* USER_SEND_GROUP_STICKER */, "user_send_group_gif" /* USER_SEND_GROUP_GIF */, "user_send_group_file" /* USER_SEND_GROUP_FILE */ ].includes(event.event_name); } function isJourneyEvent(event) { return [ "event_journey_time_out" /* EVENT_JOURNEY_TIME_OUT */, "event_journey_acknowledged" /* EVENT_JOURNEY_ACKNOWLEDGED */ ].includes(event.event_name); } function isQuotaTemplateEvent(event) { return [ "change_oa_daily_quota" /* CHANGE_OA_DAILY_QUOTA */, "change_oa_template_tags" /* CHANGE_OA_TEMPLATE_TAGS */, "change_template_quality" /* CHANGE_TEMPLATE_QUALITY */, "change_template_quota" /* CHANGE_TEMPLATE_QUOTA */, "change_template_status" /* CHANGE_TEMPLATE_STATUS */ ].includes(event.event_name); } function isWidgetEvent(event) { return [ "widget_interaction_accepted" /* WIDGET_INTERACTION_ACCEPTED */, "widget_failed_to_sync_user_external_id" /* WIDGET_FAILED_TO_SYNC_USER_EXTERNAL_ID */ ].includes(event.event_name); } function isSystemEvent(event) { return [ "add_user_to_tag" /* ADD_USER_TO_TAG */, "permission_revoked" /* PERMISSION_REVOKED */, "extension_purchased" /* EXTENSION_PURCHASED */, "update_user_info" /* UPDATE_USER_INFO */ ].includes(event.event_name); } function isPermissionEvent(event) { return event.event_name === "permission_revoked" /* PERMISSION_REVOKED */; } function isExtensionEvent(event) { return event.event_name === "extension_purchased" /* EXTENSION_PURCHASED */; } function isUpdateUserInfoEvent(event) { return event.event_name === "update_user_info" /* UPDATE_USER_INFO */; } function isReactionEvent(event) { return [ "user_reacted_message" /* USER_REACTED_MESSAGE */, "oa_reacted_message" /* OA_REACTED_MESSAGE */ ].includes(event.event_name); } function isConsentEvent(event) { return [ "oa_send_consent" /* OA_SEND_CONSENT */, "user_reply_consent" /* USER_REPLY_CONSENT */ ].includes(event.event_name); } function hasAttachments(message) { return "attachments" in message && Array.isArray(message.attachments); } function isUserMessageEvent(event) { return [ "user_send_location" /* USER_SEND_LOCATION */, "user_send_image" /* USER_SEND_IMAGE */, "user_send_link" /* USER_SEND_LINK */, "user_send_text" /* USER_SEND_TEXT */, "user_send_sticker" /* USER_SEND_STICKER */, "user_send_gif" /* USER_SEND_GIF */, "user_send_audio" /* USER_SEND_AUDIO */, "user_send_video" /* USER_SEND_VIDEO */, "user_send_file" /* USER_SEND_FILE */, "user_received_message" /* USER_RECEIVED_MESSAGE */, "user_seen_message" /* USER_SEEN_MESSAGE */, "user_send_business_card" /* USER_SEND_BUSINESS_CARD */ ].includes(event.event_name); } function isGroupMessageEvent(event) { return [ "user_send_group_text" /* USER_SEND_GROUP_TEXT */, "user_send_group_link" /* USER_SEND_GROUP_LINK */, "user_send_group_audio" /* USER_SEND_GROUP_AUDIO */, "user_send_group_location" /* USER_SEND_GROUP_LOCATION */, "user_send_group_video" /* USER_SEND_GROUP_VIDEO */, "user_send_group_business_card" /* USER_SEND_GROUP_BUSINESS_CARD */, "user_send_group_sticker" /* USER_SEND_GROUP_STICKER */, "user_send_group_gif" /* USER_SEND_GROUP_GIF */, "user_send_group_file" /* USER_SEND_GROUP_FILE */ ].includes(event.event_name); } function isOAToUserMessageEvent(event) { return [ "oa_send_text" /* OA_SEND_TEXT */, "oa_send_image" /* OA_SEND_IMAGE */, "oa_send_gif" /* OA_SEND_GIF */, "oa_send_list" /* OA_SEND_LIST */, "oa_send_file" /* OA_SEND_FILE */, "oa_send_sticker" /* OA_SEND_STICKER */, "oa_send_template" /* OA_SEND_TEMPLATE */ ].includes(event.event_name); } function isOAToGroupMessageEvent(event) { return [ "oa_send_group_text" /* OA_SEND_GROUP_TEXT */, "oa_send_group_image" /* OA_SEND_GROUP_IMAGE */, "oa_send_group_link" /* OA_SEND_GROUP_LINK */, "oa_send_group_audio" /* OA_SEND_GROUP_AUDIO */, "oa_send_group_location" /* OA_SEND_GROUP_LOCATION */, "oa_send_group_video" /* OA_SEND_GROUP_VIDEO */, "oa_send_group_business_card" /* OA_SEND_GROUP_BUSINESS_CARD */, "oa_send_group_sticker" /* OA_SEND_GROUP_STICKER */, "oa_send_group_gif" /* OA_SEND_GROUP_GIF */, "oa_send_group_file" /* OA_SEND_GROUP_FILE */ ].includes(event.event_name); } function getMessageDirection(event) { if (isUserMessageEvent(event)) { return { direction: "incoming", target: "user", description: "Tin nh\u1EAFn t\u1EEB ng\u01B0\u1EDDi d\xF9ng c\xE1 nh\xE2n g\u1EEDi t\u1EDBi OA" }; } if (isGroupMessageEvent(event)) { return { direction: "incoming", target: "group", description: "Tin nh\u1EAFn t\u1EEB ng\u01B0\u1EDDi d\xF9ng trong group" }; } if (isOAToUserMessageEvent(event)) { return { direction: "outgoing", target: "user", description: "Tin nh\u1EAFn t\u1EEB OA g\u1EEDi t\u1EDBi ng\u01B0\u1EDDi d\xF9ng c\xE1 nh\xE2n" }; } if (isOAToGroupMessageEvent(event)) { return { direction: "outgoing", target: "group", description: "Tin nh\u1EAFn t\u1EEB OA g\u1EEDi t\u1EDBi group" }; } return { direction: "unknown", target: "unknown", description: "Lo\u1EA1i s\u1EF1 ki\u1EC7n kh\xF4ng x\xE1c \u0111\u1ECBnh" }; } function readWebhookString(value) { if (typeof value !== "string") { return null; } const normalizedValue = value.trim(); return normalizedValue.length > 0 ? normalizedValue : null; } function readWebhookObjectId(value) { if (!value || typeof value !== "object") { return null; } return readWebhookString(value.id); } function hasWebhookEventPrefix(event, prefix) { return event.event_name.startsWith(prefix); } function getWebhookEventAppId(event) { const directAppId = readWebhookString(event.app_id); if (directAppId) { return directAppId; } if ("message" in event && event.message && typeof event.message === "object") { const messageSource = event.message.source; if (messageSource && typeof messageSource === "object") { return readWebhookString( messageSource.app_id ); } } return null; } function getWebhookEventOaId(event) { const directOaId = readWebhookString(event.oa_id); if (directOaId) { return directOaId; } if (hasWebhookEventPrefix(event, "oa_")) { return readWebhookObjectId(event.sender); } if (hasWebhookEventPrefix(event, "user_") || hasWebhookEventPrefix(event, "anonymous_")) { return readWebhookObjectId(event.recipient); } return null; } function getWebhookEventSenderId(event) { const directSenderId = readWebhookObjectId( event.sender ); if (directSenderId) { return directSenderId; } const fallbackSenderId = readWebhookString(event.user_id) ?? readWebhookObjectId(event.follower) ?? readWebhookObjectId(event.customer) ?? readWebhookObjectId(event.user); if (fallbackSenderId) { return fallbackSenderId; } if (hasWebhookEventPrefix(event, "oa_")) { return getWebhookEventOaId(event); } return null; } function getWebhookEventRecipientId(event) { const directRecipientId = readWebhookObjectId( event.recipient ); if (directRecipientId) { return directRecipientId; } if (hasWebhookEventPrefix(event, "oa_")) { return readWebhookString(event.user_id); } return getWebhookEventOaId(event); } function getWebhookEventIdentifiers(event) { return { oaId: getWebhookEventOaId(event), appId: getWebhookEventAppId(event), senderId: getWebhookEventSenderId(event), recipientId: getWebhookEventRecipientId(event) }; } // src/utils/type-guards.ts function isUserSendGroupTextEvent(event) { return event.event_name === "user_send_group_text" /* USER_SEND_GROUP_TEXT */; } function isUserSendGroupImageEvent(event) { return event.event_name === "user_send_group_image" /* USER_SEND_GROUP_IMAGE */; } function isUserSendGroupVideoEvent(event) { return event.event_name === "user_send_group_video" /* USER_SEND_GROUP_VIDEO */; } function isUserSendGroupAudioEvent(event) { return event.event_name === "user_send_group_audio" /* USER_SEND_GROUP_AUDIO */; } function isUserSendGroupFileEvent(event) { return event.event_name === "user_send_group_file" /* USER_SEND_GROUP_FILE */; } function isUserGroupMessageEvent(event) { return [ "user_send_group_text" /* USER_SEND_GROUP_TEXT */, "user_send_group_image" /* USER_SEND_GROUP_IMAGE */, "user_send_group_video" /* USER_SEND_GROUP_VIDEO */, "user_send_group_audio" /* USER_SEND_GROUP_AUDIO */, "user_send_group_file" /* USER_SEND_GROUP_FILE */ ].includes(event.event_name); } function isOASendTextEvent(event) { return event.event_name === "oa_send_text" /* OA_SEND_TEXT */; } function isOASendImageEvent(event) { return event.event_name === "oa_send_image" /* OA_SEND_IMAGE */; } function isOASendFileEvent(event) { return event.event_name === "oa_send_file" /* OA_SEND_FILE */; } function isOASendStickerEvent(event) { return event.event_name === "oa_send_sticker" /* OA_SEND_STICKER */; } function isOASendGifEvent(event) { return event.event_name === "oa_send_gif" /* OA_SEND_GIF */; } function isOASendGroupTextEvent(event) { return event.event_name === "oa_send_group_text" /* OA_SEND_GROUP_TEXT */; } function isOASendGroupImageEvent(event) { return event.event_name === "oa_send_group_image" /* OA_SEND_GROUP_IMAGE */; } function isOASendGroupFileEvent(event) { return event.event_name === "oa_send_group_file" /* OA_SEND_GROUP_FILE */; } function isOASendGroupStickerEvent(event) { return event.event_name === "oa_send_group_sticker" /* OA_SEND_GROUP_STICKER */; } function isOASendGroupGifEvent(event) { return event.event_name === "oa_send_group_gif" /* OA_SEND_GROUP_GIF */; } function isFromGroup(event) { return "group_id" in event || event.event_name.includes("group"); } function isFromPersonal(event) { return !isFromGroup(event); } // src/clients/base-client.ts var import_axios = __toESM(require("axios")); var import_form_data = __toESM(require("form-data")); var BaseClient = class { constructor(config) { this.config = { appId: config.appId, appSecret: config.appSecret, timeout: config.timeout || 3e4, debug: config.debug || false, apiBaseUrl: config.apiBaseUrl || "https://openapi.zalo.me", retry: { attempts: config.retry?.attempts || 3, delay: config.retry?.delay || 1e3, ...config.retry } }; this.logger = new ConsoleLogger(this.config.debug); this.axios = import_axios.default.create({ baseURL: this.config.apiBaseUrl, timeout: this.config.timeout, headers: { "Content-Type": "application/json", "User-Agent": "RedAI-Zalo-SDK/1.0.0" } }); this.setupInterceptors(); } /** * Setup axios interceptors for logging and error handling */ setupInterceptors() { this.axios.interceptors.request.use( (config) => { this.logger.debug( `Making ${config.method?.toUpperCase()} request to ${config.url}`, { headers: this.sanitizeHeaders(config.headers || {}), params: config.params } ); return config; }, (error) => { this.logger.error("Request setup error:", error.message); return Promise.reject(error); } ); this.axios.interceptors.response.use( (response) => { this.logger.debug(`Received response from ${response.config.url}`, { status: response.status, data: response.data }); return