UNPKG

convai-web-sdk

Version:

Integrate lifelike digital beings into your web applications with real-time conversations, actions, and facial expressions. Supports a variety of voices, languages, and emotions.

144 lines (143 loc) 4.8 kB
import { ActionConfig } from "../../Proto/generated"; export interface ChatMessage { id?: string; sender: "user" | "npc"; content: string; timestamp?: number; } export type ActionConfigParamsType = { actions?: string[]; characters?: ActionConfig.Character[]; objects?: ActionConfig.Object[]; classification?: string; contextLevel?: number; currentAttentionObject?: string; }; export interface UseConvaiClientState { npcText: string; chatbotMic: boolean; isTyping: boolean; isTalking: boolean; isStreaming: boolean; chatMessages: ChatMessage[]; npcName: string; userName?: string; emotionData: string[]; gender: string; actionList: string[]; currTranscript: string; tempTranscript: string; transcript: string; } export interface UseConvaiClientActions { setNpcText: (value: string) => void; setIsTyping: (value: boolean) => void; setChatbotMic: (value: boolean) => void; handleKeyUp: () => void; handleTextStream: (text?: string) => Promise<void> | void; handleTranscriptChange: (e: any) => void; startListening: () => Promise<void> | void; stopListening: () => Promise<void> | void; resetChatHistory: () => void; invokeTrigger: (name: string, message?: string) => void; sendFeedback: (interaction_id: string, character_id: string, session_id: string, thumbs_up: boolean, feedback_text: string) => void; toggleAudioVolume: () => void; getAudioVolume: () => number | undefined; stopCharacterAudio: () => void; pauseAudio: () => void; resumeAudio: () => void; onAudioStateChange: (fn: () => void) => void; playAudio: () => void; setActionConfig: (actionConfig: ActionConfig) => void; updateDynamicInfo: (_dynamicInfo: string) => void; updateSpeakerMetadata: (metadata: Record<string, string>) => Promise<{ speakerId: string; name: string; } | null>; getSpeakerMetadata: () => { name: string; metadata: Record<string, string>; }; getSpeakerId: () => string; getSpeakerName: () => string; } export interface UseConvaiClientRefs { convaiClient: React.MutableRefObject<ConvaiClientInterface | null>; responseText: React.MutableRefObject<string>; newMessages: React.MutableRefObject<any[]>; facialRef: React.MutableRefObject<any[]>; } export interface UseConvaiClientReturn { state: UseConvaiClientState; actions: UseConvaiClientActions; refs: UseConvaiClientRefs; characterId: string; } export interface ConvaiClientParams { apiKey: string; characterId: string; speaker?: string; speakerId?: string; enableAudio?: boolean; sessionId?: string; enableFacialData?: boolean; enableFacialEmotionData?: boolean; faceModel?: 0 | 1 | 2 | 3; narrativeTemplateKeysMap?: Map<string, string>; textOnlyResponse?: boolean; micUsage?: boolean; webstreamUrl?: string; languageCode?: string; retryCount?: number; apiBaseUrl?: string; } export interface UseConvaiClientParams { apiKey: string; characterId: string; speaker?: string; enableAudio?: boolean; speakerId?: string; sessionId?: string; languageCode?: string; enableFacialData?: boolean; enableFacialEmotionData?: boolean; faceModel?: 0 | 1 | 2 | 3; narrativeTemplateKeysMap?: Map<string, string>; textOnlyResponse?: boolean; micUsage?: boolean; webstreamUrl?: string; apiBaseUrl?: string; retryCount?: number; } export interface ConvaiClientInterface { sendTextChunk(text: string): void; sendTextStream(text: string, isTyping?: boolean): void; connectionState(text: string): void; resetSession(): void; invokeTrigger(name: string, message?: string): void; sendFeedback(interaction_id: string, character_id: string, session_id: string, thumbs_up: boolean, feedback_text: string): void; toggleAudioVolume(): void; getAudioVolume(): number | undefined; stopCharacterAudio(): void; pauseAudio(): void; resumeAudio(): void; onAudioPlay(fn: () => void): void; onAudioStop(fn: () => void): void; onAudioStateChange(fn: () => void): void; playAudio(): void; setActionConfig(actionConfig: ActionConfig): void; startAudioChunk(): void; endAudioChunk(): void; updateSpeakerMetadata(metadata: Record<string, string>): Promise<{ speakerId: string; name: string; } | null>; getSpeakerMetadata(): { name: string; metadata: Record<string, string>; }; getSpeakerId(): string; getSpeakerName(): string; setResponseCallback(fn: (response: any) => void): void; setErrorCallback(fn: (type: string, statusMessage: string, status: string) => void): void; }