UNPKG

@k-msg/provider

Version:

Complete provider system with adapters and implementations for K-Message platform

140 lines (111 loc) 3.48 kB
# @k-msg/provider Provider system and interfaces for the K-Message platform. ## Installation ```bash npm install @k-msg/provider @k-msg/core # or bun add @k-msg/provider @k-msg/core ``` ## Features - **Complete Provider System**: All-in-one package with providers, adapters, and implementations - **Built-in IWINV Provider**: Production-ready IWINV AlimTalk integration - **BaseAlimTalkProvider**: Abstract base class for creating custom providers - **Request/Response Adapters**: Standardized API communication adapters - **Provider Registry**: Centralized provider management and registration - **Contract System**: Modular contract-based architecture - **Configuration Validation**: Built-in configuration validation with schemas - **Health Monitoring**: Comprehensive health checks and diagnostics ## Built-in Providers ### IWINV Provider Production-ready AlimTalk provider with full feature support: - ✅ AlimTalk message sending with variable substitution - ✅ SMS/LMS fallback for failed AlimTalk messages - ✅ Template management (create, update, delete, list) - ✅ Account balance and profile information - ✅ Real-time delivery tracking and status updates - ✅ Channel and sender number management - ✅ Analytics and usage statistics - ✅ Configuration validation and health checks ## Basic Usage ```typescript import { IWINVProvider } from '@k-msg/provider'; // Use the built-in IWINV provider const iwinvProvider = new IWINVProvider({ apiKey: process.env.IWINV_API_KEY!, baseUrl: 'https://alimtalk.bizservice.iwinv.kr', debug: false }); // Send a message const result = await iwinvProvider.sendMessage({ templateCode: 'TPL001', phoneNumber: '01012345678', variables: { code: '123456' } }); console.log('Message sent:', result.messageId); ``` ### Custom Provider Registration ```typescript import { PluginRegistry } from '@k-msg/provider'; const registry = new PluginRegistry(); // Register a custom provider plugin await registry.registerPlugin({ id: 'custom-provider', name: 'Custom Provider', version: '1.0.0', capabilities: { messaging: true, templates: true, analytics: false }, factory: () => new CustomProvider() }); // Get registered providers const providers = registry.getRegisteredPlugins(); console.log('Available providers:', providers); ``` ## Creating Custom Providers ```typescript import { BasePlugin } from '@k-msg/provider'; export class CustomProvider extends BasePlugin { constructor() { super({ id: 'custom-provider', name: 'Custom Provider', version: '1.0.0' }); } async initialize(config: any): Promise<void> { // Initialize provider with configuration this.config = config; } async sendMessage(options: MessageSendOptions): Promise<MessageResult> { // Implement message sending logic return { messageId: 'msg-123', status: 'SENT' }; } async getHealth(): Promise<HealthStatus> { // Implement health check return { healthy: true, latency: 150 }; } } ``` ## Service Interfaces ```typescript import { MessagingService, TemplateService } from '@k-msg/provider'; // Implement messaging service class CustomMessagingService implements MessagingService { async sendMessage(request: MessageRequest): Promise<MessageResponse> { // Custom implementation } async getMessageStatus(messageId: string): Promise<MessageStatus> { // Custom implementation } } ``` ## License MIT