v1.0.0

⚡ 빠른 시작

1

SDK 스크립트 추가

<script src="https://your-sdk-domain.com/bb2-sdk.js" defer></script>

defer 속성으로 페이지 로딩을 블락하지 않습니다.

2

채팅 위젯 초기화

<script> BB2SDK.init({ theme: { position: { horizontal: 'right', vertical: 'bottom' } }, autoInit: true, autoLogin: true // 기본값: 자동 로그인 시작 }); </script>

autoLogin: true로 페이지 로드 시 아임웹 OAuth2 인증을 자동으로 시작합니다. 이미 로그인되어 있으면 건너뜁니다.

3

완료! 🎉

웹사이트에 채팅 위젯이 자동으로 나타납니다.

⚙️ 설정 옵션

theme

ThemeConfig

위젯 테마 및 위치 설정

{ primaryColor: '#007bff', position: { horizontal: 'right', vertical: 'bottom' }, size: 'medium', darkMode: false, offset: { right: 20, bottom: 20 } }

language

'ko' | 'en'

위젯 언어 설정

'ko'

autoInit

boolean

자동 초기화 여부 (기본: true)

true

debug

boolean

디버그 모드 활성화

false

autoLogin

boolean

페이지 로드 시 아임웹 OAuth2 인증을 자동으로 시작합니다. 이미 로그인되어 있으면 건너뜁니다. (기본: true)

true

sourcePageUrl

string

SDK가 실행된 페이지 URL (자동 설정)

window.location.href

theme.buttonImageUrl

string

커스텀 버튼 이미지 URL (설정하지 않으면 기본 BB 프로필 이미지 사용)

'https://example.com/custom-icon.png'

🚀 고급 사용법

프로그래밍 방식으로 제어

// SDK 인스턴스 가져오기 (이미 초기화된 경우) const sdk = BB2SDK.getInstance(); // 채팅 위젯 열기 sdk.open(); // 채팅 위젯 닫기 sdk.close(); // 채팅 위젯 토글 sdk.toggle(); // 위젯 최소화/최대화 sdk.minimize(); sdk.maximize(); // 테마 업데이트 sdk.updateTheme({ primaryColor: '#ff5722', size: 'large', buttonImageUrl: 'https://example.com/new-icon.png' }); // 현재 상태 확인 const state = sdk.getState(); console.log('위젯 열림 상태:', state.isOpen); // 디버그 정보 출력 sdk.debug(); // 상태 관리 (새로고침 시에도 유지됨) const savedState = sdk.getSavedState(); console.log('저장된 상태:', savedState); // 마지막 방문 페이지 URL 확인 const lastPageUrl = sdk.getLastPageUrl(); console.log('마지막 페이지:', lastPageUrl); // 저장된 상태 삭제 sdk.clearSavedState(); // 이벤트 리스너 등록 sdk.on('widget:open', () => { console.log('위젯이 열렸습니다!'); });

이벤트 목록

widget:open 채팅 위젯이 열렸을 때
widget:close 채팅 위젯이 닫혔을 때
widget:minimize 위젯이 최소화되었을 때
widget:maximize 위젯이 최대화되었을 때
error 오류가 발생했을 때

📋 완전한 예제

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>BB2 SDK 예제</title> </head> <body> <h1>우리 웹사이트</h1> <p>BB2 AI 상담 서비스가 포함된 웹사이트입니다.</p> <!-- BB2 SDK 로드 --> <script src="https://your-sdk-domain.com/bb2-sdk.js"></script> <script> // SDK 초기화 BB2SDK.init({ theme: { primaryColor: '#4f46e5', position: { horizontal: 'right', vertical: 'bottom' }, size: 'medium', offset: { right: 20, bottom: 20 }, // 커스텀 버튼 이미지 (선택사항) buttonImageUrl: 'https://example.com/custom-chat-icon.png' }, language: 'ko', autoInit: true, debug: true, autoLogin: true // 아임웹 OAuth2 자동 시작 }).then(sdk => { // 이벤트 리스너 등록 sdk.on('widget:open', () => { console.log('채팅 위젯이 열렸습니다.'); }); sdk.on('widget:close', () => { console.log('채팅 위젯이 닫혔습니다.'); }); sdk.on('error', (error) => { console.error('오류 발생:', error); }); // 전역 함수로 노출 window.openChat = () => sdk.open(); window.closeChat = () => sdk.close(); window.toggleChat = () => sdk.toggle(); }); </script> <button onclick="openChat()">고객 상담 시작</button> <button onclick="closeChat()">상담 종료</button> <button onclick="toggleChat()">상담 토글</button> </body> </html>

💾 상태 지속성

BB2 SDK는 세션스토리지를 사용하여 페이지 새로고침 시에도 위젯 상태를 유지합니다.

🔄 자동으로 기억되는 것들

  • 위젯 열림/닫힘 상태: 사용자가 위젯을 열어둔 상태에서 새로고침하면 다시 열린 상태로 복원
  • 위젯 최소화 상태: 최소화된 상태도 그대로 유지
  • 쓰레드 페이지 복원: 웹앱에서 특정 쓰레드에서 대화 중 새로고침 시 해당 쓰레드로 자동 이동
  • 세션 기반 저장: sessionStorage 사용으로 탭별 독립적인 상태 관리
  • 자동 만료: 저장된 상태는 일정 시간 후 자동 만료 (위젯: 1일, 쓰레드: 1시간)

🔧 상태 관리 API

// 현재 저장된 상태 확인 const savedState = sdk.getSavedState(); console.log(savedState); // { // isOpen: true, // isMinimized: false, // lastPageUrl: "/chat/thread/123", // sourcePageUrl: "https://example.com/support" // } // 마지막 방문 페이지 URL만 확인 const lastPage = sdk.getLastPageUrl(); // 저장된 모든 상태 삭제 (초기화) sdk.clearSavedState();

🔍 브라우저 콘솔 디버깅 도구

// 전체 SDK 상태 확인 bb2Debug(); // 저장된 상태 확인 bb2GetStorage(); // 저장된 상태 초기화 bb2ClearStorage(); // 수동 상태 복원 실행 bb2ForceRestore(); // 상태 수동 저장 bb2SaveState(true, false); // (isOpen, isMinimized) // Storage 기능 테스트 bb2TestStorage();

💡 팁: 브라우저 개발자 도구 콘솔에서 위 명령어들을 직접 실행해보세요!

🔄 쓰레드 상태 관리 특징

웹앱에서 쓰레드 이동만 별도로 관리하여 사용자 경험을 향상시킵니다.

  • 쓰레드만 기억: /thread/* 패턴의 페이지만 sessionStorage에 저장
  • 자동 정리: 로그인/메인 페이지로 이동 시 저장된 쓰레드 자동 제거
  • 탭별 독립: 각 브라우저 탭마다 독립적인 쓰레드 상태 관리
  • 1시간 제한: 저장된 쓰레드는 1시간 후 자동 만료

🚀 라이브 데모

실제로 동작하는 BB2 SDK를 바로 테스트해볼 수 있습니다!

💾 상태 지속성 테스트: 위젯을 열어둔 상태에서 페이지를 새로고침해보세요!

SDK 초기화 중...

📋 이벤트 로그

🔧 문제 해결

Q: 위젯이 나타나지 않아요

A: 다음을 확인해주세요:

  • SDK 스크립트가 올바르게 로드되었는지 확인
  • 브라우저 콘솔에서 오류 메시지 확인
  • agentServerUrl이 올바른지 확인
  • CORS 정책으로 인한 차단이 없는지 확인

Q: 메시지가 전송되지 않아요

A: Agent 서버 연결을 확인해주세요:

  • agentServerUrl이 접근 가능한지 확인
  • 네트워크 탭에서 API 요청 상태 확인
  • 서버 측 로그 확인

Q: 스타일이 깨져 보여요

A: CSS 충돌을 확인해주세요:

  • 웹사이트의 CSS가 SDK 스타일을 덮어쓰는지 확인
  • z-index 값이 충분한지 확인
  • theme 옵션으로 커스터마이징 시도