Añade una mascota de IA que habla a tu web con Wixzel Voice
Al final de esta guía, tu sitio web tiene una mascota que habla en la esquina. Los visitantes tocan el botón Call y hablan con un agente que conoce tu negocio, en el navegador, sin línea telefónica ni app. Lleva unos 15 minutos: una petición crea el agente y su mascota a partir de tu sitio, otra activa el widget y una etiqueta script lo pone en la página. Crear el agente no tiene costo. Las llamadas se facturan por segundo como una llamada con el mismo motor: $0.0491 por minuto conectado con Gemini Live, unos $0.15 por una conversación de tres minutos, desde un saldo prepago.
Por Aqeel Shamsudheen · Publicado el · Actualizado el
- Duración
- Unos 15 minutos
- Motor
- gemini-live
- Tiempo de motor
- $0.0491 por minuto conectado

¿Qué necesitas antes de empezar?
- Una cuenta de Wixzel Voice con crédito. Las llamadas desde el widget se pagan con crédito real, no con los minutos de prueba gratuitos; la recarga mínima es de $5.
- Una clave de API con los permisos
agents:writeycalls:write, guardada en tu servidor. Todo lo de abajo también se puede hacer en la consola, en la pestaña Mascota del agente. - Un sitio web servido por HTTPS en el que puedas añadir una etiqueta script. Los navegadores solo dan acceso al micrófono a una página servida por HTTPS.
¿Cómo construyes esto en Wixzel Voice, paso a paso?
01Crea el agente a partir de tu sitio web
Dale tu sitio y un rol.
roleesreceptionist,support,sales,guideo tus propias palabras: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);Responde al instante con un agente que ya puede hablar y
mascot.status: "building". En segundo plano lee tus páginas, escribe las instrucciones y la frase de apertura, crea una base de conocimiento con lo que leyó y dibuja una mascota con el color de tu marca. ConsultaGET /v1/agents/{id}hasta quemascot.statusseaready, normalmente en menos de un minuto; en el SDK,waitForAgenthace esas consultas. Si la creación falla, el agente sigue funcionando con el aspecto que tenía.El agente empieza con Gemini Live. Cambia su motor, su voz o sus instrucciones como en cualquier otro agente con
PATCH /v1/agents/{id}; su mascota se queda como está.02Activa el widget y elige quién puede llamar
La opción de compartir está desactivada hasta que la actives. Indica los orígenes desde los que se sirve tu sitio; el widget no iniciará una llamada en ningún otro:
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_infoes lo que un visitante te da antes de una llamada:none(el valor predeterminado) no pide nada,contactpide un nombre y un teléfono o un correo electrónico, ygooglepide iniciar sesión con Google. El inicio de sesión con Google te dice quién es y nunca le crea una cuenta de Wixzel; en tu sitio se abre en una ventana pequeña en voice.wixzel.com, que devuelve el resultado solo a un origen incluido enembed_origins.Los cuatro límites mantienen las llamadas públicas dentro de un presupuesto: la duración máxima de una llamada, los minutos públicos al día para todos en conjunto (hasta la medianoche UTC), las llamadas que un visitante puede hacer al día y las llamadas simultáneas. Los valores de arriba son los predeterminados. Añade
"link": truepara tener también una página para compartir envoice.wixzel.com/m?id=….La respuesta incluye
mascot.public_id, comom_4fT9qLx2Bv8K. Es el id que va en la etiqueta script.03Pega una etiqueta script
Añade esto a cada página que deba mostrar la mascota, antes de la etiqueta de cierre de body:
index.html<script src="https://voice.wixzel.com/embed.js" data-mascot="m_4fT9qLx2Bv8K" async></script>La mascota espera en la esquina inferior derecha con su mensaje de bienvenida. Un visitante toca Call, permite el micrófono y habla; la mascota escucha, piensa y mueve la boca con la voz del agente. El widget funciona dentro de un shadow root, así que tu CSS y el suyo nunca se mezclan.
04Colócala donde quieras y deja que el agente actúe en tu página
Para mostrarla dentro de tu propio elemento en lugar de en la esquina, quita
data-mascotde la etiqueta y llama aWixzelMascot.mountcuando el script se haya cargado.Una herramienta de cliente se ejecuta en tu página cuando el agente la pide, por ejemplo para abrir la página de reservas. Crea la herramienta para el agente en la consola o con
POST /v1/toolsy luego registra lo que hace, antes o después de que cargue el script: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>Lo que devuelva un handler vuelve al agente, que se lo dice a quien llama. Las herramientas webhook, que llaman a tu servidor, también funcionan en el widget.
05Mira quién llamó y bloquea a alguien
Cada llamada desde el widget registra a quien llama. Lista las personas que han llamado a un agente:
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 }'Cada persona que llama tiene una
locationaproximada (ciudad, región y país, calculados a partir de la dirección IP, que solo se guarda como hash),platform(navegador, sistema operativo y dispositivo), lapage_urldesde la que llamó, lo que te dio ycall_count. Un id aleatorio que guarda su navegador agrupa las llamadas de una misma persona; no se usa huella digital del navegador (fingerprinting), y el widget le dice a quien llama qué se comparte contigo.Una persona bloqueada no puede volver a llamar a ese agente desde el widget, el enlace para compartir, la app ni por teléfono. Cada llamada también está en
GET /v1/callscon su transcripción y su costo, y se puede filtrar porcaller_id.
¿Cuánto cuesta esto en Wixzel Voice?
Tiempo de motor para sesiones de 3 minutos con el motor gemini-live a $0.0491 por minuto conectado: unos $0.15 por sesión. No hay costo de telefonía, porque no hay línea telefónica.
| Sesiones al mes | Minutos conectados | Costo de motor al mes |
|---|---|---|
| 300 | 900 | $44.19 |
| 1500 | 4500 | $221 |
| 6000 | 18.000 | $884 |
Crear el agente y su mascota a partir de tu sitio web no tiene costo, y el widget tampoco. Las llamadas cuestan lo que una llamada con el motor del agente, por segundo, desde tu saldo prepago, sin línea telefónica que pagar. Con el límite predeterminado de 60 minutos públicos al día, el widget puede gastar como máximo unos $2.95 al día con Gemini Live.
Prepago, sin suscripción y sin plan gratuito: agrega crédito desde $5 y el uso lo va consumiendo. Calcula tu propia combinación.
¿Qué límites de Wixzel Voice se aplican a esto?
- El audio es de calidad telefónica, G.711 µ-law a 8 kHz en ambas direcciones.
- El widget solo inicia llamadas desde los orígenes de
embed_origins, hasta 20. - Las llamadas públicas se mantienen dentro de los límites del agente. Pasado
daily_minutes, las llamadas se rechazan hasta la medianoche UTC. - Las llamadas del widget cuentan para el límite de llamadas simultáneas de la cuenta, cinco por defecto, junto con las llamadas telefónicas y las sesiones de apps.
max_concurrent_callsevita que una página con mucho tráfico las ocupe todas. - Las llamadas del widget usan crédito real. Los minutos de prueba gratuitos son para hablar con tus propios agentes desde la consola.
- Desde una llamada web no se puede transferir a una persona; las transferencias necesitan una línea telefónica.
Preguntas frecuentes
¿Cómo pongo una mascota de IA que habla en mi sitio web?
POST /v1/agents/generate (o Nuevo agente, Desde tu sitio web, en la consola de Wixzel Voice), activa su widget con PATCH /v1/agents/{id}/mascot y tu sitio en embed_origins, y añade <script src="https://voice.wixzel.com/embed.js" data-mascot="m_…" async></script> a tus páginas. Los visitantes tocan Call y hablan con ella en el navegador.¿El widget web funciona con cualquier creador de sitios web?
embed_origins.¿Puede otro sitio copiar mi código de inserción y usar mi crédito?
POST /v1/agents/{id}/mascot/rotate-public-id le da a la mascota uno nuevo, y el código de inserción y el enlace anteriores dejan de funcionar al instante.¿Puede la mascota hablar hindi o malayalam?
¿Puedo cambiar el aspecto de la mascota?
spec con PATCH /v1/agents/{id}/mascot: una forma (círculo, gota, triángulo, nube, píldora, flor, squircle, mancha o corazón), un color y un estilo de ojos. O llama a POST /v1/agents/{id}/mascot/generate con un sitio web o una descripción para obtener un aspecto nuevo. Las instrucciones del agente no cambian cuando cambia su aspecto.Dónde leer más
- Mascotasdocumentación
El aspecto, el enlace para compartir, el widget, quién puede llamar y los límites.
- Personas que llamandocumentación
Los registros de quienes llaman, quién hizo cada llamada y el bloqueo.
- Herramientasdocumentación
Herramientas webhook y herramientas de cliente, también en tu sitio web.
- Bases de conocimientodocumentación
Qué sabe un agente creado a partir de un sitio web, y cómo añadir documentos.
El caso de uso y el precio de un mes de llamadas desde el widget.
Tu propia interfaz sobre la API realtime, con el mismo agente.
El motor con el que empieza un agente creado a partir de un sitio web, y su precio.
Acerca de Wixzel Voice
Wixzel Voice es una API de IA de voz para crear agentes de IA que hacen y contestan llamadas telefónicas reales a través de tu propia troncal SIP, o que hablan con personas en tus apps web y móviles. Una clave de API y un saldo prepagado cubren todos los motores de voz, con cobro por segundo de uso real.
Más guías
Claude, en Claude Code o claude.ai, haciendo una llamada real por tu troncal SIP y leyéndote la transcripción, con una confirmación antes de marcar.
Tu número actual de Twilio atendido por un recepcionista de IA que agenda citas en la API, hecho en Node.js.
Dos agentes telefónicos, uno en hindi y otro en malayalam, con los modelos de Sarvam para idiomas de la India, que atienden o hacen llamadas por tu troncal SIP.
Una app Flutter en la que los usuarios hablan con tu agente de voz por WebSocket, con la clave de API guardada en tu servidor y sin ningún número de teléfono.
Un agente Gemini Live llamando a un teléfono real por tu troncal SIP a partir de cuatro peticiones cURL, y el registro de la llamada con su transcripción y su costo.
Una lista de leads llamados por tu agente a través de tu troncal SIP, en lotes ajustados a tu límite de llamadas simultáneas, con el estado y la transcripción de cada llamada.
Una pantalla de Flutter con la mascota de tu agente, que mueve la boca con la voz del agente durante una llamada en tiempo real, con tu clave de API guardada en tu servidor.
Crea tu primer agente de voz

