UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs

419 lines 17 kB
"use strict"; /** * Types for Zalo Webhook Events * Based on Zalo Official Account Webhook API */ Object.defineProperty(exports, "__esModule", { value: true }); exports.AttachmentType = exports.WebhookEventName = void 0; exports.isMessageEvent = isMessageEvent; exports.isFollowEvent = isFollowEvent; exports.isUserActionEvent = isUserActionEvent; exports.isShopEvent = isShopEvent; exports.isOAMessageEvent = isOAMessageEvent; exports.isAnonymousEvent = isAnonymousEvent; exports.isCallEvent = isCallEvent; exports.isTemplateEvent = isTemplateEvent; exports.isBusinessCardEvent = isBusinessCardEvent; exports.isFeedbackEvent = isFeedbackEvent; exports.isZNSEvent = isZNSEvent; exports.isGroupEvent = isGroupEvent; exports.isJourneyEvent = isJourneyEvent; exports.isQuotaTemplateEvent = isQuotaTemplateEvent; exports.isWidgetEvent = isWidgetEvent; exports.isSystemEvent = isSystemEvent; exports.isPermissionEvent = isPermissionEvent; exports.isExtensionEvent = isExtensionEvent; exports.isUpdateUserInfoEvent = isUpdateUserInfoEvent; exports.isReactionEvent = isReactionEvent; exports.isConsentEvent = isConsentEvent; exports.hasAttachments = hasAttachments; // ==================== EVENT NAME ENUMS ==================== /** * Webhook event names enum */ var WebhookEventName; (function (WebhookEventName) { // User message events WebhookEventName["USER_SEND_LOCATION"] = "user_send_location"; WebhookEventName["USER_SEND_IMAGE"] = "user_send_image"; WebhookEventName["USER_SEND_LINK"] = "user_send_link"; WebhookEventName["USER_SEND_TEXT"] = "user_send_text"; WebhookEventName["USER_SEND_STICKER"] = "user_send_sticker"; WebhookEventName["USER_SEND_GIF"] = "user_send_gif"; WebhookEventName["USER_SEND_AUDIO"] = "user_send_audio"; WebhookEventName["USER_SEND_VIDEO"] = "user_send_video"; WebhookEventName["USER_SEND_FILE"] = "user_send_file"; WebhookEventName["USER_RECEIVED_MESSAGE"] = "user_received_message"; WebhookEventName["USER_SEEN_MESSAGE"] = "user_seen_message"; // User action events WebhookEventName["FOLLOW"] = "follow"; WebhookEventName["UNFOLLOW"] = "unfollow"; WebhookEventName["USER_SUBMIT_INFO"] = "user_submit_info"; // OA message events WebhookEventName["OA_SEND_TEXT"] = "oa_send_text"; WebhookEventName["OA_SEND_IMAGE"] = "oa_send_image"; WebhookEventName["OA_SEND_GIF"] = "oa_send_gif"; WebhookEventName["OA_SEND_LIST"] = "oa_send_list"; WebhookEventName["OA_SEND_FILE"] = "oa_send_file"; WebhookEventName["OA_SEND_STICKER"] = "oa_send_sticker"; // User interaction events WebhookEventName["USER_CLICK_CHATNOW"] = "user_click_chatnow"; WebhookEventName["USER_REACTED_MESSAGE"] = "user_reacted_message"; WebhookEventName["USER_REPLY_CONSENT"] = "user_reply_consent"; // OA interaction events WebhookEventName["OA_REACTED_MESSAGE"] = "oa_reacted_message"; WebhookEventName["OA_SEND_CONSENT"] = "oa_send_consent"; // Anonymous user events WebhookEventName["ANONYMOUS_SEND_TEXT"] = "anonymous_send_text"; WebhookEventName["ANONYMOUS_SEND_IMAGE"] = "anonymous_send_image"; WebhookEventName["ANONYMOUS_SEND_FILE"] = "anonymous_send_file"; WebhookEventName["ANONYMOUS_SEND_STICKER"] = "anonymous_send_sticker"; // OA anonymous events WebhookEventName["OA_SEND_ANONYMOUS_TEXT"] = "oa_send_anonymous_text"; WebhookEventName["OA_SEND_ANONYMOUS_IMAGE"] = "oa_send_anonymous_image"; WebhookEventName["OA_SEND_ANONYMOUS_FILE"] = "oa_send_anonymous_file"; WebhookEventName["OA_SEND_ANONYMOUS_STICKER"] = "oa_send_anonymous_sticker"; // Call events WebhookEventName["OA_CALL_USER"] = "oa_call_user"; WebhookEventName["USER_CALL_OA"] = "user_call_oa"; // Template and business card events WebhookEventName["OA_SEND_TEMPLATE"] = "oa_send_template"; WebhookEventName["USER_SEND_BUSINESS_CARD"] = "user_send_business_card"; // Feedback events WebhookEventName["USER_FEEDBACK"] = "user_feedback"; // ZNS events WebhookEventName["CHANGE_OA_DAILY_QUOTA"] = "change_oa_daily_quota"; WebhookEventName["CHANGE_OA_TEMPLATE_TAGS"] = "change_oa_template_tags"; WebhookEventName["CHANGE_TEMPLATE_QUALITY"] = "change_template_quality"; WebhookEventName["CHANGE_TEMPLATE_QUOTA"] = "change_template_quota"; WebhookEventName["CHANGE_TEMPLATE_STATUS"] = "change_template_status"; WebhookEventName["EVENT_JOURNEY_TIME_OUT"] = "event_journey_time_out"; WebhookEventName["EVENT_JOURNEY_ACKNOWLEDGED"] = "event_journey_acknowledged"; WebhookEventName["ZNS_USER_RECEIVED_MESSAGE"] = "user_received_message"; // Group events WebhookEventName["CREATE_GROUP"] = "create_group"; WebhookEventName["USER_JOIN_GROUP"] = "user_join_group"; WebhookEventName["USER_REQUEST_JOIN_GROUP"] = "user_request_join_group"; WebhookEventName["REACT_REQUEST_JOIN_GROUP"] = "react_request_join_group"; WebhookEventName["REJECT_REQUEST_JOIN_GROUP"] = "reject_request_join_group"; WebhookEventName["ADD_GROUP_ADMIN"] = "add_group_admin"; WebhookEventName["REMOVE_GROUP_ADMIN"] = "remove_group_admin"; WebhookEventName["UPDATE_GROUP_INFO"] = "update_group_info"; WebhookEventName["USER_OUT_GROUP"] = "user_out_group"; WebhookEventName["OA_SEND_GROUP_TEXT"] = "oa_send_group_text"; WebhookEventName["OA_SEND_GROUP_IMAGE"] = "oa_send_group_image"; WebhookEventName["OA_SEND_GROUP_LINK"] = "oa_send_group_link"; WebhookEventName["OA_SEND_GROUP_AUDIO"] = "oa_send_group_audio"; WebhookEventName["OA_SEND_GROUP_LOCATION"] = "oa_send_group_location"; WebhookEventName["OA_SEND_GROUP_VIDEO"] = "oa_send_group_video"; WebhookEventName["OA_SEND_GROUP_BUSINESS_CARD"] = "oa_send_group_business_card"; WebhookEventName["OA_SEND_GROUP_STICKER"] = "oa_send_group_sticker"; WebhookEventName["OA_SEND_GROUP_GIF"] = "oa_send_group_gif"; WebhookEventName["OA_SEND_GROUP_FILE"] = "oa_send_group_file"; WebhookEventName["USER_SEND_GROUP_TEXT"] = "user_send_group_text"; WebhookEventName["USER_SEND_GROUP_LINK"] = "user_send_group_link"; WebhookEventName["USER_SEND_GROUP_AUDIO"] = "user_send_group_audio"; WebhookEventName["USER_SEND_GROUP_LOCATION"] = "user_send_group_location"; WebhookEventName["USER_SEND_GROUP_VIDEO"] = "user_send_group_video"; WebhookEventName["USER_SEND_GROUP_BUSINESS_CARD"] = "user_send_group_business_card"; WebhookEventName["USER_SEND_GROUP_STICKER"] = "user_send_group_sticker"; WebhookEventName["USER_SEND_GROUP_GIF"] = "user_send_group_gif"; WebhookEventName["USER_SEND_GROUP_FILE"] = "user_send_group_file"; // Widget events WebhookEventName["WIDGET_INTERACTION_ACCEPTED"] = "widget_interaction_accepted"; WebhookEventName["WIDGET_FAILED_TO_SYNC_USER_EXTERNAL_ID"] = "widget_failed_to_sync_user_external_id"; // System events WebhookEventName["PERMISSION_REVOKED"] = "permission_revoked"; WebhookEventName["EXTENSION_PURCHASED"] = "extension_purchased"; WebhookEventName["UPDATE_USER_INFO"] = "update_user_info"; // Shop events WebhookEventName["SHOP_HAS_ORDER"] = "shop_has_order"; // Legacy system events WebhookEventName["ADD_USER_TO_TAG"] = "add_user_to_tag"; })(WebhookEventName || (exports.WebhookEventName = WebhookEventName = {})); /** * Attachment types enum */ var AttachmentType; (function (AttachmentType) { AttachmentType["LOCATION"] = "location"; AttachmentType["IMAGE"] = "image"; AttachmentType["LINK"] = "link"; AttachmentType["STICKER"] = "sticker"; AttachmentType["GIF"] = "gif"; AttachmentType["AUDIO"] = "audio"; AttachmentType["VIDEO"] = "video"; AttachmentType["FILE"] = "file"; })(AttachmentType || (exports.AttachmentType = AttachmentType = {})); // ==================== UTILITY TYPES ==================== /** * Type guard to check if event is a message event */ function isMessageEvent(event) { return [ WebhookEventName.USER_SEND_LOCATION, WebhookEventName.USER_SEND_IMAGE, WebhookEventName.USER_SEND_LINK, WebhookEventName.USER_SEND_TEXT, WebhookEventName.USER_SEND_STICKER, WebhookEventName.USER_SEND_GIF, WebhookEventName.USER_SEND_AUDIO, WebhookEventName.USER_SEND_VIDEO, WebhookEventName.USER_SEND_FILE, WebhookEventName.USER_RECEIVED_MESSAGE, WebhookEventName.USER_SEEN_MESSAGE, WebhookEventName.OA_SEND_TEXT, WebhookEventName.OA_SEND_IMAGE, WebhookEventName.OA_SEND_GIF, WebhookEventName.OA_SEND_LIST, WebhookEventName.OA_SEND_FILE, WebhookEventName.OA_SEND_STICKER, WebhookEventName.OA_SEND_ANONYMOUS_TEXT, WebhookEventName.OA_SEND_ANONYMOUS_IMAGE, WebhookEventName.OA_SEND_ANONYMOUS_FILE, WebhookEventName.OA_SEND_ANONYMOUS_STICKER, WebhookEventName.OA_SEND_TEMPLATE, WebhookEventName.ANONYMOUS_SEND_TEXT, WebhookEventName.ANONYMOUS_SEND_IMAGE, WebhookEventName.ANONYMOUS_SEND_FILE, WebhookEventName.ANONYMOUS_SEND_STICKER, WebhookEventName.USER_SEND_BUSINESS_CARD, WebhookEventName.OA_SEND_GROUP_TEXT, WebhookEventName.OA_SEND_GROUP_IMAGE, WebhookEventName.OA_SEND_GROUP_LINK, WebhookEventName.OA_SEND_GROUP_AUDIO, WebhookEventName.OA_SEND_GROUP_LOCATION, WebhookEventName.OA_SEND_GROUP_VIDEO, WebhookEventName.OA_SEND_GROUP_BUSINESS_CARD, WebhookEventName.OA_SEND_GROUP_STICKER, WebhookEventName.OA_SEND_GROUP_GIF, WebhookEventName.OA_SEND_GROUP_FILE, WebhookEventName.USER_SEND_GROUP_TEXT, WebhookEventName.USER_SEND_GROUP_LINK, WebhookEventName.USER_SEND_GROUP_AUDIO, WebhookEventName.USER_SEND_GROUP_LOCATION, WebhookEventName.USER_SEND_GROUP_VIDEO, WebhookEventName.USER_SEND_GROUP_BUSINESS_CARD, WebhookEventName.USER_SEND_GROUP_STICKER, WebhookEventName.USER_SEND_GROUP_GIF, WebhookEventName.USER_SEND_GROUP_FILE, ].includes(event.event_name); } /** * Type guard to check if event is a follow/unfollow event */ function isFollowEvent(event) { return [WebhookEventName.FOLLOW, WebhookEventName.UNFOLLOW].includes(event.event_name); } /** * Type guard to check if event is a user action event */ function isUserActionEvent(event) { return [ WebhookEventName.FOLLOW, WebhookEventName.UNFOLLOW, WebhookEventName.USER_SUBMIT_INFO, WebhookEventName.USER_CLICK_CHATNOW, WebhookEventName.USER_REACTED_MESSAGE, WebhookEventName.USER_REPLY_CONSENT, WebhookEventName.USER_SEND_BUSINESS_CARD, WebhookEventName.USER_FEEDBACK, ].includes(event.event_name); } /** * Type guard to check if event is a shop event */ function isShopEvent(event) { return event.event_name === WebhookEventName.SHOP_HAS_ORDER; } /** * Type guard to check if event is an OA message event */ function isOAMessageEvent(event) { return [ WebhookEventName.OA_SEND_TEXT, WebhookEventName.OA_SEND_IMAGE, WebhookEventName.OA_SEND_GIF, WebhookEventName.OA_SEND_LIST, WebhookEventName.OA_SEND_FILE, WebhookEventName.OA_SEND_STICKER, WebhookEventName.OA_SEND_ANONYMOUS_TEXT, WebhookEventName.OA_SEND_ANONYMOUS_IMAGE, WebhookEventName.OA_SEND_ANONYMOUS_FILE, WebhookEventName.OA_SEND_ANONYMOUS_STICKER, WebhookEventName.OA_SEND_TEMPLATE, ].includes(event.event_name); } /** * Type guard to check if event is an anonymous user event */ function isAnonymousEvent(event) { return [ WebhookEventName.ANONYMOUS_SEND_TEXT, WebhookEventName.ANONYMOUS_SEND_IMAGE, WebhookEventName.ANONYMOUS_SEND_FILE, WebhookEventName.ANONYMOUS_SEND_STICKER, ].includes(event.event_name); } /** * Type guard to check if event is a call event */ function isCallEvent(event) { return [ WebhookEventName.OA_CALL_USER, WebhookEventName.USER_CALL_OA, ].includes(event.event_name); } /** * Type guard to check if event is a template event */ function isTemplateEvent(event) { return event.event_name === WebhookEventName.OA_SEND_TEMPLATE; } /** * Type guard to check if event is a business card event */ function isBusinessCardEvent(event) { return event.event_name === WebhookEventName.USER_SEND_BUSINESS_CARD; } /** * Type guard to check if event is a feedback event */ function isFeedbackEvent(event) { return event.event_name === WebhookEventName.USER_FEEDBACK; } /** * Type guard to check if event is a ZNS event */ function isZNSEvent(event) { return [ WebhookEventName.CHANGE_OA_DAILY_QUOTA, WebhookEventName.CHANGE_OA_TEMPLATE_TAGS, WebhookEventName.CHANGE_TEMPLATE_QUALITY, WebhookEventName.CHANGE_TEMPLATE_QUOTA, WebhookEventName.CHANGE_TEMPLATE_STATUS, WebhookEventName.EVENT_JOURNEY_TIME_OUT, WebhookEventName.EVENT_JOURNEY_ACKNOWLEDGED, WebhookEventName.ZNS_USER_RECEIVED_MESSAGE, ].includes(event.event_name); } /** * Type guard to check if event is a group event */ function isGroupEvent(event) { return [ WebhookEventName.CREATE_GROUP, WebhookEventName.USER_JOIN_GROUP, WebhookEventName.USER_REQUEST_JOIN_GROUP, WebhookEventName.REACT_REQUEST_JOIN_GROUP, WebhookEventName.REJECT_REQUEST_JOIN_GROUP, WebhookEventName.ADD_GROUP_ADMIN, WebhookEventName.REMOVE_GROUP_ADMIN, WebhookEventName.UPDATE_GROUP_INFO, WebhookEventName.USER_OUT_GROUP, WebhookEventName.OA_SEND_GROUP_TEXT, WebhookEventName.OA_SEND_GROUP_IMAGE, WebhookEventName.OA_SEND_GROUP_LINK, WebhookEventName.OA_SEND_GROUP_AUDIO, WebhookEventName.OA_SEND_GROUP_LOCATION, WebhookEventName.OA_SEND_GROUP_VIDEO, WebhookEventName.OA_SEND_GROUP_BUSINESS_CARD, WebhookEventName.OA_SEND_GROUP_STICKER, WebhookEventName.OA_SEND_GROUP_GIF, WebhookEventName.OA_SEND_GROUP_FILE, WebhookEventName.USER_SEND_GROUP_TEXT, WebhookEventName.USER_SEND_GROUP_LINK, WebhookEventName.USER_SEND_GROUP_AUDIO, WebhookEventName.USER_SEND_GROUP_LOCATION, WebhookEventName.USER_SEND_GROUP_VIDEO, WebhookEventName.USER_SEND_GROUP_BUSINESS_CARD, WebhookEventName.USER_SEND_GROUP_STICKER, WebhookEventName.USER_SEND_GROUP_GIF, WebhookEventName.USER_SEND_GROUP_FILE, ].includes(event.event_name); } /** * Type guard to check if event is a journey event */ function isJourneyEvent(event) { return [ WebhookEventName.EVENT_JOURNEY_TIME_OUT, WebhookEventName.EVENT_JOURNEY_ACKNOWLEDGED, ].includes(event.event_name); } /** * Type guard to check if event is a quota/template change event */ function isQuotaTemplateEvent(event) { return [ WebhookEventName.CHANGE_OA_DAILY_QUOTA, WebhookEventName.CHANGE_OA_TEMPLATE_TAGS, WebhookEventName.CHANGE_TEMPLATE_QUALITY, WebhookEventName.CHANGE_TEMPLATE_QUOTA, WebhookEventName.CHANGE_TEMPLATE_STATUS, ].includes(event.event_name); } /** * Type guard to check if event is a widget event */ function isWidgetEvent(event) { return [ WebhookEventName.WIDGET_INTERACTION_ACCEPTED, WebhookEventName.WIDGET_FAILED_TO_SYNC_USER_EXTERNAL_ID, ].includes(event.event_name); } /** * Type guard to check if event is a system event */ function isSystemEvent(event) { return [ WebhookEventName.ADD_USER_TO_TAG, WebhookEventName.PERMISSION_REVOKED, WebhookEventName.EXTENSION_PURCHASED, WebhookEventName.UPDATE_USER_INFO, ].includes(event.event_name); } /** * Type guard to check if event is a permission event */ function isPermissionEvent(event) { return event.event_name === WebhookEventName.PERMISSION_REVOKED; } /** * Type guard to check if event is an extension event */ function isExtensionEvent(event) { return event.event_name === WebhookEventName.EXTENSION_PURCHASED; } /** * Type guard to check if event is an update user info event */ function isUpdateUserInfoEvent(event) { return event.event_name === WebhookEventName.UPDATE_USER_INFO; } /** * Type guard to check if event is a reaction event */ function isReactionEvent(event) { return [ WebhookEventName.USER_REACTED_MESSAGE, WebhookEventName.OA_REACTED_MESSAGE, ].includes(event.event_name); } /** * Type guard to check if event is a consent event */ function isConsentEvent(event) { return [ WebhookEventName.OA_SEND_CONSENT, WebhookEventName.USER_REPLY_CONSENT, ].includes(event.event_name); } /** * Type guard to check if message has attachments */ function hasAttachments(message) { return ("attachments" in message && Array.isArray(message.attachments)); } //# sourceMappingURL=webhook.js.map