trysoftwacloudapi
Version:
TrySoft Whatsapp Cloud Api Wrapper
97 lines (96 loc) • 3.68 kB
TypeScript
/// <reference types="node" />
import express, { Application } from 'express';
import { Server } from 'http';
import { Contact, InteractiveHeader, TemplateComponent } from './messages.types';
import { SendMessageResult } from './sendRequestHelper';
import { FreeFormObject } from './utils/misc';
import { PubSubEvent } from './utils/pubSub';
export interface Message {
wab_pid: string;
wab_number: string;
from: string;
name: string | undefined;
id: string;
timestamp: string;
type: PubSubEvent;
data: FreeFormObject;
}
export interface Bot {
startExpressServer: (options?: {
app?: express.Application;
useMiddleware?: (app: express.Application) => void;
port?: number;
webhookPath?: string;
webhookVerifyToken?: string;
}) => Promise<{
server?: Server;
app: Application;
}>;
on: (event: PubSubEvent, cb: (message: Message) => void) => string;
unsubscribe: (token: string) => string | boolean;
markRead: (id: string) => Promise<SendMessageResult>;
getMediaDownload: (id: string, save_path: string) => Promise<object>;
sendText: (to: string, text: string, options?: {
preview_url?: boolean;
context?: object;
}) => Promise<SendMessageResult>;
sendMessage: (to: string, text: string, options?: {
preview_url?: boolean;
context?: object;
}) => Promise<SendMessageResult>;
sendImage: (to: string, urlOrObjectId: string, options?: {
caption?: string;
context?: object;
}) => Promise<SendMessageResult>;
sendDocument: (to: string, urlOrObjectId: string, options?: {
caption?: string;
filename?: string;
context?: object;
}) => Promise<SendMessageResult>;
sendAudio: (to: string, urlOrObjectId: string) => Promise<SendMessageResult>;
sendVideo: (to: string, urlOrObjectId: string, options?: {
caption?: string;
context?: object;
}) => Promise<SendMessageResult>;
sendSticker: (to: string, urlOrObjectId: string) => Promise<SendMessageResult>;
sendLocation: (to: string, latitude: number, longitude: number, options?: {
name?: string;
address?: string;
context?: object;
}) => Promise<SendMessageResult>;
sendTemplate: (to: string, name: string, languageCode: string, components?: TemplateComponent[]) => Promise<SendMessageResult>;
sendContacts: (to: string, contacts: Contact[]) => Promise<SendMessageResult>;
sendReplyButtons: (to: string, bodyText: string, buttons: {
[id: string]: string | number;
}, options?: {
footerText?: string;
header?: InteractiveHeader;
context?: object;
}) => Promise<SendMessageResult>;
sendList: (to: string, buttonName: string, bodyText: string, sections: {
[sectionTitle: string]: {
id: string | number;
title: string | number;
description?: string;
}[];
}, options?: {
footerText?: string;
header?: InteractiveHeader;
context?: object;
}) => Promise<SendMessageResult>;
sendFlow: (to: string, bodyText: string, buttonName: string, options?: {
footerText?: string;
header?: InteractiveHeader;
flow_token: string;
flow_id: string;
screen: string;
data?: object;
context?: object;
}) => Promise<SendMessageResult>;
sendLocationRequest: (to: string, bodyText: string, options?: {
context?: object;
}) => Promise<SendMessageResult>;
}
export type ICreateBot = (fromPhoneNumberId: string, accessToken: string, options?: {
version?: string;
}) => Bot;