@warriorteam/zalo-webhook-types
Version:
TypeScript types for Zalo Personal webhook events from automation-web
216 lines • 6.97 kB
TypeScript
/**
* 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