@longears-mobile/rcs-sdk
Version:
Provider-agnostic SDK for RCS (Rich Communication Services) messaging
101 lines • 2.63 kB
TypeScript
export interface RCSProvider {
name: string;
initialize(config: ProviderConfig): Promise<void>;
sendMessage(message: RCSMessage): Promise<MessageResponse>;
validatePhoneNumber(phoneNumber: string, options?: {
agentId?: string;
}): Promise<ValidationResult>;
}
export interface RCSMessage {
to: string;
content: MessageContent;
suggestions?: Suggestion[];
metadata?: MessageMetadata;
}
export interface SendMessageOptions {
to: string;
content: MessageContent;
suggestions?: Suggestion[];
metadata?: MessageMetadata;
}
export interface MessageContent {
text?: string;
media?: MediaContent;
richCard?: RichCard;
}
export interface MediaContent {
url: string;
type: 'image' | 'video' | 'audio' | 'file';
thumbnailUrl?: string;
mimeType?: string;
fileName?: string;
}
export interface Suggestion {
type: 'reply' | 'action';
text: string;
postbackData?: string;
action?: SuggestionAction;
}
export interface SuggestionAction {
type: 'dial' | 'openUrl' | 'shareLocation' | 'createCalendarEvent';
data?: string;
parameters?: Record<string, any>;
}
export interface RCSCapabilities {
supportsRichCards: boolean;
supportsCarousels: boolean;
supportsSuggestions: boolean;
supportsFileTransfer: boolean;
supportedMediaTypes: string[];
maxMessageLength: number;
maxSuggestions?: number;
maxFileSize?: number;
}
export interface MessageResponse {
messageId: string;
status: 'sent' | 'delivered' | 'failed' | 'pending';
timestamp?: Date;
error?: string;
providerResponse?: any;
}
export interface ValidationResult {
success: boolean;
capability?: {
phoneNumber: string;
isCapable: boolean;
features: string[];
timestamp: string;
};
error?: string;
}
export interface MessageMetadata {
expiryTime?: string;
priority?: 'high' | 'normal' | 'low';
tags?: string[];
customData?: Record<string, any>;
}
export interface RichCard {
title?: string;
description?: string;
media?: MediaContent;
suggestions?: Suggestion[];
}
export interface StandaloneCard extends RichCard {
type: 'standalone';
orientation?: 'horizontal' | 'vertical';
}
export interface CarouselCard {
type: 'carousel';
cards: RichCard[];
width?: 'small' | 'medium';
}
export interface ProviderConfig {
retryAttempts?: number;
retryDelay?: number;
timeout?: number;
region?: string;
apiEndpoint?: string;
webhookUrl?: string;
[key: string]: any;
}
//# sourceMappingURL=index.d.ts.map