@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
TypeScript
/**
* 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