본문으로 건너뛰기
가이드

Wixzel Voice로 웹사이트에 말하는 AI 마스코트 추가하기

이 가이드를 마치면 웹사이트 구석에 말하는 마스코트가 생깁니다. 방문자는 Call 버튼을 누르고, 전화 회선이나 앱 없이 브라우저에서 비즈니스를 아는 에이전트와 대화합니다. 약 15분이 걸립니다. 요청 하나로 사이트에서 에이전트와 마스코트를 만들고, 요청 하나로 위젯을 켜고, script 태그 하나로 페이지에 올립니다. 에이전트 생성은 무료입니다. 통화는 같은 엔진의 통화처럼 초 단위로 선불 잔액에서 청구됩니다. Gemini Live에서 연결된 1분당 $0.0491, 3분 대화에 약 $0.15입니다.

작성 · 게시 · 업데이트

소요 시간
약 15분
엔진 사용 시간
연결된 1분당 $0.0491
치과 웹사이트 오른쪽 아래에 마스코트 위젯이 열려 있는 화면. 인사말 말풍선, 초록색 마스코트, Call 버튼이 보입니다.

시작하기 전에 무엇이 필요한가요?

  • 크레딧이 있는 Wixzel Voice 계정. 위젯 통화는 무료 테스트 시간이 아니라 실제 크레딧으로 결제되며, 최소 충전 금액은 $5입니다.
  • agents:write와 calls:write 스코프가 있는 API 키(서버에 보관). 아래 작업은 모두 콘솔의 에이전트 마스코트 탭에서도 할 수 있습니다.
  • script 태그를 추가할 수 있고 HTTPS로 제공되는 웹사이트. 브라우저는 HTTPS 페이지에만 마이크를 허용합니다.

Wixzel Voice에서 단계별로 어떻게 만드나요?

  1. 01웹사이트로 에이전트 만들기

    사이트 주소와 역할을 넘깁니다. role은 receptionist, support, sales, guide 중 하나이거나 직접 쓴 설명입니다.

    shell
    curl https://api.voice.wixzel.com/v1/agents/generate \
      -H "Authorization: Bearer $WIXZEL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{ "website_url": "https://smiledental.example", "role": "receptionist" }'
    make-agent.mjs (TypeScript SDK)
    import { WixzelVoice, waitForAgent } from 'wixzel-voice';
    
    const client = new WixzelVoice({ apiKey: process.env.WIXZEL_API_KEY });
    
    let agent = await client.agents.generate({
      website_url: 'https://smiledental.example',
      role: 'receptionist',
    });
    agent = await waitForAgent(client.agents, agent); // until the mascot is ready or failed
    console.log(agent.id, agent.name, agent.mascot.status, agent.knowledge_base_id);

    즉시 대화할 수 있는 에이전트와 mascot.status: "building"으로 응답합니다. 백그라운드에서 페이지를 읽고, 프롬프트와 첫 인사를 쓰고, 읽은 내용으로 지식 베이스를 만들고, 브랜드 색상으로 마스코트를 그립니다. mascot.status가 ready가 될 때까지 GET /v1/agents/{id}를 폴링하십시오. 보통 1분이 걸리지 않습니다. SDK에서는 waitForAgent가 폴링을 대신합니다. 생성에 실패해도 에이전트는 기존 모습 그대로 동작합니다.

    에이전트는 Gemini Live로 시작합니다. 엔진, 음성, 프롬프트는 다른 에이전트처럼 PATCH /v1/agents/{id}로 바꿀 수 있으며, 마스코트는 그대로 유지됩니다.

  2. 02위젯을 켜고 통화할 수 있는 사람 정하기

    공유는 직접 켜기 전까지 꺼져 있습니다. 사이트가 제공되는 오리진을 나열하십시오. 위젯은 그 외의 곳에서는 통화를 시작하지 않습니다.

    shell
    curl -X PATCH https://api.voice.wixzel.com/v1/agents/AGENT_ID/mascot \
      -H "Authorization: Bearer $WIXZEL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "welcome_message": "Hi! I am Molly from Smile Dental. Tap Call to talk to me.",
        "sharing": {
          "embed": true,
          "embed_origins": ["https://smiledental.example", "https://www.smiledental.example"],
          "caller_info": "contact",
          "max_call_seconds": 300,
          "daily_minutes": 60,
          "calls_per_visitor_daily": 3,
          "max_concurrent_calls": 2
        }
      }'

    caller_info는 방문자가 통화 전에 제공하는 정보입니다. none(기본값)은 아무것도 묻지 않고, contact는 이름과 전화번호 또는 이메일을 묻고, google은 Google 로그인을 요청합니다. Google 로그인으로 상대가 누구인지 알 수 있으며, 방문자에게 Wixzel 계정이 만들어지지는 않습니다. 사용자 사이트에서는 voice.wixzel.com의 작은 창으로 열리며, 결과는 embed_origins에 있는 오리진에만 전달됩니다.

    네 가지 한도로 공개 통화를 예산 안에 둡니다. 통화 1건의 최대 길이, 모든 방문자를 합친 하루 공개 통화 시간(UTC 자정까지), 방문자 1명의 하루 통화 횟수, 동시 통화 수입니다. 위의 값이 기본값입니다. "link": true를 추가하면 voice.wixzel.com/m?id=… 공유 페이지도 생깁니다.

    응답에는 m_4fT9qLx2Bv8K 같은 mascot.public_id가 들어 있습니다. script 태그에 넣는 ID입니다.

  3. 03script 태그 하나 붙여 넣기

    마스코트를 보여 줄 모든 페이지의 닫는 body 태그 앞에 다음을 추가합니다.

    index.html
    <script src="https://voice.wixzel.com/embed.js" data-mascot="m_4fT9qLx2Bv8K" async></script>

    마스코트는 환영 메시지와 함께 오른쪽 아래 구석에서 기다립니다. 방문자가 Call 버튼을 누르고 마이크를 허용한 뒤 말하면, 마스코트가 듣고, 생각하고, 에이전트 음성에 맞춰 입을 움직입니다. 위젯은 shadow root 안에서 실행되므로 사이트 CSS와 위젯 CSS가 서로 영향을 주지 않습니다.

  4. 04위치를 직접 정하고, 에이전트가 페이지에서 동작하게 하기

    구석이 아니라 원하는 요소 안에 표시하려면 태그에서 data-mascot을 빼고, 스크립트가 로드된 뒤 WixzelMascot.mount를 호출합니다.

    클라이언트 도구는 에이전트가 요청할 때 페이지에서 실행됩니다. 예를 들어 예약 페이지를 여는 식입니다. 콘솔이나 POST /v1/tools로 에이전트용 도구를 만든 뒤, 스크립트 로드 전이나 후에 동작을 등록합니다.

    index.html
    <div id="talk"></div>
    <script>
      window.WixzelMascot = Object.assign(window.WixzelMascot || {}, {
        tools: {
          open_page: ({ path }) => {
            location.href = path;
            return { opened: path };
          },
        },
      });
    </script>
    <script
      src="https://voice.wixzel.com/embed.js"
      async
      onload="WixzelMascot.mount(document.getElementById('talk'), { mascot: 'm_4fT9qLx2Bv8K' })"
    ></script>

    핸들러가 반환한 값은 에이전트에게 돌아가고, 에이전트가 발신자에게 알려 줍니다. 서버를 호출하는 웹훅 도구도 위젯에서 동작합니다.

  5. 05통화한 사람 확인하고 차단하기

    위젯 통화마다 발신자가 기록됩니다. 에이전트의 발신자 목록을 조회합니다.

    shell
    curl "https://api.voice.wixzel.com/v1/callers?agent_id=AGENT_ID&limit=20" \
      -H "Authorization: Bearer $WIXZEL_API_KEY"
    
    curl -X PATCH https://api.voice.wixzel.com/v1/callers/CALLER_ID \
      -H "Authorization: Bearer $WIXZEL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{ "blocked": true }'

    각 발신자에는 대략적인 location(IP 주소로 추정한 도시, 지역, 국가. IP 주소는 해시로만 보관), platform(브라우저, 운영체제, 기기), 통화한 페이지의 page_url, 방문자가 제공한 정보, call_count가 있습니다. 브라우저가 보관하는 임의의 ID로 한 사람의 통화를 묶으며, 핑거프린팅은 하지 않고, 위젯은 어떤 정보가 공유되는지 발신자에게 알립니다.

    차단된 발신자는 위젯, 공유 링크, 앱, 전화 어디에서도 그 에이전트에 다시 통화할 수 없습니다. 각 통화는 대화 기록, 비용과 함께 GET /v1/calls에도 있으며 caller_id로 필터링할 수 있습니다.

Wixzel Voice에서 이 빌드의 비용은 얼마인가요?

gemini-live 엔진에서 연결된 1분당 $0.0491로 3분 세션을 진행할 때의 엔진 사용 시간 비용: 세션당 약 $0.15. 전화 회선이 없으므로 전화 통신 비용이 없습니다.

이 가이드 빌드의 월 엔진 비용
월 세션 수연결된 시간(분)월 엔진 비용
300900$44.19
1,5004,500$221
6,00018,000$884

웹사이트로 에이전트와 마스코트를 만드는 것은 무료이며, 위젯도 무료입니다. 통화는 에이전트 엔진의 통화 요금만큼 선불 잔액에서 초 단위로 청구되며, 전화 회선 요금은 없습니다. 하루 공개 통화 60분이라는 기본 한도에서는 Gemini Live 기준으로 위젯이 하루에 최대 약 $2.95를 사용할 수 있습니다.

선불이며 구독과 무료 등급이 없습니다. $5부터 크레딧을 충전하면 사용량만큼 차감됩니다. 내 사용량으로 추정해 보기.

이 빌드에는 Wixzel Voice의 어떤 한도가 적용되나요?

  • 오디오는 전화 수준인 양방향 8 kHz G.711 µ-law입니다.
  • 위젯은 embed_origins에 있는 오리진(최대 20개)에서만 통화를 시작합니다.
  • 공개 통화는 에이전트에 설정한 한도 안에서만 이루어집니다. daily_minutes를 넘으면 UTC 자정까지 통화가 거부됩니다.
  • 위젯 통화는 전화 통화, 앱 세션과 함께 계정의 동시 통화 한도(기본 5건)에 포함됩니다. max_concurrent_calls로 붐비는 페이지 하나가 한도를 모두 차지하지 않게 합니다.
  • 위젯 통화는 실제 크레딧을 사용합니다. 무료 테스트 시간은 콘솔에서 자신의 에이전트와 대화할 때 쓰는 것입니다.
  • 웹 통화에서는 상담원 연결이 되지 않습니다. 연결에는 전화 회선이 필요합니다.

자주 묻는 질문

웹사이트에 말하는 AI 마스코트를 넣으려면 어떻게 해야 하나요?

POST /v1/agents/generate(또는 Wixzel Voice 콘솔의 새 에이전트 > 웹사이트로 만들기)로 에이전트를 만들고, PATCH /v1/agents/{id}/mascot으로 embed_origins에 사이트를 넣어 위젯을 켠 뒤, 페이지에 <script src="https://voice.wixzel.com/embed.js" data-mascot="m_…" async></script>를 추가합니다. 방문자는 Call 버튼을 누르고 브라우저에서 대화합니다.

웹사이트 위젯은 어떤 웹사이트 빌더에서도 동작하나요?

네. 페이지에 script 태그를 추가할 수 있다면 어디든 됩니다. 일반 HTML, WordPress, Webflow, Shopify 테마, Next.js 등입니다. 브라우저가 마이크를 허용하려면 페이지가 HTTPS로 제공되어야 하고, 오리진이 embed_origins에 있어야 합니다.

다른 사이트가 임베드 코드를 복사해 내 크레딧을 쓸 수 있나요?

아니요. 위젯은 등록한 오리진에서만 통화를 시작하고, 세션은 그 페이지에 묶입니다. 그래도 ID가 유출되면 POST /v1/agents/{id}/mascot/rotate-public-id로 마스코트에 새 ID를 부여할 수 있으며, 기존 임베드 코드와 링크는 즉시 작동을 멈춥니다.

마스코트가 힌디어나 말라얄람어를 할 수 있나요?

네. 다른 에이전트처럼 에이전트의 언어와 엔진을 설정합니다. Gemini Live는 많은 언어를 지원하고, sarvam 엔진은 힌디어, 타밀어, 텔루구어, 칸나다어, 말라얄람어 등 인도 언어용으로 만들어졌습니다. 마스코트의 입은 에이전트가 보내는 오디오에 맞춰 움직입니다.

마스코트 모습을 바꿀 수 있나요?

네. PATCH /v1/agents/{id}/mascot으로 새 spec을 보냅니다. 모양(circle, drop, triangle, cloud, pill, flower, squircle, blob, heart), 색상, 눈 스타일을 지정합니다. 또는 웹사이트나 설명을 넣어 POST /v1/agents/{id}/mascot/generate를 호출하면 새 모습을 만듭니다. 모습이 바뀌어도 에이전트의 프롬프트는 바뀌지 않습니다.

더 읽을거리

  • 마스코트문서

    모습, 공유 링크, 위젯, 통화할 수 있는 사람, 한도.

  • 발신자문서

    발신자 기록, 통화별 발신자, 차단.

  • 도구문서

    웹사이트에서 쓰는 것을 포함한 웹훅 도구와 클라이언트 도구.

  • 지식 베이스문서

    웹사이트로 만든 에이전트가 아는 내용과 문서 추가.

에이전트형 전화 통신을 위한 API

Wixzel Voice 소개

Wixzel Voice는 자체 SIP 트렁크로 실제 전화를 걸고 받거나 웹·모바일 앱에서 사람들과 대화하는 AI 에이전트를 만들기 위한 음성 AI API입니다. API 키 하나와 선불 잔액 하나로 모든 음성 엔진을 사용하며, 실제 사용량에 따라 초 단위로 과금됩니다.

Wixzel Voice MCP 서버로 Claude에게 실제 전화 회선 연결하기

Claude Code나 claude.ai의 Claude가 SIP 트렁크로 실제 전화를 걸고 대화 기록을 읽어 주는 상태. 전화를 걸기 전에는 항상 확인을 거칩니다.

Wixzel Voice로 Node.js에서 Twilio AI 접수원 만들기

Node.js로 만든 AI 접수원이 기존 Twilio 번호로 오는 전화를 받고 API에 예약을 잡는 상태.

Wixzel Voice sarvam 엔진으로 만드는 힌디어·말라얄람어 전화 에이전트

Sarvam의 인도 언어 모델로 동작하며 SIP 트렁크로 전화를 받거나 거는 전화 에이전트 두 개(힌디어 하나, 말라얄람어 하나).

Wixzel Voice로 WebSocket 기반 Flutter 음성 에이전트 추가하기

API 키는 서버에 두고, 전화번호 없이 사용자가 WebSocket으로 음성 에이전트와 대화하는 Flutter 앱.

Wixzel Voice API로 실제 전화 통화에 Gemini Live 연결하기

cURL 요청 네 번으로 SIP 트렁크를 통해 실제 전화를 거는 Gemini Live 에이전트, 그리고 대화 기록과 비용이 담긴 통화 기록.

Wixzel Voice로 AI 리드 선별 캠페인 실행하기

에이전트가 SIP 트렁크로 리드 목록에 동시 통화 한도에 맞춘 배치 단위로 전화를 걸고, 모든 통화의 상태와 대화 기록을 읽어 오는 상태.

Wixzel Voice로 Flutter 앱에 에이전트 마스코트 표시하기

실시간 통화 중 에이전트 음성에 맞춰 입을 움직이는 에이전트 마스코트가 있는 Flutter 화면. API 키는 서버에 둡니다.

첫 음성 에이전트를 만드세요