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

313 lines 7.12 kB
/** * Message related types and interfaces */ import { PromotionMessage } from "./promotion"; /** * 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; }>; }>; }; }; } /** * 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