UNPKG

@klever-one/web-sdk

Version:

Web SDK for integrating real-time room management and streaming functionality into web applications

91 lines (90 loc) 3.23 kB
import { ConversationConfig } from '../types/client.types'; import { Message, ConversationEventData, ConversationEventHandler } from '../types/message.types'; /** * ConversationManager - Core conversation service for SDK usage * Handles conversation flow, TTS processing, and message management */ export declare class ConversationManager { private static instance; private roomManager; private wavManager; private recorderService; private streamingOrchestrator; private conversationStateService; private eventBus; private messages; private isStreaming; private isCompleted; private sentenceBuffer; private messageQueue; private isProcessing; private streamingTimeout; private processedSentenceIndices; private pendingUpdateMessages; private hasWelcomeMessageSent; private config; private eventHandlers; private errorHandlers; private constructor(); static getInstance(): ConversationManager; initialize(config: ConversationConfig, initialMessages?: Message[], apiKey?: string): void; subscribe(handler: ConversationEventHandler): () => void; subscribeToErrors(handler: (error: Error) => void): () => void; sendTextMessage(input: string): Promise<void>; sendAudioMessage(audioBlob: Blob): Promise<void>; getState(): ConversationEventData; clear(): void; destroy(): void; sendWelcomeMessage(): Promise<void>; triggerNextReady(): { text: string; index: number; } | null; getReadyCount(): number; getTotalCount(): number; isAllReady(): boolean; /** * 실제 스트리밍 완료 상태를 체크합니다. * 웹뷰 환경에서도 안정적으로 동작하도록 단순화된 조건을 사용합니다. */ private checkStreamingComplete; /** * 모든 TTS 처리가 완료되었는지 확인합니다. * * 확인 조건: * 1. 모든 문장이 준비 완료 상태 (conversationStateService.isAllReady()) * 2. 처리 중인 문장 버퍼가 비어있음 (sentenceBuffer === "") * 3. 화면 표시 대기 중인 메시지 큐가 비어있음 (messageQueue.length === 0) */ isAllTTSCompleted(): boolean; setSentenceReady(index: number): void; private setupEventListeners; private handleRoomMessage; private setupMessageQueueProcessor; private handleOpenAiMessage; private handleAzureSttOpenAiMessage; private handleStreamingComplete; private handleError; private processSentenceBuffer; private extractCompleteSentences; private processTTS; private normalizeForTTS; private handleUpdateMessageEvent; private clearScheduledTick; private scheduleStreamingCompletionCheck; private processQueue; private splitTextWithPunctuation; private updateMessage; private addMessage; private prepareNewMessage; private resetState; private clearMessageQueue; private setStreaming; /** * 타임아웃 시 강제로 스트리밍을 종료합니다. * 웹뷰 환경에서 무한 스트리밍을 방지하기 위한 안전장치입니다. */ private setCompleted; private notifyHandlers; private delay; }