@charisma-ai/react
Version:
Charisma.ai chat component for React
60 lines (59 loc) • 2.5 kB
TypeScript
import React from "react";
import { Conversation as ConversationType, MessageEvent, StartTypingEvent, StopTypingEvent, EpisodeCompleteEvent, Message, StartEvent, ReplyEvent, SpeechConfig, ActionEvent, ProblemEvent } from "@charisma-ai/sdk";
export declare enum ChatMode {
Tap = "tap",
Chat = "chat"
}
export type PlayerMessage = {
type: "player";
timestamp: number;
message: {
text: string;
};
};
export type StoredMessage = Message | PlayerMessage;
export interface ConversationChildProps {
inputValue: string;
isRestarting: boolean;
isTyping: boolean;
messages: StoredMessage[];
mode: ChatMode;
type: (newInputValue: string) => void;
start: ConversationType["start"];
reply: ConversationType["reply"];
tap: ConversationType["tap"];
action: ConversationType["action"];
resume: ConversationType["resume"];
restart: (eventId: string) => Promise<void>;
}
export interface ConversationState {
inputValue: string;
isTyping: boolean;
messages: StoredMessage[];
mode: ChatMode;
}
export interface UseConversationOptions {
conversationUuid?: string;
onMessage?: (event: MessageEvent) => Promise<void> | void;
onStartTyping?: (event: StartTypingEvent) => void;
onStopTyping?: (event: StopTypingEvent) => void;
onEpisodeComplete?: (event: EpisodeCompleteEvent) => void;
onProblem?: (event: ProblemEvent) => void;
onStart?: (event: StartEvent) => void;
onReply?: (event: ReplyEvent) => void;
onResume?: () => void;
onTap?: () => void;
onAction?: (event: ActionEvent) => void;
initialState?: ConversationState;
onStateChange?: (newState: ConversationState) => void;
shouldResumeOnConnect?: boolean | StartEvent;
shouldStartOnConnect?: boolean | StartEvent;
speechConfig?: SpeechConfig;
sendIntermediateEvents?: boolean;
}
export declare const useConversation: ({ conversationUuid, onMessage, onStartTyping, onStopTyping, onEpisodeComplete, onProblem, onStart, onReply, onResume, onTap, onAction, initialState, onStateChange, shouldResumeOnConnect, shouldStartOnConnect, speechConfig, sendIntermediateEvents, }: UseConversationOptions) => ConversationChildProps;
export interface ConversationProps extends UseConversationOptions {
children: React.ReactNode;
}
export declare const Conversation: ({ children, ...props }: ConversationProps) => React.JSX.Element;
export declare const useConversationContext: () => ConversationChildProps | undefined;