Klleon Chat SDK
Korean
Korean
  • ✨New Javascript SDK [1.2.0]
    • 시작하기
    • 이벤트
    • UI
    • 메서드
      • 라이프 사이클 메서드
      • 텍스트 대화
      • 음성대화
      • 에코 대화
      • 오디오 에코 대화
      • 기타 메서드
    • 타입스크립트 지원
    • 예제
      • VanillaJS
      • React
      • Nextjs
    • 로그 시스템
    • 업데이트 내역
  • JavaScript SDK [v0.x.x] (deprecated 예정)
    • 시작하기
    • 초기화
    • 아바타 스트리밍
      • 스트리밍 시작하기
      • 스트리밍 중단
      • 스트리밍 화면 출력 제어
    • 채팅 화면
    • 텍스트 메시지
    • 보이스 메시지
    • 에코 - 발화
    • 이벤트 구독
    • 업데이트 내역
  • 서비스 호출 구조
Powered by GitBook
LogoLogo

Products

  • Pricing

Websites

  • Homepage
  • Youtube
  • Linkedin

Copyright © Klleon. All rights reserved

On this page
  1. New Javascript SDK [1.2.0]
  2. 예제

Nextjs

// layout.tsx
export default function Layout({ children }: { children: ReactNode }) {
  return (
    <html lang="en">
      <head>
        <meta charSet="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <script
          defer
          src="https://web.sdk.klleon.io/1.0.0/klleon-chat.umd.js"
        />
      </head>
      <body style={{ margin: 0 }}>{children}</body>
    </html>
  );
}
// page.tsx
"use client";

interface AvatarProps {
  videoStyle?: CSSProperties;
}

interface ChatProps {
  delay?: number;
  type?: "voice" | "text";
  isShowCount?: boolean;
}

const SdkPage = () => {
  const { sdkHandler } = useSdk();
  const avatarRef = useRef<HTMLElement & AvatarProps>(null);
  const chatRef = useRef<HTMLElement & ChatProps>(null);

  useEffect(() => {
    if (avatarRef.current) {
      avatarRef.current.videoStyle = {
        borderRadius: "30px",
        objectFit: "contain",
      };
    }
    if (chatRef.current) {
      chatRef.current.delay = 10;
      chatRef.current.type = "voice";
      chatRef.current.isShowCount = true;
    }

    if (typeof window !== "undefined") {
      const initKlleonChat = async () => {
        const { KlleonChat } = window;
        KlleonChat.onStatusEvent((data) => {
          console.log(data, "status data");
        });
        KlleonChat.onChatEvent((data) => {
          console.log(data.chat_type, "data~~");
        });

        await KlleonChat.init({
          sdk_key: "APP-lmscq5QSyxhaKmB8SWUu",
          avatar_id: "179c4107-4442-11ef-8ee1-0abbf354c5cc",
          mode: "dev",
        });
      };
      initKlleonChat();
    }

    return () => {
      if (window.KlleonChat) {
        const { KlleonChat } = window;
        KlleonChat.destroy();
      }
    };
  }, []);
  
  const sdkHandler = {
    handleEcho: () => {
      const { KlleonChat } = window;
      KlleonChat.echo("hello world");
    },
    handleAvatarChange: (avatar_id: string) => {
      const { KlleonChat } = window;
      KlleonChat.changeAvatar({
        avatar_id,
      });
    },
    handleClear: () => {
      const { KlleonChat } = window;
      KlleonChat.clearMessageList();
    },
  };

  return (
    <div className="flex flex-col gap-y-6">
      <div className="flex h-[800px]">
        <div className="flex-1">
          <avatar-container
            ref={avatarRef}
            style={{
              background: "red",
              borderRadius: "30px",
            }}
          />
        </div>
        <div className="flex-1">
          <chat-container ref={chatRef} class="rounded-3xl" />
        </div>
      </div>
      <div className="flex gap-6">
        <button onClick={sdkHandler.handleEcho}>echo</button>
        <button
          onClick={() => sdkHandler.handleAvatarChange("change-avatar-id")}
        >
          change avatar
        </button>
        <button onClick={sdkHandler.handleClear}>clear message</button>
      </div>
    </div>
  );
};

export default SdkPage;
PreviousReactNext로그 시스템

Last updated 4 months ago

✨