Skip to main content

설치

프로젝트에 패키지를 설치하세요.

사용법

useConversation

vox.ai 에이전트 연결과 오디오 상태를 관리하는 React 훅입니다.

세션 초기화

useConversation으로 Conversation 인스턴스를 만듭니다.
음성 세션에는 마이크 권한이 필요합니다. 세션 시작 전에 UI에서 안내하고 요청해 주세요.

옵션

훅 초기화 시 콜백과 옵션을 넘길 수 있습니다.
옵션:
  • textOnly — Text Only 모드 기본값. 아래를 참고하세요.

콜백

  • onConnect — 세션이 연결되면 불립니다.
  • onDisconnect — 연결이 끊기면 불립니다.
  • onMessage — 메시지가 들어올 때 불립니다. 사용자 음성의 텍스트 변환이나 에이전트 응답이 여기로 옵니다.
  • onError — 에러 발생 시 불립니다.
  • onStatusChange — 연결 상태가 바뀔 때 불립니다.
  • onAgentStateChange — 에이전트 상태가 "initializing", "idle", "listening", "thinking", "speaking" 중 하나로 바뀔 때 불립니다.

메서드

startSession
세션을 시작합니다. Agent ID는 vox.ai 대시보드에서 확인하세요. 세션 고유 ID를 resolve하는 Promise를 돌려줍니다.
startSession 옵션: visitorId는 vox.ai 내부 Customer UUID가 아닙니다. 에이전트의 Memory가 켜져 있으면 같은 Customer와 에이전트에 저장된 Memory를 첫 응답 전에 자동으로 불러옵니다.
apiKey는 조직 secret입니다. 공개 웹페이지에는 넣지 마세요. 노출됐다고 판단되면 대시보드에서 즉시 로테이션하세요.
audio는 브라우저가 마이크 입력에 기본으로 적용하는 에코 제거·잡음 억제·자동 음량 조절을 항목별로 끕니다. 생략하면 셋 다 켜진 상태입니다. Android Chrome은 에코 제거가 켜진 마이크를 열면 기기를 통화 모드로 전환해 에이전트 음성이 미디어가 아닌 통화 경로로 재생됩니다. 사용자가 이어폰·헤드셋을 쓰거나 앱에서 마이크 입력을 따로 처리한다면 echoCancellation: false로 이를 피할 수 있습니다. Text Only 세션에서는 무시됩니다.
스피커폰에서 echoCancellation을 끄면 스피커로 나온 에이전트 음성이 마이크로 다시 들어가 사용자 발화로 처리됩니다. 에이전트가 자기 목소리에 반응해 말을 끊을 수 있으니 스피커폰을 쓰는 화면에서는 끄지 마세요.
endSession
세션을 종료합니다. Promise<void>를 반환합니다.
setVolume
출력 볼륨을 조절합니다. 0~1 사이 값을 넣으세요.
sendUserMessage
에이전트에게 텍스트 메시지를 보냅니다. 마이크 대신 텍스트로 입력할 때 쓰세요. Promise<void>를 반환합니다.
setMicMuted
마이크를 음소거하거나 해제합니다. Promise<void>를 반환합니다.
getId
현재 세션 ID를 돌려줍니다. 세션 ID가 없으면 undefined를 반환합니다.
getMessages
세션의 메시지 배열 snapshot을 돌려줍니다.
getAgentState
현재 에이전트 상태 snapshot을 돌려줍니다.
getInputVolume / getOutputVolume
현재 입출력 볼륨을 0~1 스케일로 돌려줍니다.
getInputByteFrequencyData / getOutputByteFrequencyData
입출력 주파수 데이터를 Uint8Array로 돌려줍니다. 세션이 없으면 undefined를 반환합니다. 오디오 시각화에 쓸 수 있습니다.
오디오 모니터링 메서드는 음성 세션에서만 동작합니다. 볼륨·주파수 측정은 이 메서드를 처음 호출할 때 시작되므로 첫 호출은 0이나 빈 배열을 돌려줄 수 있습니다. 한 번도 호출하지 않으면 SDK는 측정용 AudioContext를 만들지 않습니다.
changeInputDevice
세션 중에 오디오 입력 디바이스를 바꿉니다. 전환 성공 여부를 담은 Promise<boolean>을 반환합니다.
changeOutputDevice
세션 중에 오디오 출력 디바이스를 바꿉니다. 전환 성공 여부를 담은 Promise<boolean>을 반환합니다.
디바이스 전환은 음성 세션에서만 동작합니다. deviceId를 지정하지 않으면 브라우저 기본 디바이스가 쓰입니다. 사용 가능한 디바이스 목록은 MediaDevices.enumerateDevices() API로 조회하세요.

React State

JavaScript SDK의 getStatus(), getAgentState(), getMicMuted()에 대응합니다. React에서는 state로 제공되어 값이 바뀌면 자동으로 re-render됩니다.

Text Only 모드

마이크 없이 텍스트만으로 에이전트와 대화할 수 있습니다. 마이크 권한을 요청하지 않고 오디오 컨텍스트도 만들지 않습니다.

Dynamic Variables와 Metadata

  • dynamicVariables — 에이전트 프롬프트에서 {{userName}} 형식으로 참조됩니다. 동적 변수에서 자세히 알아보세요.
  • metadata — 웹훅과 통화 기록에 포함됩니다.

전체 예제


React SDK, 리액트 SDK, useConversation, @vox-ai/react, visitorId, Customer, Memory, 훅, hook, 웹 연동