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

始める前に何が必要ですか?
- クレジットのあるWixzel Voiceのアカウント。ウィジェット経由の通話は無料のテスト時間ではなく、実際のクレジットから支払われます。最低チャージ額は$5です。
agents:writeとcalls:writeのスコープを持つAPIキー。サーバーに保管します。以下の操作はすべて、コンソールのエージェントの「マスコット」タブでも行えます。- scriptタグを追加できる、HTTPSで配信されているWebサイト。ブラウザはHTTPSのページにしかマイクの使用を許可しません。
Wixzel Voiceでこれを構築する手順は?
01Webサイトからエージェントを作る
サイトと役割を指定します。
roleにはreceptionist、support、sales、guide、または自由な言葉を指定できます。shellcurl 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}で変更できます。マスコットはそのまま変わりません。02ウィジェットを有効にし、通話できる相手を選ぶ
共有は有効にするまでオフです。サイトを配信しているオリジンを列挙してください。ウィジェットはそれ以外の場所では通話を開始しません。
shellcurl -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です。03scriptタグを1つ貼り付ける
マスコットを表示するすべてのページで、bodyの閉じタグの前にこれを追加します。
index.html<script src="https://voice.wixzel.com/embed.js" data-mascot="m_4fT9qLx2Bv8K" async></script>マスコットはウェルカムメッセージとともに右下の隅で待機します。訪問者が「Call」をタップし、マイクを許可して話すと、マスコットは聞き、考え、エージェントの声に合わせて口を動かします。ウィジェットはShadow Rootの中で動くため、サイトのCSSとウィジェットのCSSが干渉することはありません。
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ツールも、ウィジェットで動作します。
05発信者を確認し、ブロックする
ウィジェットからの通話はすべて発信者を記録します。エージェントの発信者を一覧します。
shellcurl "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です。 電話回線を使わないため、電話回線の費用はかかりません。
| 月間のセッション数 | 接続時間(分) | 月額のエンジン費用 |
|---|---|---|
| 300 | 900 | $44.19 |
| 1,500 | 4,500 | $221 |
| 6,000 | 18,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サイトウィジェットはどのサイト作成ツールでも使えますか?
embed_originsに含まれている必要があります。他のサイトが埋め込みコードをコピーして、自分のクレジットを使うことはできますか?
POST /v1/agents/{id}/mascot/rotate-public-idでマスコットに新しいIDを割り当てると、古い埋め込みコードとリンクはすぐに使えなくなります。マスコットはヒンディー語やマラヤーラム語を話せますか?
マスコットの見た目は変えられますか?
PATCH /v1/agents/{id}/mascotで新しいspecを送ります。形(circle、drop、triangle、cloud、pill、flower、squircle、blob、heart)、色、目のスタイルを指定できます。または、POST /v1/agents/{id}/mascot/generateにWebサイトか説明文を渡すと、新しい見た目が作られます。見た目を変えても、エージェントのプロンプトは変わりません。さらに詳しく
Wixzel Voiceについて
Wixzel Voiceは、自社のSIPトランク経由で実際の電話を発信・着信するAIエージェントや、Webアプリやモバイルアプリの中で人と話すAIエージェントを構築するための音声AI APIです。1つのAPIキーと1つの前払い残高ですべての音声エンジンを利用でき、実際の使用量に応じて秒単位で課金されます。
その他のガイド
Claude Codeまたはclaude.aiのClaudeが、ご自身のSIPトランク経由で実際に電話をかけ、文字起こしを読み上げます。発信の前には必ず確認が入ります。
Node.jsで作った、既存のTwilio番号に応答してAPIに予約を登録するAI受付。
Sarvamのインドの言語向けモデルで動く、ヒンディー語とマラヤーラム語の2つの電話エージェント。ご自身のSIPトランク経由で着信に応答したり発信したりします。
ユーザーがWebSocket経由で音声エージェントと話せるFlutterアプリ。APIキーはサーバーに置いたままで、電話番号は使いません。
4つのcURLリクエストで、ご自身のSIPトランク経由で実際の電話を鳴らすGemini Liveのエージェントと、文字起こしと料金を含むその通話記録。
ご自身のSIPトランク経由で、同時通話数の上限に合わせたバッチでエージェントが発信したリードの一覧と、各通話のステータスと文字起こし。
リアルタイム通話中にエージェントの声に合わせて口を動かすマスコットを表示するFlutterの画面。APIキーはサーバーに置いたままです。
最初の音声エージェントを構築

