本文へスキップ
ガイド

Wixzel VoiceでWebサイトに話すAIマスコットを追加する

このガイドを終えると、Webサイトの隅に話すマスコットが表示されます。訪問者が「Call」をタップすると、電話回線もアプリも使わずに、ブラウザ上であなたのビジネスを知っているエージェントと話せます。所要時間は約15分です。1つのリクエストでサイトからエージェントとマスコットを作り、1つのリクエストでウィジェットを有効にし、scriptタグを1つ貼ればページに表示されます。エージェントの作成は無料です。通話は同じエンジンでの通話と同じく秒単位で課金されます。Gemini Liveでは接続1分あたり$0.0491、3分の会話で約$0.15で、前払い残高から差し引かれます。

執筆 · 公開日 · 更新日

所要時間
約15分
エンジン
gemini-live
エンジン利用時間
接続1分あたり$0.0491
右下にマスコットのウィジェットが開いている歯科医院のWebサイト。あいさつの吹き出し、緑色のマスコット、「Call」ボタンが表示されている

始める前に何が必要ですか?

  • クレジットのあるWixzel Voiceのアカウント。ウィジェット経由の通話は無料のテスト時間ではなく、実際のクレジットから支払われます。最低チャージ額は$5です。
  • agents:writeとcalls:writeのスコープを持つAPIキー。サーバーに保管します。以下の操作はすべて、コンソールのエージェントの「マスコット」タブでも行えます。
  • scriptタグを追加できる、HTTPSで配信されているWebサイト。ブラウザはHTTPSのページにしかマイクの使用を許可しません。

Wixzel Voiceでこれを構築する手順は?

  1. 01Webサイトからエージェントを作る

    サイトと役割を指定します。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に含まれるオリジンにだけ返されます。

    4つの上限で、公開通話を予算内に収めます。1回の通話の最長時間、全員合計の1日あたりの公開通話時間(UTCの午前0時まで)、1人の訪問者が1日にかけられる通話数、同時通話数です。上の値はデフォルトです。"link": trueを追加すると、voice.wixzel.com/m?id=…の共有ページも作られます。

    レスポンスにはm_4fT9qLx2Bv8Kのようなmascot.public_idが含まれます。これがscriptタグに入れるIDです。

  3. 03scriptタグを1つ貼り付ける

    マスコットを表示するすべてのページで、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>

    ハンドラーが返した値はエージェントに渡され、エージェントが発信者に伝えます。サーバーを呼び出すWebhookツールも、ウィジェットで動作します。

  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(ブラウザ、OS、デバイス)、発信元のpage_url、相手が提供した情報、call_countが記録されます。1人の通話は、ブラウザが保持するランダムなIDでまとめられます。フィンガープリンティングは行わず、ウィジェットは発信者に、何があなたに共有されるかを伝えます。

    ブロックした発信者は、ウィジェット、共有リンク、アプリ、電話のいずれからも、そのエージェントに再び通話できません。各通話は文字起こしと料金とともにGET /v1/callsにも記録され、caller_idで絞り込めます。

Wixzel Voiceでこの構築にかかる費用は?

gemini-liveエンジンで3分のセッションを行った場合のエンジン利用料で、接続1分あたり$0.0491、1セッションあたり約$0.15です。 電話回線を使わないため、電話回線の費用はかかりません。

このガイドの構築にかかる月額のエンジン費用
月間のセッション数接続時間(分)月額のエンジン費用
300900$44.19
1,5004,500$221
6,00018,000$884

Webサイトからのエージェントとマスコットの作成は無料で、ウィジェットも無料です。通話の料金はエージェントのエンジンでの通話と同じで、前払い残高から秒単位で課金され、電話回線の費用はかかりません。デフォルトの上限である1日60分の公開通話時間なら、Gemini Liveでウィジェットが1日に使う金額は最大でも約$2.95です。

前払い制で、サブスクリプションも無料プランもありません。$5からクレジットを追加すると、使用量に応じて消費されます。自分の使い方で見積もる。

この構築に関係するWixzel Voiceの制限は?

  • 音声は電話並みの音質で、双方向ともG.711 µ-law、8 kHzです。
  • ウィジェットが通話を開始するのは、embed_originsに含まれるオリジン(最大20個)からだけです。
  • 公開通話は、エージェントに設定した上限の範囲内に収まります。daily_minutesを超えると、UTCの午前0時まで通話は拒否されます。
  • ウィジェットからの通話は、電話やアプリのセッションと合わせて、アカウントの同時通話数の上限(デフォルトは5件)に数えられます。max_concurrent_callsを設定すると、混雑したページが上限をすべて使い切るのを防げます。
  • ウィジェットからの通話は実際のクレジットを使います。無料のテスト時間は、コンソールから自分のエージェントと話すためのものです。
  • Web通話から人間の担当者に転送することはできません。転送には電話回線が必要です。

よくある質問

Webサイトに話すAIマスコットを設置するにはどうすればよいですか?

POST /v1/agents/generateでエージェントを作り(またはWixzel Voiceのコンソールで「新規エージェント」から「Webサイトから」を選び)、PATCH /v1/agents/{id}/mascotでembed_originsにサイトを指定してウィジェットを有効にし、ページに<script src="https://voice.wixzel.com/embed.js" data-mascot="m_…" async></script>を追加します。訪問者は「Call」をタップして、ブラウザ上で話せます。

Webサイトウィジェットはどのサイト作成ツールでも使えますか?

はい。ページに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にWebサイトか説明文を渡すと、新しい見た目が作られます。見た目を変えても、エージェントのプロンプトは変わりません。

さらに詳しく

  • マスコットドキュメント

    見た目、共有リンク、ウィジェット、通話できる相手、上限。

  • 発信者ドキュメント

    発信者の記録、各通話の発信者、ブロック。

  • ツールドキュメント

    Webhookツールとクライアントツール(Webサイト上のものを含む)。

  • ナレッジベースドキュメント

    Webサイトから作ったエージェントが知っている内容と、ドキュメントの追加。

エージェント型電話のためのAPI

Wixzel Voiceについて

Wixzel Voiceは、自社のSIPトランク経由で実際の電話を発信・着信するAIエージェントや、Webアプリやモバイルアプリの中で人と話すAIエージェントを構築するための音声AI APIです。1つのAPIキーと1つの前払い残高ですべての音声エンジンを利用でき、実際の使用量に応じて秒単位で課金されます。

Wixzel VoiceのMCPサーバーでClaudeに実際の電話回線を持たせる

Claude Codeまたはclaude.aiのClaudeが、ご自身のSIPトランク経由で実際に電話をかけ、文字起こしを読み上げます。発信の前には必ず確認が入ります。

Wixzel VoiceとNode.jsでTwilioのAI受付を作る

Node.jsで作った、既存のTwilio番号に応答してAPIに予約を登録するAI受付。

Wixzel Voiceのsarvamエンジンで作るヒンディー語とマラヤーラム語の電話エージェント

Sarvamのインドの言語向けモデルで動く、ヒンディー語とマラヤーラム語の2つの電話エージェント。ご自身のSIPトランク経由で着信に応答したり発信したりします。

Wixzel VoiceでWebSocket経由のFlutter音声エージェントを追加する

ユーザーがWebSocket経由で音声エージェントと話せるFlutterアプリ。APIキーはサーバーに置いたままで、電話番号は使いません。

Wixzel VoiceのAPIでGemini Liveを実際の電話につなぐ

4つのcURLリクエストで、ご自身のSIPトランク経由で実際の電話を鳴らすGemini Liveのエージェントと、文字起こしと料金を含むその通話記録。

Wixzel VoiceでAIによるリード選別キャンペーンを実行する

ご自身のSIPトランク経由で、同時通話数の上限に合わせたバッチでエージェントが発信したリードの一覧と、各通話のステータスと文字起こし。

Wixzel VoiceのエージェントのマスコットをFlutterアプリに表示する

リアルタイム通話中にエージェントの声に合わせて口を動かすマスコットを表示するFlutterの画面。APIキーはサーバーに置いたままです。

最初の音声エージェントを構築