Ir al contenido
Guía

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 · Publicado el · Actualizado el

Duración
Unos 15 minutos
Tiempo de motor
$0.0491 por minuto conectado
El sitio web de una clínica dental con el widget de la mascota abierto abajo a la derecha: un globo de diálogo que saluda, una mascota verde y un botón Call

¿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:write y calls: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?

  1. 01Crea el agente a partir de tu sitio web

    Dale tu sitio y un rol. role es receptionist, support, sales, guide o tus propias palabras:

    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);

    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. Consulta GET /v1/agents/{id} hasta que mascot.status sea ready, normalmente en menos de un minuto; en el SDK, waitForAgent hace 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á.

  2. 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:

    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 es lo que un visitante te da antes de una llamada: none (el valor predeterminado) no pide nada, contact pide un nombre y un teléfono o un correo electrónico, y google pide 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 en embed_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": true para tener también una página para compartir en voice.wixzel.com/m?id=….

    La respuesta incluye mascot.public_id, como m_4fT9qLx2Bv8K. Es el id que va en la etiqueta script.

  3. 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.

  4. 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-mascot de la etiqueta y llama a WixzelMascot.mount cuando 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/tools y 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.

  5. 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:

    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 }'

    Cada persona que llama tiene una location aproximada (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), la page_url desde la que llamó, lo que te dio y call_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/calls con su transcripción y su costo, y se puede filtrar por caller_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.

Costo mensual de motor de lo que construye esta guía
Sesiones al mesMinutos conectadosCosto de motor al mes
300900$44.19
15004500$221
600018.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_calls evita 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?

Crea un agente con 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?

Sí, en cualquier sitio donde puedas añadir una etiqueta script a la página: HTML simple, WordPress, Webflow, temas de Shopify, Next.js, etc. La página tiene que servirse por HTTPS para que el navegador permita el micrófono, y su origen tiene que estar en embed_origins.

¿Puede otro sitio copiar mi código de inserción y usar mi crédito?

No. El widget solo inicia llamadas desde los orígenes que indicaste, y la sesión queda ligada a esa página. Si aun así se filtra un id, 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?

Sí. Configura el idioma y el motor del agente como en cualquier agente: Gemini Live cubre muchos idiomas, y el motor sarvam está hecho para idiomas de la India, entre ellos hindi, tamil, telugu, canarés y malayalam. La boca de la mascota sigue el audio que envíe el agente.

¿Puedo cambiar el aspecto de la mascota?

Sí. Envía un nuevo 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.

API para telefonía con agentes

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.

Dale a Claude una línea telefónica con el MCP de Wixzel Voice

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.

Recepcionista con IA para Twilio en Node.js con Wixzel Voice

Tu número actual de Twilio atendido por un recepcionista de IA que agenda citas en la API, hecho en Node.js.

Agente telefónico en hindi y malayalam con sarvam en Wixzel Voice

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.

Añade un agente de voz a Flutter por WebSocket con Wixzel Voice

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.

Gemini Live en una llamada real con la API de Wixzel Voice

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.

Haz una campaña de calificación de leads con IA con Wixzel Voice

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.

Muestra la mascota de tu agente en Flutter con Wixzel Voice

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.