UNPKG

whatsapp

Version:

SDK for interfacing with WhatsApp Business Platform in Typescript or Node.js using the Cloud API, hosted by Meta.

200 lines (199 loc) 4.78 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * This source code is licensed under the license found in the * LICENSE file in the root directory of this source tree. */ /// <reference types="node" /> import { ServerResponse } from 'http'; import { IncomingHttpHeaders } from 'http'; import { WAConfigType } from './config'; import { ConversationTypesEnum, CurrencyCodesEnum, StatusEnum, VideoMediaTypesEnum, ReferralSourceTypesEnum, WebhookTypesEnum, SystemChangeTypesEnum, ImageMediaTypesEnum, DocumentMediaTypesEnum } from './enums'; import { BaseClass } from './base'; type PricingObject = { category: ConversationTypesEnum; pricing_model: 'CBP'; }; type OriginObject = { type: ConversationTypesEnum; }; type ConversationObject = { id: string; origin: OriginObject; expiration_timestamp: string; }; type ErrorDataObject = { details: string; }; type ErrorObject = { code: number; title: string; message: string; error_data: ErrorDataObject; }; export type StatusesObject = { conversation: ConversationObject; errors: ErrorObject[]; id: string; pricing: PricingObject; recipient_id: string; status: StatusEnum; timestamp: string; }; type AudioObject = { id: string; mime_type: string; }; type ButtonObject = { payload: string; text: string; }; type ConTextObject = { forwarded: boolean; frequently_forwarded: boolean; from: string; id: string; referred_product: { catalog_id: string; product_retailer_id: string; }; }; type DocumentObject = { caption: string; filename: string; sha256: string; mime_type: DocumentMediaTypesEnum; id: string; }; type IdentityObject = { acknowledged: string; created_timestamp: string; hash: string; }; type ImageObject = { caption: string; sha256: string; id: string; mime_type: ImageMediaTypesEnum; }; type ButtonReplyObject = { button_reply: { id: string; title: string; }; }; type ListReplyObject = { list_reply: { id: string; title: string; description: string; }; }; type InteractiveObject = { type: ButtonReplyObject | ListReplyObject; }; type ProductItemsObject = { product_retailer_id: string; quantity: string; item_price: string; currency: CurrencyCodesEnum; }; type Order_Object = { catalog_id: string; text: string; product_items: ProductItemsObject; }; type ReferralObject = { source_url: URL; source_type: ReferralSourceTypesEnum; source_id: string; headline: string; body: string; media_type: ImageMediaTypesEnum | VideoMediaTypesEnum; image_url: URL; video_url: URL; thumbnail_url: URL; }; type SystemObject = { body: string; identity: string; wa_id: string; type: SystemChangeTypesEnum; customer: string; }; type TextObject = { body: string; }; type VideoObject = { caption: string; filename: string; sha256: string; id: string; mime_type: VideoMediaTypesEnum; }; export type MessagesObject = { audio?: AudioObject; button?: ButtonObject; context?: ConTextObject; document?: DocumentObject; errors: ErrorObject[]; from: string; id: string; identity?: IdentityObject; image?: ImageObject; interactive?: InteractiveObject; order?: Order_Object; referral: ReferralObject; system?: SystemObject; text?: TextObject; timestamp: string; type: WebhookTypesEnum; video?: VideoObject; }; type ProfileObject = { name: string; }; type ContactObject = { wa_id: string; profile: ProfileObject; }; type MetadataObject = { display_phone_number: string; phoneNumberId: string; }; export type ValueObject = { messaging_product: 'whatsapp'; contacts: ContactObject[]; errors: ErrorObject[]; messages: MessagesObject[]; metadata: MetadataObject[]; statuses: StatusesObject[]; }; type ChangesObject = { field: string; value: ValueObject; }; type Entry_Object = { id: string; changes: ChangesObject[]; }; export type WebhookObject = { object: 'whatsapp_business_account'; entry: Entry_Object[]; }; export type WebhookSubscribeQuery = { hub: { mode: 'subscribe'; challenge: string; verify_token: string; }; }; export type WebhookCallback = (statusCode: number, headers: IncomingHttpHeaders, body?: WebhookObject, response?: ServerResponse, error?: Error) => any; export declare class WebhooksClass extends BaseClass { constructor(config: WAConfigType, userAgent: string); start(cb: WebhookCallback): boolean; isStarted(): boolean; stop(cb: (err?: Error) => any): boolean; } export {};