UNPKG

@warriorteam/zalo-webhook-types

Version:

TypeScript types for Zalo Personal webhook events from automation-web

216 lines 6.97 kB
/** * Message Event Types * * All message-related webhook events (44 total). * Includes text, media, file, and social message events. */ import { ZaloMessageEvent, ZaloMessageEventData, ZaloLinkPreview } from './base'; import { TextMessageEventType, LinkMessageEventType, ImageMessageEventType, VideoMessageEventType, VoiceMessageEventType, GifMessageEventType, FileMessageEventType, StickerMessageEventType, LocationMessageEventType, DoodleMessageEventType, GenericMessageEventType, ZaloMessageCategory, ZaloMessageType } from '../enums'; import { ZaloImageContent, ZaloVideoContent, ZaloVoiceContent, ZaloFileContent, ZaloGifContent, ZaloDoodleContent, ZaloStickerContent, ZaloLocationContent } from './content'; /** * Text message event * Triggered for plain text messages */ export interface ZaloTextMessageEvent extends ZaloMessageEvent { eventType: TextMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.WEBCHAT; content: string; messageType: ZaloMessageType.WEBCHAT; messageCategory: ZaloMessageCategory.TEXT; hasAttachment: false; }; } /** * Link message event * Triggered for messages containing URLs */ export interface ZaloLinkMessageEvent extends ZaloMessageEvent { eventType: LinkMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.LINK; content: string; messageType: ZaloMessageType.LINK; messageCategory: ZaloMessageCategory.TEXT; hasAttachment: false; links?: ZaloLinkPreview[]; }; } /** * Image message event * Triggered for image attachments */ export interface ZaloImageMessageEvent extends ZaloMessageEvent { eventType: ImageMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.PHOTO; content: ZaloImageContent; messageType: ZaloMessageType.PHOTO; messageCategory: ZaloMessageCategory.MEDIA; hasAttachment: true; }; } /** * Video message event * Triggered for video attachments */ export interface ZaloVideoMessageEvent extends ZaloMessageEvent { eventType: VideoMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.VIDEO; content: ZaloVideoContent; messageType: ZaloMessageType.VIDEO; messageCategory: ZaloMessageCategory.MEDIA; hasAttachment: true; }; } /** * Voice message event * Triggered for voice recordings */ export interface ZaloVoiceMessageEvent extends ZaloMessageEvent { eventType: VoiceMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.VOICE; content: ZaloVoiceContent; messageType: ZaloMessageType.VOICE; messageCategory: ZaloMessageCategory.MEDIA; hasAttachment: true; }; } /** * GIF message event * Triggered for animated GIF attachments */ export interface ZaloGifMessageEvent extends ZaloMessageEvent { eventType: GifMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.GIF; content: ZaloGifContent; messageType: ZaloMessageType.GIF; messageCategory: ZaloMessageCategory.MEDIA; hasAttachment: true; }; } /** * Doodle message event * Triggered for hand-drawn doodles */ export interface ZaloDoodleMessageEvent extends ZaloMessageEvent { eventType: DoodleMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.DOODLE; content: ZaloDoodleContent; messageType: ZaloMessageType.DOODLE; messageCategory: ZaloMessageCategory.MEDIA; hasAttachment: true; }; } /** * File message event * Triggered for file attachments */ export interface ZaloFileMessageEvent extends ZaloMessageEvent { eventType: FileMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.FILE; content: ZaloFileContent; messageType: ZaloMessageType.FILE; messageCategory: ZaloMessageCategory.FILE; hasAttachment: true; }; } /** * Sticker message event * Triggered for sticker/emoji messages */ export interface ZaloStickerMessageEvent extends ZaloMessageEvent { eventType: StickerMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.STICKER; content: string | ZaloStickerContent; messageType: ZaloMessageType.STICKER; messageCategory: ZaloMessageCategory.SOCIAL; hasAttachment: false; }; } /** * Location message event * Triggered for location sharing */ export interface ZaloLocationMessageEvent extends ZaloMessageEvent { eventType: LocationMessageEventType; data: ZaloMessageEventData & { msgType: ZaloMessageType.LOCATION; content: ZaloLocationContent; messageType: ZaloMessageType.LOCATION; messageCategory: ZaloMessageCategory.SOCIAL; hasAttachment: false; }; } /** * Generic message event * Fallback for unrecognized message types */ export interface ZaloGenericMessageEvent extends ZaloMessageEvent { eventType: GenericMessageEventType; data: ZaloMessageEventData & { content: string | object; hasAttachment: boolean; }; } /** * All text category message events */ export type ZaloTextCategoryEvent = ZaloTextMessageEvent | ZaloLinkMessageEvent; /** * All media category message events */ export type ZaloMediaCategoryEvent = ZaloImageMessageEvent | ZaloVideoMessageEvent | ZaloVoiceMessageEvent | ZaloGifMessageEvent | ZaloDoodleMessageEvent; /** * All file category message events */ export type ZaloFileCategoryEvent = ZaloFileMessageEvent; /** * All social category message events */ export type ZaloSocialCategoryEvent = ZaloStickerMessageEvent | ZaloLocationMessageEvent; /** * All message events with attachments */ export type ZaloAttachmentMessageEvent = ZaloImageMessageEvent | ZaloVideoMessageEvent | ZaloVoiceMessageEvent | ZaloGifMessageEvent | ZaloDoodleMessageEvent | ZaloFileMessageEvent; /** * All message events without attachments */ export type ZaloNonAttachmentMessageEvent = ZaloTextMessageEvent | ZaloLinkMessageEvent | ZaloStickerMessageEvent | ZaloLocationMessageEvent; /** * Union of all message events (44 total) */ export type ZaloAllMessageEvents = ZaloTextCategoryEvent | ZaloMediaCategoryEvent | ZaloFileCategoryEvent | ZaloSocialCategoryEvent | ZaloGenericMessageEvent; /** * Message events by direction */ export type ZaloSentMessageEvent = ZaloAllMessageEvents & { data: { isSelf: true; }; }; export type ZaloReceivedMessageEvent = ZaloAllMessageEvents & { data: { isSelf: false; }; }; /** * Message events by thread type */ export type ZaloUserMessageEvent = ZaloAllMessageEvents & { data: { threadType: "user"; }; }; export type ZaloGroupMessageEvent = ZaloAllMessageEvents & { data: { threadType: "group"; }; }; //# sourceMappingURL=message-events.d.ts.map