intelligo
Version:
AI Chatbot Framework for Node.js
665 lines (664 loc) • 18.2 kB
TypeScript
export interface Error {
message: string;
type: string;
code: number;
error_subcode: number;
fbtrace_id: string;
}
export declare type SendAPIRequest = SenderActionRequest | MessageRequest;
export interface SendAPIResponse {
recipient_id: string;
message_id: string;
}
export interface SenderActionRequest {
recipient: Recipient;
sender_action: SenderAction;
}
export interface MessageRequest {
messaging_type: MessagingType;
recipient: Recipient;
message: Message;
notification_type?: NotificationType;
tag?: string;
}
export declare type SenderAction = 'typing_on' | 'typing_off' | 'mark_seen';
export declare type MessagingType = 'RESPONSE' | 'UPDATE' | 'MESSAGE_TAG';
export declare type NotificationType = 'REGULAR' | 'SILENT_PUSH' | 'NO_PUSH';
export interface Recipient {
id: string;
phone_number?: string;
user_ref?: string;
name?: RecipientName;
}
export interface RecipientName {
first_name: string;
last_name: string;
}
export interface Message {
text?: string;
attachment?: Attachment;
quick_replies?: QuickReply;
metadata?: string;
}
export interface QuickReply {
content_type: QuickReplyContentType;
title?: string;
payload?: string | number;
image_url?: string;
}
export declare type QuickReplyContentType = 'text' | 'location' | 'user_phone_number' | 'user_email';
export interface WebhookEvent {
object: 'page';
entry: WebhookMessagingEntry[];
}
export interface WebhookEntry {
id: string;
time: number;
}
export interface WebhookMessagingEntry extends WebhookEntry {
messaging: WebhookMessagingEvent[];
}
export interface WebhookStandbyEntry extends WebhookEntry {
standby: WebhookStandbyEvent[];
}
export interface WebhookMessagingEvent {
sender?: ConversationParticipant;
receiver: ConversationParticipant;
timestamp: number;
}
export interface WebhookStandbyEvent extends WebhookMessagingEvent {
}
export interface MessageReceivedEvent extends WebhookStandbyEvent {
message: {
mid: string;
text?: string;
attachments?: Attachment[];
quick_reply?: {
payload: string;
};
};
}
export interface AccountLinkingEvent extends WebhookMessagingEvent {
account_linking: {
status: 'linked' | 'unlinked';
authorization_code?: string;
};
}
export interface DeliveryEvent extends WebhookStandbyEvent {
delivery: {
mids: string[];
watermark: number;
seq: number;
};
}
export interface MessageEchoEvent extends WebhookMessagingEvent {
message: {
is_echo: boolean;
app_id: string;
metadata: string;
mid: string;
text?: string;
attachments?: Attachment[];
};
}
export interface MessageReadEvent extends WebhookStandbyEvent {
read: {
watermark: number;
seq: number;
};
}
export interface CheckoutUpdateEvent extends WebhookMessagingEvent {
checkout_update: {
payload: string;
shipping_address: Address;
};
}
export interface GamePlayEvent extends WebhookMessagingEvent {
game_play: {
game_id: string;
player_id: string;
context_type: GamePlayContextType;
context_id: string;
score: number;
payload: string;
};
}
export interface PassThreadControlEvent extends WebhookMessagingEvent {
pass_thread_control: {
new_owner_app_id: string;
metadata: string;
};
}
export interface TakeThreadControlEvent extends WebhookMessagingEvent {
take_thread_control: {
previous_owner_app_id: string;
metadata: string;
};
}
export interface RequestThreadControlEvent extends WebhookMessagingEvent {
request_thread_control: {
requested_owner_app_id: string;
metadata: string;
};
}
export interface AppRolesEvent extends WebhookMessagingEvent {
app_roles: {};
}
export interface OptInEvent extends WebhookMessagingEvent {
optin: {
ref: string;
user_ref?: string;
};
}
export interface PaymentEvent extends WebhookMessagingEvent {
payload: string;
requested_user_info: UserInfo;
payment_credential: PaymentCredential;
transaction_amount: TransactionAmount;
}
export interface PolicyEnforcementEvent extends WebhookMessagingEvent {
policy_enforcement: {
action: PolicyEnforcementAction;
reason?: string;
};
}
export interface PostbackEvent extends WebhookStandbyEvent {
title: string;
payload: string;
referral?: Referral;
}
export interface ReferralEvent extends WebhookMessagingEvent {
referral: Referral;
}
export interface Referral {
source: ReferralSource;
type: 'OPEN_THREAD';
ref?: string;
referrer_uri?: string;
ad_id?: string;
}
export interface ConversationParticipant {
id: string;
}
export interface UserInfo {
shipping_address: Address;
contact_name: string;
contact_email: string;
contact_phone: string;
}
export interface PaymentCredential {
provider_type: string;
charge_id: string;
tokenized_card: string;
tokenized_cvv: string;
token_expiry_month: string;
token_expiry_year: string;
fb_payment_id: string;
}
export interface TransactionAmount {
currency: string;
amount: string;
}
export declare type PolicyEnforcementAction = 'warning' | 'block' | 'unblock';
export declare type ReferralSource = 'MESSENGER_CODE' | 'DISCOVER_TAB' | 'ADS' | 'SHORTLINK' | 'CUSTOMER_CHAT_PLUGIN';
export declare type GamePlayContextType = 'SOLO' | 'THREAD' | 'GROUP';
export interface BroadcastMessageCreationRequest {
messages: BroadcastMessage[];
}
export interface DynamicTextMessage {
dynamic_text: {
text: string;
fallback_text: string;
};
}
export declare type BroadcastMessage = DynamicTextMessage | Message;
export interface BroadcastMessageCreationResponse {
message_creative_id: number;
}
export interface BroadcastMessageSendRequest {
message_creative_id: number;
notification_type: 'REGULAR' | 'SILENT_PUSH' | 'NO_PUSH';
messaging_type: 'MESSAGE_TAG';
tag: 'NON_PROMOTIONAL_SUBSCRIPTION';
}
export interface BroadcastMessageSendResponse {
broadcast_id: number;
}
export interface HandoverProtocolRequest {
recipient: {
id: number;
};
metadata?: string;
}
export interface HandoverProtocolSucessResponse {
success: boolean;
}
export interface PassThreadControlRequest extends HandoverProtocolRequest {
target_app_id: number;
}
export declare type RequestThreadControlRequest = HandoverProtocolRequest;
export declare type TakeThreadControlRequest = HandoverProtocolRequest;
export interface MessageReceiver {
id: number;
name: string;
}
export interface SecondaryReceiversList {
data: MessageReceiver[];
}
export interface ProfileProperties {
account_linking?: string;
get_started?: GetStartedProperty;
greeting?: Greetings[];
whitelisted_domains?: string[];
payment_settings?: PaymentSettings;
target_audience?: TargetAudience;
home_url?: BotHomeUrl;
}
export interface GetStartedProperty {
payload: string;
}
export interface Greetings {
locale: string;
text: string;
}
export interface PaymentSettings {
privacy_url?: string;
public_key?: string;
testers?: number[];
}
export interface TargetAudience {
audience_type: 'all' | 'custom' | 'none';
countries?: TargetCountrySettings;
}
export interface TargetCountrySettings {
blacklist?: string[];
whitelist?: string[];
}
export interface BotHomeUrl {
url: string;
webview_height_ratio: 'tall';
webview_share_button?: 'show' | 'hide';
in_test: boolean;
}
export interface IDMatchingRequest {
page?: number;
app?: number;
access_token: string;
appsecret_proof: string;
}
export interface IDMatchingResponse {
paging: IDMatchingPaging;
}
export interface AppIDMatchingResponse extends IDMatchingResponse {
data: AppIDMatchingData;
}
export interface PageIDMatchingResponse extends IDMatchingResponse {
data: PageIDMatchingData;
}
export interface AppIDMatchingData {
id: string;
app: {
link: string;
name: string;
id: number;
};
}
export interface PageIDMatchingData {
id: string;
page: {
name: string;
id: number;
};
}
export interface IDMatchingPaging {
cursors: {
before: string;
after: string;
};
}
export interface MessengerCodeRequest {
type: 'standard';
image_size?: number;
data?: {
ref?: string;
};
}
export interface MessengerCodeResponse {
uri: string;
}
export interface FeatureReviewResponse {
data: FeatureReviewResult[];
}
export interface FeatureReviewResult {
feature: string;
status: FeatureReviewStatus;
}
export declare type FeatureReviewStatus = 'PENDING' | 'REJECTED' | 'APPROVED' | 'LIMITED';
export interface InsightsResponse {
data: InsightsResponseData;
}
export interface InsightsResponseData {
name: string;
values: InsightsResponseValue;
}
export interface InsightsResponseValue {
value: number | InsightsResponseValueByType;
end_time: string;
}
export interface InsightsResponseValueByType {
[key: string]: number;
}
export interface SponsoredMessageSendRequest {
message_creative_id: number;
daily_budget: number;
bid_amount: 400;
targeting: any;
}
export interface SponsoredMessageSendResponse {
ad_group_id: number;
broadcast_id: number;
success: boolean;
}
export declare type Attachment = ImageAttachment | VideoAttachment | AudioAttachment | FileAttachment | LocationAttachment | FallbackAttachment | TemplateAttachment;
export interface ImageAttachment {
type: 'image';
payload: MultimediaPayload;
}
export interface VideoAttachment {
type: 'video';
payload: MultimediaPayload;
}
export interface AudioAttachment {
type: 'audio';
payload: MultimediaPayload;
}
export interface FileAttachment {
type: 'file';
payload: MultimediaPayload;
}
export interface LocationAttachment {
type: 'location';
payload: LocationPayload;
}
export interface FallbackAttachment {
type: 'fallback';
payload: null;
title: string;
URL: string;
}
export interface TemplateAttachment {
type: 'template';
payload: TemplatePayload;
}
export interface MultimediaPayload {
url?: string;
is_reusable?: boolean;
attachment_id?: number;
}
export interface LocationPayload {
coordinates: {
lat: number;
long: number;
};
}
export declare type TemplatePayload = ButtonTemplate | GenericTemplate | ListTemplate | MediaTemplate | OpenGraphTemplate | ReceiptTemplate | AirlineBoardingPassTemplate | AirlineCheckinTemplate | AirlineItineraryTemplate | AirlineFlightUpdateTemplate;
export interface ButtonTemplate {
template_type: 'payload';
text: string;
buttons: Button[];
sharable?: boolean;
}
export interface GenericTemplate {
template_type: 'generic';
sharable?: boolean;
image_aspect_ratio?: string;
elements: PayloadElement[];
}
export interface ListTemplate {
template_type: 'list';
top_element_style?: 'compact' | 'large';
buttons?: Button[];
elements: PayloadElement[];
shareable?: boolean;
}
export interface MediaTemplate {
template_type: 'media';
elements: MediaElement[];
sharable?: boolean;
}
export interface OpenGraphTemplate {
template_type: 'open_graph';
elements: OpenGraphElement[];
}
export interface ReceiptTemplate {
template_type: 'receipt';
sharable?: boolean;
recipient_name: string;
merchant_name?: string;
order_number: string;
currency: string;
payment_method: string;
timestamp?: string;
elements: ReceiptElement[];
address?: Address;
summary: ReceiptSummary;
adjustments: ReceiptAdjustment[];
}
export interface AirlineBoardingPassTemplate {
template_type: 'airline_boarding_pass';
intro_message: string;
locale: string;
theme_color?: string;
boarding_pass: BoardingPass[];
}
export interface AirlineCheckinTemplate {
template_time: 'airline_checkin';
intro_message: string;
locale: string;
pnr_number?: string;
checkin_url: string;
flight_info: FlightInfo[];
}
export interface AirlineItineraryTemplate {
template_time: 'airline_itinerary';
intro_message: string;
locale: string;
theme_color?: string;
pnr_number: string;
passenger_info: PassengerInfo[];
flight_info: ItineraryFlightInfo[];
passenger_segment_info: PassengerSegmentInfo[];
price_info?: PriceInfo[];
base_price?: number;
tax?: number;
total_price?: number;
currency: string;
}
export interface AirlineFlightUpdateTemplate {
template_type: 'airline_update';
intro_message: string;
theme_color?: string;
update_type: AirlineFlightUpdateType;
locale: string;
pnr_number?: string;
update_flight_info: FlightInfo;
}
export interface PayloadElement {
title: string;
subtitle?: string;
image_url?: string;
default_action?: Omit<UrlButton, 'title'>;
buttons: Button[];
}
export interface MediaElement {
media_type: 'image' | 'video';
buttons: Button[];
}
export interface MediaElementWithId extends MediaElement {
attachment_id: string;
}
export interface MediaElementWithUrl extends MediaElement {
url: string;
}
export interface OpenGraphElement {
url: string;
buttons: Button[];
}
export interface Address {
id?: string;
street_1: string;
street_2?: string;
city: string;
postal_code: string;
state: string;
country: string;
}
export interface ReceiptSummary {
subtotal?: number;
shipping_cost?: number;
total_tax?: number;
total_cost: number;
}
export interface ReceiptAdjustment {
name: string;
amount: string;
}
export interface ReceiptElement {
title: string;
subtitle?: string;
quatity?: number;
price: number;
currency?: string;
image_url?: string;
}
export interface BoardingPass {
passenger_name: string;
pnr_number: string;
travel_class?: string;
auxiliary_fields: BoardingPassField[];
secondary_fields: BoardingPassField[];
logo_iage_url: string;
header_image_url?: string;
header_text_field?: BoardingPassField;
qr_code?: string;
barcode_image_url?: string;
above_bar_code_image_url: string;
flight_info: FlightInfo;
}
declare type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
export interface BoardingPassField {
label: string;
value: string;
}
export interface FlightInfo {
flight_number: string;
departure_airport: Airport;
arrival_airport: Airport;
flight_schedule: FlightSchedule;
}
export interface Airport {
airport_code: string;
city: string;
terminal?: string;
gate?: string;
}
export interface DepartureAirport extends Airport {
terminal: string;
gate: string;
}
export interface FlightSchedule {
boarding_time: string;
departure_time: string;
arrival_time: string;
}
export interface PassengerInfo {
passenger_id: string;
ticket_number?: string;
name: string;
}
export interface ItineraryFlightInfo extends FlightInfo {
connection_id: string;
segment_id: string;
aircraft_type?: string;
travel_class: FlightTravelClass;
}
export interface PassengerSegmentInfo {
segment_id: string;
passenger_id: string;
seat: string;
seat_type: string;
product_info?: string;
}
export interface PriceInfo {
title: string;
amount: number;
currency?: string;
}
export declare type AirlineFlightUpdateType = 'delay' | 'gate_change' | 'cancellation';
export declare type FlightTravelClass = 'economy' | 'business' | 'first_class';
export declare type Button = BuyButton | CallButton | GameplayButton | LoginButton | LogoutButton | PostbackButton | ShareButton | UrlButton;
export interface BuyButton {
type: 'payment';
title: 'buy';
payload: string;
payment_summary: PaymentSummary;
}
export interface CallButton {
type: 'phone_number';
title: string;
payload: string;
}
export interface GameplayButton {
type: 'game_play';
title: string;
payload?: string;
game_metadat?: GameMetadata;
}
export interface LoginButton {
type: 'account_link';
url: string;
}
export interface LogoutButton {
type: 'account_unlink';
}
export interface PostbackButton {
type: 'postback';
title: string;
payload: string;
}
export interface ShareButton {
type: 'element_share';
share_contents: {
attachments: {
type: 'template';
payload: Message;
};
};
}
export interface UrlButton {
type: 'web_url';
title: string;
url: string;
webview_height_ratio?: string;
messenger_extensions?: boolean;
fallback_url?: string;
webview_share_button?: string;
}
export interface PaymentSummary {
currency: string;
is_test_payment?: boolean;
payment_type: 'FIXED_AMOUNT' | 'FLEXIBLE_AMOUNT';
merchant_type: string;
requested_user_info: RequestedUserInfo[];
price_list: PriceList[];
}
export declare type RequestedUserInfo = 'shipping_address' | 'contact_name' | 'contact_phone' | 'contact_email';
export interface PriceList {
label: string;
amount: string;
}
export interface GameMetadata {
player_id?: string;
context_id?: string;
}
export {};