upfall
본문으로 바로가기
문서 목록

SDK 레퍼런스

스크립트 주소, 초기화 옵션, 런타임 API, 이벤트, React 래퍼 속성을 한 곳에 모은 참조 문서입니다.

SDK 레퍼런스는 위젯의 초기화 옵션, 런타임 API, 이벤트를 정리한 참조 문서입니다. 설치 코드 두 줄만으로 위젯은 동작하므로, 언어를 바꾸거나 특정 기능을 끄거나 사이트 코드에서 위젯 상태를 받아야 할 때 이 문서를 봅니다.

옵션은 전부 선택 사항입니다. 지정하지 않으면 아래 표의 기본값으로 동작합니다.


스크립트 주소

주소성격언제 쓰나
https://addon-cdn.voidx.ai/latest/voidx-ai-addon.standalone.js배포할 때마다 갱신됩니다데모, 테스트
https://addon-cdn.voidx.ai/v{버전}/voidx-ai-addon.standalone.js한 번 발행되면 바뀌지 않습니다운영 사이트

스크립트를 불러오면 window.VoidxAIAddon이 생기고, init(config)를 호출하면 위젯이 그려집니다. 위젯은 호스트 사이트 스타일에 영향을 주지 않고 영향을 받지도 않습니다.


초기화 옵션

JavaScript
const voidx = window.VoidxAIAddon.init({
  apiKey: 'YOUR_API_KEY',
  locale: 'en',
  features: { voice: false, productPress: true },
  contact: 'help@example.com',
});
옵션타입기본값설명
apiKeystring없음 (필수)위젯 키. 없으면 init()이 오류를 던지고 아무것도 그리지 않습니다
locale'ko' | 'en' | 'ja' | 'zh''ko'위젯 문구와 답변 언어. 방문자 브라우저 언어를 자동으로 읽지 않으므로 다국어 사이트에서는 페이지 언어에 맞춰 지정합니다
features객체아래 표기능별 켜기·끄기
theme객체아래 표색상·글꼴·모서리
hoverTargets객체아래 표호버 감지 대상 요소 규칙
productPress객체아래 표길게 누르기·길게 올려두기로 상품을 고르는 동작
contactstring없음토큰 한도가 소진됐을 때 방문자에게 보여줄 문의처. 비우면 "사이트 운영자에게 문의해주세요"로 나갑니다
telemetryfalse | 객체활성false로 두면 위젯 자체 계측을 끕니다
onReady() => void없음위젯 준비 완료 콜백
onError(error: Error) => void없음오류 콜백
onMessage(message) => void없음메시지 수신 콜백

features

키기본값설명
chattrue대화창과 캐릭터 위 말풍선
cursortrue화면에 떠 있는 캐릭터
voicefalse음성 대화. true는 요청이고 플랜이 허용할 때만 켜집니다. 구축형(Customize) 계약에서 제공합니다
hoverDetectiontrue커서 반응 트리거와 호버 감지 이벤트
productPressfalse상품을 길게 누르거나 길게 올려두면 대화로 넘기는 동작
agentMode'3d'캐릭터 렌더 방식

voice: false면 플랜과 무관하게 꺼집니다. 켰는데 음성 버튼이 보이지 않으면 코드가 아니라 계약을 확인합니다.

theme

키기본값
primaryColor#587efa
gradientFrom#3762f2
gradientTo#31a9ff
fontFamilyPretendard, -apple-system, BlinkMacSystemFont, sans-serif
borderRadius20 (px)

hoverTargets

커서가 어떤 요소 위에 1.5초 머물렀을 때 voidx:hover:detected 이벤트를 낼지 정합니다. ids 정확 일치, classNames 정확 일치, idPatterns, classNamePatterns 순으로 판정합니다.

키기본값
classNames['product-item', 'voidx-target']
ids[]
idPatterns[/^product-[A-Za-z0-9]+$/, /product-\w+/]
classNamePatterns[/^voidx-/]

productPress

features.productPress를 켰을 때의 세부 동작입니다.

키기본값설명
pressMs550터치·펜에서 길게 누르기로 판정하는 시간(ms)
hoverMs900마우스에서 길게 올려두기로 판정하는 시간(ms)
hoverEnabledtrue마우스 길게 올려두기 사용 여부
cooldownMs6000같은 상품을 다시 잡기까지의 간격(ms)
mode'greet'greet는 "{상품명}에 관심 있으신가요?" 말풍선 표시, send는 상품명을 방문자 메시지로 전송, prefill은 대화창을 열어 입력창에 상품명만 채움
suppressNativeMenutrue길게 누를 때 뜨는 브라우저 기본 메뉴와 텍스트 선택을 막습니다
urlPattern없음상품 상세 주소를 판정할 정규식. 지정하면 기본 토큰 목록 대신 이 규칙을 씁니다. 잘못된 패턴은 무시되고 기본 목록으로 돌아갑니다

런타임 API

init()이 돌려주는 인스턴스로 위젯을 제어합니다.

JavaScript
const voidx = window.VoidxAIAddon.init({ apiKey: 'YOUR_API_KEY' });

voidx.show();
voidx.on('voidx:chat:open', () => console.log('opened'));
메서드설명
show()대화창을 엽니다
hide()대화창을 닫습니다
sendMessage(text)방문자가 입력한 것처럼 메시지를 보냅니다
announceSystemEvent(context, { instruction?, openChat? })방문자 말풍선 없이 에이전트 답변만 띄웁니다. 주문 완료 같은 사이트 이벤트를 알릴 때 씁니다. 아직 대화가 시작되지 않았으면 건너뜁니다
setTheme(partial)테마 일부를 바꿉니다
setLocale(locale)언어를 바꿉니다
on(event, handler) / off(event, handler)이벤트 구독·해제
destroy()위젯을 내리고 DOM과 상태를 정리합니다

이벤트

on()으로 받거나 같은 이름의 window CustomEvent로도 받을 수 있습니다.

이벤트데이터시점
voidx:ready없음위젯 준비 완료
voidx:errorError오류 발생
voidx:message메시지 객체메시지 수신
voidx:auth:expired{ status }방문자 인증 만료. 위젯이 스스로 다시 받으므로 조치는 필요 없습니다
voidx:chat:open없음대화창 열림
voidx:chat:close없음대화창 닫힘
voidx:voice:start없음음성 대화 시작
voidx:voice:end없음음성 대화 종료
voidx:voice:error{ message }음성 오류
voidx:hover:detected{ element }호버 감지 대상 위에 1.5초 머묾
voidx:product:captured{ product, element }길게 누르기·올려두기로 상품이 잡힘
voidx:action:executed{ name, params, result }호스트 액션 실행
voidx:action:error{ name, params, error }호스트 액션 실패
voidx:destroy없음위젯 정리

React 래퍼 @voidx-ai/react

Bash
npm install @voidx-ai/react

VoidxAddon 컴포넌트가 스크립트를 불러와 init()을 대신 호출하고, 언마운트될 때 destroy()까지 처리합니다. React 18 이상이 필요합니다.

속성설명
apiKey위젯 키 (필수)
features기능 설정
theme테마
locale언어. 값이 바뀌면 setLocale을 자동으로 호출합니다
scriptUrl스크립트 주소. 운영 사이트에서 버전을 고정할 때 /v{버전}/ 주소를 지정합니다
hoverTargets호버 감지 대상 규칙
onReady / onError / onMessage콜백
disabledtrue면 스크립트를 불러오지 않습니다
children자식에서 useVoidx() 훅으로 인스턴스에 접근합니다
TSX
import { VoidxAddon, useVoidx } from '@voidx-ai/react';

function OpenChatButton() {
  const voidx = useVoidx();
  return <button onClick={() => voidx?.show()}>상담하기</button>;
}

래퍼의 features 타입에는 productPress 키가 없습니다. TypeScript에서 이 기능을 켜려면 객체를 단언해 전달합니다.

TSX
import type { VoidxFeatures } from '@voidx-ai/react';

const features = { chat: true, productPress: true } as VoidxFeatures;
<VoidxAddon apiKey={key} features={features} />;

apiKey나 disabled가 바뀔 때만 위젯을 다시 초기화합니다. 콜백은 처음 초기화 시점의 값을 씁니다.


다음 단계

다음 단계

카페24 유료앱카페24 앱스토어에서 앱을 설치하고 쇼핑몰 분석과 연결 허용을 거쳐 상품 화면에 에이전트를 띄우는 순서를 안내합니다.