lexica-dialog-facebook-messenger
Version:
Facebook messenger plugin for Lexica virual agent
188 lines (187 loc) • 5.2 kB
TypeScript
declare enum FileType {
AUDIO = "audio",
FALLBACK = "fallback",
FILE = "file",
IMAGE = "image",
LOCATION = "location",
VIDEO = "video"
}
declare enum ResponseMessageType {
AUDIO = "audio",
FILE = "file",
IMAGE = "image",
VIDEO = "video",
TEMPLATE = "template"
}
declare enum ResponseMessageTemplateType {
BUTTON = "button",
GENERIC = "generic"
}
declare enum ButtonType {
WEB_URL = "web_url",
POSTBACK = "postback"
}
declare enum WebUrlButtonWebviewHeightRatio {
COMPACT = "compact",
TALL = "tall",
FULL = "full"
}
declare enum QuickReplyMessageContentType {
TEXT = "text",
LOCATION = "location"
}
declare enum MessagingType {
RESPONSE = "RESPONSE",
UPDATE = "UPDATE",
MESSAGE_TAG = "MESSAGE_TAG",
NON_PROMOTIONAL_SUBSCRIPTION = "NON_PROMOTIONAL_SUBSCRIPTION"
}
interface BaseRequestMessaging {
sender: {
id: string;
};
recipient: {
id: string;
};
timestamp: number;
}
interface TextRequestMessaging extends BaseRequestMessaging {
message: {
mid: string;
text: string;
quick_reply?: {
payload: string;
};
};
}
interface FileRequestMessaging extends BaseRequestMessaging {
message: {
mid: string;
attachments: Array<{
type: FileType.AUDIO | FileType.FILE | FileType.IMAGE | FileType.VIDEO;
payload: {
url: string;
};
}>;
};
}
interface LocationRequestMessaging extends BaseRequestMessaging {
message: {
mid: string;
attachments: Array<{
type: FileType.LOCATION;
payload: {
coordinates: {
lat: number;
long: number;
};
};
}>;
};
}
interface FallbackRequestMessaging extends BaseRequestMessaging {
message: {
mid: string;
text: string;
attachments: Array<{
type: FileType.FALLBACK;
title: string;
url: string;
}>;
};
}
interface PostBackMessaging {
postback: {
title: string;
payload: string;
referral?: {
ref: string;
source: string;
type: string;
};
};
}
declare type RequestMessaging = TextRequestMessaging | FileRequestMessaging | LocationRequestMessaging | FallbackRequestMessaging | PostBackMessaging;
interface Request {
object: string;
entry: Array<{
id: string;
time: number;
messaging: RequestMessaging[];
}>;
}
interface TextResponseMessage {
text: string;
}
interface FileResponseMessage {
attachment: {
type: ResponseMessageType.AUDIO | ResponseMessageType.FILE | ResponseMessageType.IMAGE | ResponseMessageType.VIDEO;
payload: {
url: string;
};
};
}
interface PostBackButton {
type: ButtonType.POSTBACK;
title: string;
payload: string;
}
interface WebUrlButton {
type: ButtonType.WEB_URL;
url: string;
title: string;
webview_height_ratio?: WebUrlButtonWebviewHeightRatio;
messenger_extensions?: boolean;
fallback_url?: string;
}
declare type Button = WebUrlButton | PostBackButton;
interface ButtonTemplate {
template_type: ResponseMessageTemplateType.BUTTON;
text: string;
buttons: Button[];
}
interface GenericTemplate {
template_type: ResponseMessageTemplateType.GENERIC;
elements: Array<{
title: string;
subtitle?: string;
image_url?: string;
default_action?: Button;
buttons?: Button[];
}>;
}
interface TemplateResponseMessage {
attachment: {
type: ResponseMessageType.TEMPLATE;
payload: ButtonTemplate | GenericTemplate;
};
}
interface BaseQuickReply {
content_type: QuickReplyMessageContentType;
title?: string;
payload?: string;
image_url?: string;
}
interface TextQuickReply extends BaseQuickReply {
content_type: QuickReplyMessageContentType.TEXT;
title: string;
payload: string;
}
interface LocationQuickReply extends BaseQuickReply {
content_type: QuickReplyMessageContentType.LOCATION;
}
declare type QuickReply = TextQuickReply | LocationQuickReply;
interface QuickReplyMessage {
text: string;
quick_replies: QuickReply[];
}
declare type ResponseMessage = TextResponseMessage | FileResponseMessage | TemplateResponseMessage | QuickReplyMessage;
interface Response {
recipient: {
id: string;
};
message: ResponseMessage;
messaging_type: MessagingType;
tag?: string;
}
export { FileType, ResponseMessageType, ResponseMessageTemplateType, ButtonType, WebUrlButtonWebviewHeightRatio, QuickReplyMessageContentType, MessagingType, BaseRequestMessaging, TextRequestMessaging, FileRequestMessaging, LocationRequestMessaging, FallbackRequestMessaging, PostBackMessaging, RequestMessaging, Request, TextResponseMessage, FileResponseMessage, PostBackButton, WebUrlButton, Button, ButtonTemplate, GenericTemplate, TemplateResponseMessage, BaseQuickReply, TextQuickReply, LocationQuickReply, QuickReply, QuickReplyMessage, ResponseMessage, Response };