meta-cloud-api
Version:
TypeScript wrapper for Meta's Cloud API
172 lines (169 loc) • 7.82 kB
TypeScript
import { B as BaseAPI } from './base-CdGDdVEl.js';
import { WabaConfigType } from './types/config.js';
import { M as MessageTypesEnum, C as ComponentTypesEnum, I as InteractiveTypesEnum } from './enums-BZd9T2ul.js';
import { R as RequesterClass } from './request-vYMaEfk5.js';
import { f as MessagesClass, A as AudioMediaObject, C as ContactObject, D as DocumentMediaObject, I as ImageMediaObject, a as InteractiveObject, L as LocationObject, c as MessageTemplateObject, d as StickerMediaObject, e as TextObject, V as VideoMediaObject, g as MessageRequestBody, M as MessageRequestParams, b as MessagesResponse, T as TextMessageParams, S as StatusParams, R as ReactionParams } from './common-BiRA_uz3.js';
/**
* Maps each message type to its appropriate payload type
*/
type MessagePayloadType<T extends MessageTypesEnum> = T extends MessageTypesEnum.Audio ? AudioMediaObject : T extends MessageTypesEnum.Contacts ? [ContactObject] : T extends MessageTypesEnum.Document ? DocumentMediaObject : T extends MessageTypesEnum.Image ? ImageMediaObject : T extends MessageTypesEnum.Interactive ? InteractiveObject : T extends MessageTypesEnum.Location ? LocationObject : T extends MessageTypesEnum.Template ? MessageTemplateObject<ComponentTypesEnum> : T extends MessageTypesEnum.Sticker ? StickerMediaObject : T extends MessageTypesEnum.Text ? TextObject : T extends MessageTypesEnum.Video ? VideoMediaObject : T extends MessageTypesEnum.Reaction ? {
message_id: string;
emoji: string;
} : never;
declare class MessagesApi extends BaseAPI implements MessagesClass {
private readonly commonMethod;
private readonly commonEndpoint;
constructor(config: WabaConfigType, client: RequesterClass);
/**
* Builds the request body for WhatsApp API messages
* @param type The type of message to send
* @param payload The message payload object
* @param to The recipient's phone number
* @param replyMessageId Optional message ID to reply to
* @returns The formatted request body
*/
bodyBuilder<T extends MessageTypesEnum>(type: T, payload: MessagePayloadType<T>, to: string, replyMessageId?: string): MessageRequestBody<T>;
/**
* Sends a request to the WhatsApp API
* @param body The request body to send
* @returns Promise with the API response
*/
private send;
/**
* Sends an audio message via WhatsApp
* @param params The audio message parameter object
* @returns Promise with the message response
*/
audio(params: MessageRequestParams<AudioMediaObject>): Promise<MessagesResponse>;
/**
* Sends a contact card via WhatsApp
* @param params The contact message parameter object
* @returns Promise with the message response
*/
contacts(params: MessageRequestParams<[ContactObject]>): Promise<MessagesResponse>;
/**
* Sends a document via WhatsApp
* @param params The document message parameter object
* @returns Promise with the message response
*/
document(params: MessageRequestParams<DocumentMediaObject>): Promise<MessagesResponse>;
/**
* Sends an image via WhatsApp
* @param params The image message parameter object
* @returns Promise with the message response
*/
image(params: MessageRequestParams<ImageMediaObject>): Promise<MessagesResponse>;
/**
* Sends an interactive message via WhatsApp
* @param params The interactive message parameter object
* @returns Promise with the message response
*/
interactive(params: MessageRequestParams<InteractiveObject>): Promise<MessagesResponse>;
/**
* Sends a location via WhatsApp
* @param params The location message parameter object
* @returns Promise with the message response
*/
location(params: MessageRequestParams<LocationObject>): Promise<MessagesResponse>;
/**
* Sends a sticker via WhatsApp
* @param params The sticker message parameter object
* @returns Promise with the message response
*/
sticker(params: MessageRequestParams<StickerMediaObject>): Promise<MessagesResponse>;
/**
* Sends a template message via WhatsApp
* @param params The template message parameter object
* @returns Promise with the message response
*/
template(params: MessageRequestParams<MessageTemplateObject<ComponentTypesEnum>>): Promise<MessagesResponse>;
/**
* Sends a text message via WhatsApp
* @param params The text message parameter object
* @returns Promise with the message response
*/
text(params: TextMessageParams): Promise<MessagesResponse>;
/**
* Sends a video message via WhatsApp
* @param params The video message parameter object
* @returns Promise with the message response
*/
video(params: MessageRequestParams<VideoMediaObject>): Promise<MessagesResponse>;
/**
* Updates message status (mark as read, etc.)
* @param params The status update parameters
* @returns Promise with the API response
*/
status(params: StatusParams): Promise<MessagesResponse>;
/**
* Marks a message as read
* @param params Object containing messageId
* @returns Promise with the API response
*/
markAsRead(params: {
messageId: string;
}): Promise<MessagesResponse>;
/**
* Shows typing indicator
* @param params Object containing messageId
* @returns Promise with the API response
*/
showTypingIndicator(params: {
messageId: string;
}): Promise<MessagesResponse>;
/**
* Sends a list interactive message
* @param params The list interactive message parameters
* @returns Promise with the message response
*/
interactiveList(params: MessageRequestParams<InteractiveObject & {
type: InteractiveTypesEnum.List;
}>): Promise<MessagesResponse>;
/**
* Sends a CTA URL interactive message
* @param params The CTA URL interactive message parameters
* @returns Promise with the message response
*/
interactiveCtaUrl(params: MessageRequestParams<InteractiveObject & {
type: InteractiveTypesEnum.CtaUrl;
}>): Promise<MessagesResponse>;
/**
* Sends a location request interactive message
* @param params The location request interactive message parameters
* @returns Promise with the message response
*/
interactiveLocationRequest(params: MessageRequestParams<InteractiveObject & {
type: InteractiveTypesEnum.LocationRequest;
}>): Promise<MessagesResponse>;
/**
* Sends an address message interactive message
* @param params The address message interactive message parameters
* @returns Promise with the message response
*/
interactiveAddressMessage(params: MessageRequestParams<InteractiveObject & {
type: InteractiveTypesEnum.AddressMessage;
}>): Promise<MessagesResponse>;
/**
* Sends a reply buttons interactive message
* @param params The reply buttons interactive message parameters
* @returns Promise with the message response
*/
interactiveReplyButtons(params: MessageRequestParams<InteractiveObject & {
type: InteractiveTypesEnum.Button;
}>): Promise<MessagesResponse>;
/**
* Sends a flow interactive message
* @param params The flow interactive message parameters
* @returns Promise with the message response
*/
interactiveFlow(params: MessageRequestParams<InteractiveObject & {
type: InteractiveTypesEnum.Flow;
}>): Promise<MessagesResponse>;
/**
* Sends a reaction to a message
* @param params The reaction parameters
* @returns Promise with the message response
*/
reaction(params: ReactionParams): Promise<MessagesResponse>;
}
export { MessagesApi as M };