UNPKG

@warriorteam/redai-zalo-sdk

Version:

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

342 lines 7.87 kB
/** * Message related types and interfaces */ /** * Base message interface */ export interface BaseMessage { /** * Message type */ type: string; } /** * Text message */ export interface TextMessage extends BaseMessage { type: "text"; text: string; } /** * Image message */ export interface ImageMessage extends BaseMessage { type: "image"; url?: string; attachment_id?: string; caption?: string; attachment?: { type: string; payload: { url: string; }; }; } /** * File message */ export interface FileMessage extends BaseMessage { type: "file"; url: string; filename: string; attachment?: { type: string; payload: { url: string; }; }; } /** * Sticker message */ export interface StickerMessage extends BaseMessage { type: "sticker"; sticker_id: string; attachment?: { type: string; payload: { id: string; }; }; } /** * Template message */ export interface TemplateMessage extends BaseMessage { type: "template"; template_id: string; template_data: Record<string, string>; } /** * Union type for all message types */ export type Message = TextMessage | ImageMessage | FileMessage | StickerMessage | TemplateMessage; /** * Message recipient */ export interface MessageRecipient { /** * User ID */ user_id?: string; /** * Phone number (for ZNS) */ phone?: string; } /** * Send message request */ export interface SendMessageRequest { /** * Message recipient */ recipient: MessageRecipient; /** * Message content */ message: Message; /** * Message type category */ messaging_type?: "consultation" | "transaction" | "promotion" | "response" | "update" | "message_tag"; /** * Tracking ID */ tracking_id?: string; } /** * Send message response */ export interface SendMessageResponse { /** * Message ID */ message_id: string; /** * Recipient user ID */ user_id: string; /** * Quota information (optional - only present for free messages) */ quota?: { /** Quota type: "reply" | "sub_quota" | "purchase_quota" | "reward_quota" */ quota_type: "reply" | "sub_quota" | "purchase_quota" | "reward_quota"; /** Remaining quota (for reply and sub_quota types) */ remain?: string; /** Total quota (for reply and sub_quota types) */ total?: string; /** Expiration date (for sub_quota type) */ expired_date?: string; /** Owner type (for purchase_quota and reward_quota types) */ owner_type?: "OA" | "App"; /** Owner ID (for purchase_quota and reward_quota types) */ owner_id?: string; }; } /** * Upload file response */ export interface UploadFileResponse { /** * Attachment ID */ attachment_id: string; /** * File URL */ url: string; /** * File size */ size?: number; /** * File type */ type?: string; } /** * Message status */ export declare enum MessageStatus { SENT = "sent", DELIVERED = "delivered", READ = "read", FAILED = "failed" } /** * Message event */ export interface MessageEvent { /** * Event type */ event: "message" | "delivery" | "read"; /** * Message ID */ message_id: string; /** * User ID */ user_id: string; /** * Timestamp */ timestamp: number; /** * Message content (for incoming messages) */ message?: Message; } /** * Consultation message types */ export interface ConsultationTextMessage extends BaseMessage { type: "consultation_text"; text: string; } export interface ConsultationImageMessage extends BaseMessage { type: "consultation_image"; url: string; message?: string; } export interface ConsultationFileMessage extends BaseMessage { type: "consultation_file"; url: string; filename: string; message?: string; } export interface ConsultationStickerMessage extends BaseMessage { type: "consultation_sticker"; sticker_id: string; message?: string; } export interface ConsultationQuoteMessage extends BaseMessage { type: "consultation_quote"; text: string; quote: { message_id: string; content: string; }; } export interface ConsultationRequestInfoMessage extends BaseMessage { type: "consultation_request_info"; title: string; subtitle?: string; image_url?: string; elements: Array<{ title: string; type: "text" | "phone" | "email" | "date"; required?: boolean; placeholder?: string; }>; } /** * Transaction message types */ export interface TransactionMessage extends BaseMessage { type: "transaction"; template_id?: string; template_data?: Record<string, string>; mode?: "development" | "production"; attachment?: { type: string; payload: { template_type: string; elements: Array<{ title: string; subtitle?: string; image_url?: string; default_action?: { type: string; url: string; }; buttons?: Array<{ type: string; title: string; url?: string; payload?: string; }>; }>; }; }; } /** * Promotion message types */ export interface PromotionMessage extends BaseMessage { type: "promotion"; template_id?: string; template_data?: Record<string, string>; mode?: "development" | "production"; attachment?: { type: string; payload: { template_type: string; elements: Array<{ title: string; subtitle?: string; image_url?: string; default_action?: { type: string; url: string; }; buttons?: Array<{ type: string; title: string; url?: string; payload?: string; }>; }>; }; }; } /** * Anonymous message types */ export interface AnonymousTextMessage extends BaseMessage { type: "anonymous_text"; text: string; } export interface AnonymousImageMessage extends BaseMessage { type: "anonymous_image"; url: string; message?: string; } export interface AnonymousFileMessage extends BaseMessage { type: "anonymous_file"; url: string; filename: string; message?: string; } export interface AnonymousStickerMessage extends BaseMessage { type: "anonymous_sticker"; sticker_id: string; message?: string; } /** * Reaction message */ export interface ReactionMessage extends BaseMessage { type: "reaction"; message_id: string; reaction_type: "heart" | "like" | "haha" | "wow" | "sad" | "angry"; } /** * Mini app message */ export interface MiniAppMessage extends BaseMessage { type: "miniapp"; app_id: string; title: string; subtitle?: string; image_url?: string; data?: Record<string, any>; } /** * Extended message union type */ export type ExtendedMessage = Message | ConsultationTextMessage | ConsultationImageMessage | ConsultationFileMessage | ConsultationStickerMessage | ConsultationQuoteMessage | ConsultationRequestInfoMessage | TransactionMessage | PromotionMessage | AnonymousTextMessage | AnonymousImageMessage | AnonymousFileMessage | AnonymousStickerMessage | ReactionMessage | MiniAppMessage; //# sourceMappingURL=message.d.ts.map